From 4d8fcc1a3176d5c28a47f995d1e4748c7c628c09 Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Wed, 25 Feb 2026 10:45:56 +0100 Subject: [PATCH] Add custom hook detection and update hook handling in carousel module --- modules/pp_carousel/pp_carousel.php | 21 +++++++++++++++------ themes/ayon/templates/index.tpl | 1 + 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/modules/pp_carousel/pp_carousel.php b/modules/pp_carousel/pp_carousel.php index 4ed4dbe..64e45b8 100644 --- a/modules/pp_carousel/pp_carousel.php +++ b/modules/pp_carousel/pp_carousel.php @@ -146,6 +146,11 @@ class Pp_Carousel extends Module $categories = $this->flattenCategories(Category::getCategories($defaultLang, true, false)); $hookOptions = $this->getAvailableHooks(); + $predefinedHookIds = array_column($hookOptions, 'id'); + + // Detect if saved hook_name is a custom hook + $savedHookName = isset($carousel['hook_name']) ? $carousel['hook_name'] : 'displayHome'; + $isCustomHook = !empty($savedHookName) && !in_array($savedHookName, $predefinedHookIds); $sourceOptions = [ ['id' => 'new', 'name' => $this->l('NowoĊ›ci')], @@ -275,8 +280,8 @@ class Pp_Carousel extends Module // Fill form values $helper->fields_value['id_carousel'] = $idCarousel; - $helper->fields_value['hook_name'] = isset($carousel['hook_name']) ? $carousel['hook_name'] : 'displayHome'; - $helper->fields_value['custom_hook'] = ''; + $helper->fields_value['hook_name'] = $isCustomHook ? 'displayHome' : $savedHookName; + $helper->fields_value['custom_hook'] = $isCustomHook ? $savedHookName : ''; $helper->fields_value['source_type'] = isset($carousel['source_type']) ? $carousel['source_type'] : 'new'; $helper->fields_value['id_category'] = isset($carousel['id_category']) ? (int) $carousel['id_category'] : 0; $helper->fields_value['product_ids'] = isset($carousel['product_ids']) ? $carousel['product_ids'] : ''; @@ -501,10 +506,9 @@ class Pp_Carousel extends Module private function ensureHookRegistered($hookName) { - $idHook = Hook::getIdByName($hookName); + $idHook = (int) Hook::getIdByName($hookName); if (!$idHook) { - $db = Db::getInstance(); - $db->insert('hook', [ + Db::getInstance()->insert('hook', [ 'name' => pSQL($hookName), 'title' => pSQL($hookName), ]); @@ -512,6 +516,11 @@ class Pp_Carousel extends Module if (!$this->isRegisteredInHook($hookName)) { $this->registerHook($hookName); } + + // Clear PrestaShop hook cache + if (Cache::isStored('hook_module_list')) { + Cache::clean('hook_module_list'); + } } public function isRegisteredInHook($hookName) @@ -588,7 +597,7 @@ class Pp_Carousel extends Module */ public function __call($method, $args) { - if (strpos($method, 'hookDisplay') === 0) { + if (strpos($method, 'hook') === 0) { $hookName = lcfirst(substr($method, 4)); return $this->renderCarouselsForHook($hookName); } diff --git a/themes/ayon/templates/index.tpl b/themes/ayon/templates/index.tpl index f647262..1efb94c 100644 --- a/themes/ayon/templates/index.tpl +++ b/themes/ayon/templates/index.tpl @@ -30,6 +30,7 @@ {block name='page_content'} {block name='hook_home'} + {hook h='displayHomeCarousel' mod='pp_carousel'} {$HOOK_HOME nofilter} {/block} {/block}