Press "Enter" to skip to content

[PrestaShop 1.4] wstawienie zawartości strony CMS w dowolnym miejscu w szablonie

Admin 0

Czasem zachodzi potrzeba wstawienia krótkiego tekstu gdzieś w obrębie szablonu. Np. chodzi o krótką informację dla klientów w nagłówku sklepu, lub o jakąś inną ważną informację gdzieś w obrębie layoutu.

Można oczywiście ratować się odpowiednimi modułami. Jednak bywa to kłopotliwe – a nam chodzi tylko o pojedynczą wstawkę tekstu. I najlepiej aby była możliwa do zapisania i przetłumaczenia na każdy język zainstalowany w sklepie. Po za tym używanie modułu w module nie jest możliwe i trzeba się nieźle gimnastykować aby to zadziałało.

Najłatwiejszym sposobem na zrobienie tego jest utworzenie strony we wbudowanym narzędziu CMS w PrestaShop. Przeważnie tak to wykonujemy w relizacjach SmartProjects.pl

W zależności od wersji silnika sklepu są pewne rozbieżności. Dziś omówimy jak to zrobić w wersji 1.4

Dodawanie strony CMS.

Narzędzia -> CMS -> Dodaj nową stronę

Wypełniamy wszystkie pola oznaczone gwiazdką i podajemy (dowolny) tytuł CMS – nie będzie on wyświetlany – będziemy wyświetlać tylko treść.

Ważne abyśmy oznaczyli stronę jako wyświetlaną (domyślnie są nieopublikowane)

Notujemy ID dodanej strony – czyli jej unikalny numer widoczny w 1 kolumnie. Przyjmijmy że jest to numer ID=12.

Ustalenie lokalizacji miejsca gdzie chcemy osadzić tekst z CMS

Kolejnym krokiem jest ustalenie gdzie mamy wstawić tekst z tej strony CMS. Są 2 główne przypadki. Test może się znajdować w obrębie danego modułu lub w obrębie elementów sklepu:

Wstawienie zawartości wybranej strony CMS w obrębie wybranego modułu sklepu PrestaShop

Tutaj sprawa wygląda następująco. Musimy ustalić jak nazywa się dany moduł. Powiedzmy że jest to moduł „blockuserinfo” – jest to moduł z informacjami o użytkowniku. Powiedzmy że pod spodem informacji wyświetlanych w tym module chcemy dodać krótkie zdanie o zaletach z rejestracji na sklepie.

Jego domyślna lokalizacja w obrębie szablonu to:

PrestaShop Kraków

Odnajdujemy controller tego modułu (plik PHP który nazywa się jak ten moduł). Jego lokalizacja, to:

/modules/blockuserinfo/blockuserinfo.php

Znajdujemy następnie metodę (inaczej funkcja w PHP) która odpowiada za wyświetlanie tego modułu w tym miejscu. W naszym przypadku modeł znajduje się w Hook’u (pozycji w Prestashop) o nazwie „Top”, czyli metoda będzie miała nazwę:

public function hookTop($params) {}

W tej metodzie PRZED wywołaniem pliku tpl do którego odsyłane są zmienne, czyli przed linijką:

return $this->display(__FILE__, 'blockuserinfo.tpl');

„Dobieramy się” do naszego tekstu z CMS. W tym celu wpisujemy następujący kod (dla CMS o ID=12 – patrz wyżej):

$cms = new CMS(12, intval($cookie->id_lang));

Teraz musimy przekazać zawartość tej strony CMS do szablonu:

if (Validate::isLoadedObject($cms)) {
$smarty->assign('information', $cms->content);
}

Naszą zmienną jest „information”. Możemy tutaj podać jej dowolną nazwę pod warunkiem że nie występuje już w obrębie tej metody.

Ostatnim krokiem jest wprowadzenie wywołania tej zmiennej w pliku .tpl do którego odsyła metoda. W naszym przypadku jest to plik:

/modules/blockuserinfo/blockuserinfo.tpl

Tam w wybranym przez nas miejsu wpisujemy:

{$information}

Wstawienie zawartości wybranej strony CMS w obrębie elementów sklepu PrestaShop

Na początku musimy ustalić gdzie będzie to wstawiane. W pierwszym kroku znajdźmy plik .tpl gdzie chcemy umieścić nasz tekst.

Przykładowo,plik nagłówka to:

/themes/[nasza-skórka]/header.tpl

Plik stopki to:

/themes/[nasza-skórka]/footer.tpl

Plik formularza w wdziale kontakt to:

/themes/[nasza-skórka]/contact-form.tpl

itd.

Pliki .tpl (zawierające przeważnie HTML) są ściśle powiązane z ich controllerami – czyli plikami PHP – które przekazują do owych plików .tpl zmienne. Musimy znaleźć plik PHP w którym jest wywołanie naszego pliku .tpl.

Foldery, gdzie są składowane controllery to:

/controllers
/classes

Tam szukamy odpowiadających nam controllerów. Dla powyższych plików .tpl controllery to:

Plik nagłówka to:

/classes/FrontController.php

Plik stopki to:

/classes/FrontController.php

Plik formularza w wdziale kontakt to:

/controllers/ContactController.php

itd.

W każdym przypadku musimy znaleźć linijkę, która odpowiada za przekazanie zmiennych do szablonu (pliku .tpl).

Przykładowo dla nagłówka będzie to:

self::$smarty->display(_PS_THEME_DIR_.'header.tpl');

I zaraz przed tą linijką – tak jak w przypadku modułu – dobieramy się do zawartości strony CMS o ID = 12:

$cms = new CMS(12, intval($cookie->id_lang));

Teraz analogicznie musimy przekazać zawartość tej strony CMS do szablonu:

if (Validate::isLoadedObject($cms)) {
$smarty->assign('information', $cms->content);
}

i w nagłówku – pliku

/themes/[nasza-skórka]/header.tpl

w miejscu gdzie mamy wywołać tą zmienną, wpisujemy:

{$information}

 

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Zobacz także !
Jeśli chcemy możemy w łatwy sposób urozmaicić widok strony z…