JoomlaDev.eu - Vše o vývoji CMS Joomla
Redakční systém WordPress - Nejlepší redakční systém zdarma - WordPress
Šablony v Prestashopu (jejich popis a tvorba) |
|
|
|
| Neděle, 08 Březen 2009 13:55 |
|
Vítám Vás u seriálu článků věnující se tvorbě šablon pro Prestashop. V dnešním prvním dílu si ukážeme některé základní vlastnosti šablon, projdeme si všechny soubory, které se šablonou souvisí a ukážeme si jak zobrazovat moduly na jednotlivých pozicích. Pracovat budeme se základní šablonou Prestashop, tak aby si úpravy mohl každý vyzkoušet. Nejdříve si něco řekneme o základní struktuře šablon v Prestashopu. Základní styly stránky jsou uloženy ve složce themes. Po otevření se nám ukáží všechny šablony které máme nainstalované. V základním balíku je to pouze šablona Prestashop. V té se nachází několik souborů *.tpl, které udávají kde a jak se budou jednotlivé moduly stránky zobrazovat. Dále zde najdeme složku css, kde se upravují styly stránky, img s obrázky šablony, js neboli javascriptové soubory a lang, kde jsou jazykové mutace.
Každá šablona má několik pozic do každé pozice pak Prestashop ukládá moduly. Pozici modulů si můžeme libovolně měnit v administraci, musíme však mít na paměti, že tento modul musí námi zvolenou pozici podporovat, o tom ale později. Abychom ovšem nemluvili jen teoreticky ukažme si strukturu na příkladu. Vezmeme kupříkladu pozici header. Nejprve otevřeme soubor header.php v kořenovém adresáři webu. Najdeme v něm takovýto kód: <?php
Prvních 10 řádků kódu nás zatím nemusí zajímat. Co je pro nás důležité je inicializace pole $smarty, kde přiřazujeme šabloně tkz. HOOKy, to jsou vlastně pozice v pozici. Čili máme šablonu header, v které jsou tři pozice HEADER, LEFT_COLUMN a TOP. Tokeny se zatím nebudeme zabývat ty necháme tak jak jsou. Dále přiřazujeme proměné $smarty css a js soubory. Další podmínka zjišťuje zda- li není stránka mimo provoz, v tom případě zobrazí šablonu maintance.tpl, pokud jsou stránky v provozu zobrazíme soubor header.tpl.Tímto se přesuneme k souboru header.tpl ve složce themes/Prestashop/ jeho kód vypadá následovně, pro jednoduchost zobrazíme pouze strukturu od tagu body dolů: <body {if $page_name}id="{$page_name|escape:'htmlall':'UTF-8'}"{/if}> Vidíme, že šablona dost připomíná HTML kód s tím že do složených závorek vkládáme proměnné a podmínky. Hned za tagem body je podmínka, která zjišťuje, zda-li není nastaveno zobrazení pouze obsahu bez grafiky a formátování. Hned na začátku vkládáme do stránky logo. Odkaz je do kořenového adresáře ($base_dir), čili zobrazí index.php. Název odkazu je jméno obchodu ($shop_name) v kódování UTF-8. Nyní přichází na řadu samotný obrázek, proměná $img_ps_dir udává adresář obrázků ovšem ne v obrázcích šablony, ale přímo v adresáři img hned za kořenovým adresářem. Na pozici headerright vložíme náš druhý HOOK - TOP, ten první se vkládá do tagů head, a nedělá nic jiného než že vkládá odkazy na externí css a js soubory vložené v šabloně. Na místo HOOK - TOP tedy můžeme vkládat jednotlivé moduly, ale jak zjistíme opravdový název naší pozice, jejíž název se zobrazuje v administračním rozhranní? K tomu nám pomůže databáze. Otevřeme si databázi prestashopu a najdeme tabulku ps_hook, kde je seznam všech pozic které jsou doposud vytvořeny. Data ve sloupci name používáme při přiřazení hooku proměné $smarty. Sloupec Title se zobrazuje v administraci pod názvem pozice. Najedeme tedy do administrace, zvolíme v menu Modules a pod hlavním menu Position. Zde se nám zobrazí seznam všech pozic a seznam modulů, které mají přiřazeny. Naše pozice TOP se zobrazuje pod názvem "Top of pages". A vidíme v ní několik modulů (měny, jazyky, rychlé vyhledávání, atd.). Najedeme si tedy opět do průzkumníku souboru a otevřeme si složku modules/ a otevřeme si například modul s měnami (blockcurrencies/blockcurrencies.php) Funkce install nás nezajímají, nejdůležitější částí je ovšem tato funkce: function hookTop($params) Ta nám říká, že se modul bude zobrazovat v HOOKu TOP a přiřadí jí její šablonu. V tuto chvíli i kdyby jsme změnili v administračním rozhraní pozici tohoto modlu například na LEFT_COLUMN (Left column blocks) náš modul by se tam nezobrazil, protože nemá přiřazenou funkci pro zobrazení na této pozici. Pokud by jsme tedy chtěli zobrazitmodul v levém sloupci museli by jsme přidat další funkci takto: function hookLeftColumn($params) global $smarty; Nyní už by se nám modul vlevo zobrazil. Poslední otázkou jak pozici modulu změnit v administračním rozhraní. Pokud jsme v záložce Modules, zvolíme opět Positions a poté Transplant positions. Zvolíme jméno našeho modulu a jeho novou pozici. Mějme při tom na paměti, že modul se nyní zobrazí na dvou pozicích, na staré a nové, námi zvolené. To by bylo pro dnešek vše, příště si ukážeme jak vytvořit vlastní pozici v šabloně. |