Fruitcake_Gary Posted September 3, 2024 Share Posted September 3, 2024 Cześć Tak jak w tytule. Chciałbym dodać osobny szablon dla produktów do lewej kolumny, tej z filtrami, produkty na promocji. Edytowałem ps_specials.php dodając public function hookDisplayLeftColumn($params) { $this->_clearCache('*'); $this->templateFile = 'module:ps_specials/views/templates/hook/ps_specials_left.tpl'; } public function install() { $this->_clearCache('*'); Configuration::updateValue('BLOCKSPECIALS_SPECIALS_NBR', 8); return parent::install() && $this->registerHook('actionProductAdd') && $this->registerHook('actionProductUpdate') && $this->registerHook('actionProductDelete') && $this->registerHook('actionObjectSpecificPriceCoreDeleteAfter') && $this->registerHook('actionObjectSpecificPriceCoreAddAfter') && $this->registerHook('actionObjectSpecificPriceCoreUpdateAfter') && $this->registerHook('displayHome') && $this->registerHook('hookDisplayLeftColumn'); } Jednak to nic nie dało, Próbowałem też edytować w panelu admina zaczepy, ale nadal nic Link to comment Share on other sites More sharing options...
endriu107 Posted September 4, 2024 Share Posted September 4, 2024 Zamień to && $this->registerHook('hookDisplayLeftColumn'); na && $this->registerHook('displayLeftColumn'); i zresetuj moduł. Link to comment Share on other sites More sharing options...
Fruitcake_Gary Posted September 4, 2024 Author Share Posted September 4, 2024 @endriu107 Dzięki za zainteresowanie się tematem Wprowadziłem poprawki, zresetowałem moduł - odinstalowałem i zainstalowałem ponownie, jednak nadal się nie pojawia dodatkowo po lewej stronie na stronie z kategoriami Jednak nadal nie ma tych elementów po lewej stronie. Trzeba coś dodać to do któregoś z tych plików .tpl? Link to comment Share on other sites More sharing options...
endriu107 Posted September 4, 2024 Share Posted September 4, 2024 Tylko problem masz taki że nie przekazujesz nic do widoku w tym hooku, ładujesz samą pustą templatke której de facto nawet nie zwracasz w żaden sposób. Link to comment Share on other sites More sharing options...
Fruitcake_Gary Posted September 4, 2024 Author Share Posted September 4, 2024 Masz na myśli tę funkcję? public function hookDisplayLeftColumn($params) { $this->_clearCache('*'); // $this->templateFile = 'module:ps_specials/views/templates/hook/ps_specials_left.tpl'; } Nie korzysta ona z tego samego renderWidget co pozostałe szablony które są ustawione w class Ps_Specials extends Module implements WidgetInterface { private $templateFile; public function __construct() { $this->name = 'ps_specials'; $this->tab = 'front_office_features'; $this->author = 'PrestaShop'; $this->version = '1.0.2'; $this->need_instance = 0; $this->ps_versions_compliancy = [ 'min' => '1.7.0.0', 'max' => _PS_VERSION_, ]; $this->bootstrap = true; parent::__construct(); $this->displayName = $this->trans('Specials block', [], 'Modules.Specials.Admin'); $this->description = $this->trans('Provide information on your special offers in a specific block displayed on your homepage.', [], 'Modules.Specials.Admin'); $this->templateFile = 'module:ps_specials/views/templates/hook/ps_specials.tpl'; } ... Link to comment Share on other sites More sharing options...
endriu107 Posted September 4, 2024 Share Posted September 4, 2024 Tak mam na myśli tą funkcję, i jak wynika z jej zawartości nie korzysta ona z renderWidget. Link to comment Share on other sites More sharing options...
atomek Posted September 4, 2024 Share Posted September 4, 2024 Twoja funkcja hookDisplayLeftColumn praktycznie nic nie robi, jedynie czyści cache i przypisuje do zmiennej $this->templateFile ścieżkę do szablonu. To za mało, żeby wyświetlić produkty. Spróbuj funkcję hookDisplayLeftColumn zdefiniować w ten sposób: public function hookDisplayLeftColumn($params) { $templateFile = 'module:ps_specials/views/templates/hook/ps_specials_left.tpl'; // Twój szablon dla lewej kolumny if (!$this->isCached($templateFile, $this->getCacheId('ps_specials_left'))) { $variables = $this->getWidgetVariables(null, []); if (empty($variables)) { return false; } $this->smarty->assign($variables); } return $this->fetch($templateFile, $this->getCacheId('ps_specials_left')); } Nie testowałem, nie wiem czy poprawnie to zadziała, sprawdź. @endriu107 dobrze to opisał Link to comment Share on other sites More sharing options...
Fruitcake_Gary Posted September 6, 2024 Author Share Posted September 6, 2024 @atomek i @endriu107 Zadziałało. Dziękuję za pomoc i wytłumaczenie powodu dlaczego nic się nie wyświetlało P.S. Pracowaliście kiedyś z CRON jobami w prestashop w customowych modułach? Takich które wykonywałyby się samoczynnie po zainstalowaniu modułu do sklepu? Mam napisany jeden moduł, który potrzebuje takiego mechanizmu, w zamian mógłbym się nim podzielić Link to comment Share on other sites More sharing options...
endriu107 Posted September 7, 2024 Share Posted September 7, 2024 Crona ustawiasz na serwerze i on ma za zadanie uruchomić wskazany plik więc nie za bardzo rozumiem stwierdzenie "wykonywania samoczynnie po zainstalowaniu". Poza tym myślę że jest to temat na osobny wątek. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now