Add custom hook detection and update hook handling in carousel module
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user