Press "Enter" to skip to content

Dodatkowa edytowalna treść CMS na karcie produktu – dodatkowy opis wspólny dla wszystkich produktów

Admin 0

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

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 !
Posiadasz moduł jmsslider ? Pilnie sprawdź jego podatność na włamanie…