W tym artykule opiszę swoje pierwsze starcie z napisaniem prostego modułu w Prestashop 1.7.
Zadanie było następujące: na stronie produktu należy wyświetlić tekst pobrany z opisu kategorii, tak jak pokazano na obrazku poniżej.
Pierwszy krok, to znalezienie miejsca w szablonie, w którym umieścić tekst.
Plik to
szablon/classic/templates/catalog/product.tpl
w okolicach linii 230 dodałem kod:
{if isset($mirekgab1_tpl)} {include file="$mirekgab1_tpl"} {/if}
Powyższy kod sprawdza, czy została ustawiona zmienna $mirekgab1_tpl i jeżeli tak, to dołącza plik, którego nazwa jest zapisana w tej zmiennej.
Dołączany plik wygląda następująco:
<div class="tabs"> {block name='product_reference'} <div class="product-reference"> {$product_category_description nofilter} </div> {/block} </div>
W pliku tym zdefiniowałem blok, który ma być wstawiony. W bloku tym wyświetlana jest wartość zmiennej $product_category_description
.
Następny krok, to stworzenie modułu, który pobierze tekst z opisu kategorii i ustawi odpowiednie zmienne. Postanowiłem zrobić to w następujący sposób. Ustawiłem hook, który będzie się wykonywał po pobranie właściwości produktu i w funkcji przypisanej do tej akcji pobrać odpowiednie dane.
public function hookActionGetProductPropertiesAfter($params) { $id_category_default = $params['product']['id_category_default']; $context = $params['context']; $id_lang = $params['id_lang']; $product_category_description = Db::getInstance()->getValue('SELECT description FROM ' . _DB_PREFIX_ . 'category_lang WHERE id_shop = ' . (int) $context->shop->id . ' AND id_lang = ' . (int) $id_lang . ' AND id_category = ' . $id_category_default); $mymodule_tpl_file = _PS_MODULE_DIR_.$this->name.'/views/templates/front/product-contact.tpl'; $context->smarty->assign('mirekgab1_tpl',$mymodule_tpl_file); $context->smarty->assign('product_category_description', $product_category_description); }
Na podstawie parametrów id_category_default
, context
oraz id_lang
pobieram opis kategorii z tabeli category_lang
. Następnie pobrany opis przypisuję do zmiennej product_category_description
w odpowiednim pliku szablonu.
W ten oto sposób powstał mój pierwszy moduł do Prestashop.
Witam, można jakiś kontakt do Pana? Potrzebowałbym pomocy przy nowym module.
Pozdrawiam
Przepraszam, że tak późno odpisuję. Jeżeli dalej potrzebujesz pomocy pisz na poczta@mirekgab.pl.