Модуль Prestashop устанавливается, но не работает должным образом

У меня есть плагин prestashop, который добавляет дополнительную вкладку на страницу продукта:

<?php

// Disable direct addressing to the script:
if (!defined('_PS_VERSION_'))
    exit;

//Create module class:
class producttab extends Module {

//Class constructor that contains its configuration:
public function __construct()
{
    $this->name = "producttab"; //Module name
    $this->tab = "front_office_features"; //Tab with the module in Prestashop back-office modules list
    $this->version = "1.0"; // Module version
    $this->author = "BelVG";  // Module author 
    parent::__construct();
    $this->displayName = $this->l("Product Tab"); // Module title
    $this->description = $this->l("Module creates a new tab on the frontend product page "); // Module description 
}

//Module installation-method:
public function install()
{
    return (parent::install()
            AND $this->registerHook('productTab') //Register productTab hook that will display the tab button
            AND $this->registerHook('productTabContent') //Register productTabContent hook that will display the tab content
            );
}

//Module deinstallation-method:
public function uninstall()
{
    return (parent::uninstall()
            AND $this->unregisterHook('productTab')
            AND $this->unregisterHook('productTabContent')); // Delete all hooks, registered by the  module 
}

//Method will be called while performing the "ProductTab" hook (tab buttons generation):
public function hookProductTab($params)
{
    global $smarty;
    //Call the template containing the HTML-code ?? our button
    return $this->display(__FILE__ , 'tpl/productTab.tpl');
}

public function hookProductTabContent($params)
{
    global $smarty;
    //Transfer the new tab content into template via smatry
    //( it is optional as far as the content can be assigned directly in the template)
     $result = Db::getInstance()->executeS('SELECT * FROM ps_cms_lang WHERE id_cms =14');

$smarty->assign('content', $result);
    // Call the template containing the HTML-code of our new tab content:
    return $this->display(__FILE__ , 'tpl/productTabContent.tpl');
}

}
?>

Модуль работает как положено. Я пытаюсь адаптировать тот же код, чтобы добавить еще одну вкладку. По какой-то причине новый модуль устанавливается, но вкладка не появляется. Есть что-то, что мне не хватает?

<?php

// Disable direct addressing to the script:
if (!defined('_PS_VERSION_'))
exit;

//Create module class:
class jewellerytab extends Module {

//Class constructor that contains its configuration:
public function __construct()
{
    $this->name = "jewellerytab"; //Module name
    $this->tab = "front_office_features"; //Tab with the module in Prestashop back-office modules list
    $this->version = "1.0"; // Module version
    $this->author = "Mike Rifgin";  // Module author 
    parent::__construct();
    $this->displayName = $this->l("jewellery Tab"); // Module title
    $this->description = $this->l("Module creates a new tab on the frontend jewellery page "); // Module description 
}

//Module installation-method:
public function install()
{
    return (parent::install()
            AND $this->registerHook('jewelleryTab') //Register jewelleryTab hook that will display the tab button
            AND $this->registerHook('jewelleryTabContent') //Register jewelleryTabContent hook that will display the tab content
            );
}

//Module deinstallation-method:
public function uninstall()
{
    return (parent::uninstall()
            AND $this->unregisterHook('jewelleryTab')
            AND $this->unregisterHook('jewelleryTabContent')); // Delete all hooks, registered by the  module 
}

//Method will be called while performing the "jewelleryTab" hook (tab buttons generation):
public function hookjewelleryTab($params)
{
    global $smarty;
    //Call the template containing the HTML-code ?? our button
    return $this->display(__FILE__ , 'tpl/jewelleryTab.tpl');
}

public function hookjewelleryTabContent($params)
{
    global $smarty;
    //Transfer the new tab content into template via smatry
    //( it is optional as far as the content can be assigned directly in the template)
     $result = Db::getInstance()->executeS('SELECT * FROM ps_cms_lang WHERE id_cms =14');

$smarty->assign('content', $result);
    // Call the template containing the HTML-code of our new tab content:
    return $this->display(__FILE__ , 'tpl/jewelleryTabContent.tpl');
}

}
?>

person Mike Rifgin    schedule 17.11.2012    source источник


Ответы (3)


Нет таких хуков как jewelryTab и jewelryTabContent, вам нужно работать с productTab и productTabContent (который является частью ядра Prestashop) Здесь вы можете найти список хуков для prestahop 1.5 http://doc.prestashop.com/display/PS15/Hooks+in+PrestaShop+1.5 и некоторую основную информацию о том, что крючки в prestashop: http://doc.prestashop.com/display/PS14/Understanding+and+using+hooks

Вы также можете попытаться связаться с Денисом, автор этого расширения из БелВГ

А после этой статьи Денис разработал гибкое расширение для добавления дополнительных вкладок товаров.

person Sergei Guk    schedule 17.11.2012

jewelleryTab и jewelleryTabContent — это пользовательский хук.

Вам нужно добавить этот хук в файл шаблона .tpl:

{hook h='jewelleryTab'}
{hook h='jewelleryTabContent'}
person Prestatashop Team    schedule 02.06.2015

Мы можем использовать только предопределенные хуки.

Вы можете использовать те же хуки, что и вместо jewelryTab и jewelryTabContent.

Надеюсь, крючки можно будет использовать повторно.

public function install()
{
       return (parent::install()
        AND $this->registerHook('productTab') //Register productTab hook that will display the tab button
        AND $this->registerHook('productTabContent') //Register productTabContent hook that will display the tab content
        );
}
person Siva Kumar    schedule 10.12.2013