Zawartość artykułu
Na czym polega ta modyfikacja?
Jeśli potrzebujesz dodać edytowalną informację na karcie produktu – stałą dla wszystkich produktów – ten artykuł jest dla Ciebie 🙂
Takim opisem może być np. wymiarówka, ceny dostawy (krótkie info) czy inne informacje. Jeśli zmienisz je w 1 miejscu – automatycznie powielą się one na wszystkich produktach na raz.
Jest to o tyle wygodne rozwiązanie, że kiedy dysponujemy wielotysięcznym asortymentem, taka zmiana we wszystkich produktach z osobna – była by wręcz niemożliwa do szybkiego wykonania.
Modyfikacja dotyczy wersji PrestaShop 1.7.8.2. W młodszych wersjach też powinna się sprawdzić. Zadziała z dowolnym szablonem.
Już wcześniej pokazywaliśmy jak wykonać to na PrestaShop, jednak w innej wersji i w innych miejscach na sklepie:
Dodawanie informacji teleadresowych w dziale kontakt z możliwością ich edycji
PrestaShop 1.7 – edytowalne dane teleadresowe w dziale kontakt
UWAGA! Akutalizacja skryptu (moduł: 1-Click-Upgrade) może cofnąć zmiany szczególnie w kontrolerach PHP. Należy wówczas wprowadzić te zmiany na zaktualizowanych plikach aby osiągnąć ten sam efekt.
Ale jak zrobić to dla produktów? Poniżej recepta! 🙂
Przygotowanie treści CMS.
Treścią, która pojawi się na karcie produktu będzie zawartość strony CMS. Wejdź w dział:
Ulepszenia -> Wygląd -> Strony
Następnie dodaj tam stronę CMS z pożądaną treścią. Zwróć uwagę aby nowo dodana strona była aktywna oraz spisz jej numer ID.
Modyfikacja pliku PHP i TPL
Otwórz plik:
controllers/front/ProductController.php
Następnie nad fragmentem kodu typu (okolica 353 linii):
$this->context->smarty->assign('noPackPrice', $this->product->getNoPackPrice()); $this->context->smarty->assign('displayPackPrice', ($pack_items && $productPrice < $this->product->getNoPackPrice()) ? true : false); $this->context->smarty->assign('priceDisplay', $priceDisplay); $this->context->smarty->assign('packs', Pack::getPacksTable($this->product->id, $this->context->language->id, true, 1));
Umieść ten kod:
$cmsInfo = new CMS(13, intval($this->context->cookie->id_lang)); $this->context->smarty->assign('cmsinfo', $cmsInfo->content);
Zauważ, że w kodzie jest podany numer 13. Jest to właśnie numer ID dodanej strony CMS.
Otwórz plik:
themes/{TWÓJ-SZABLON}/templates/catalog/product.tpl
W dowolnym miejscu, gdzie chcesz aby widniała ta informacja wklej kod:
{$cmsinfo nofilter}
Np. pod zamknięciem DIV:
<div class="product-actions"> ... ... ... </div> <div> {$cmsinfo nofilter} </div>
Wtedy informacja pojawi się pod przyciskiem dodania do koszyka. Oczywiście wszystko zależy od konstrukcji HTML Twojego szablonu.
Pozostaje tylko przebudowanie cache w dziale:
Zaawansowane -> Wydajność
aby zmiany wcielić w życie 🙂
grafika:pexels.com