Prestashop - 如何将现有模块显示到新钩子?

时间:2012-07-11 10:47:57

标签: module prestashop

我创建了一个新的钩子,我想将一个现有模块(blocktopmenu)添加到该钩子。

钩子的名字是:topMenu

我已将此添加到blocktopmenu.php:

public function hookTopMenu($param)
  {
    global $smarty;
      $this->makeMenu();
      $smarty->assign('MENU_SEARCH', Configuration::get('MOD_BLOCKTOPMENU_SEARCH'));
      $smarty->assign('MENU', $this->_menu);
      $smarty->assign('this_path', $this->_path);
      return $this->display(__FILE__, 'blocktopmenu.tpl');
  }
  • 我已将模块添加到模块中的新挂钩 - >位置。

  • 然后我将其添加到override / classes / FrontController.php:

    function displayHeader(){             父:: displayHeader();

            self::$smarty->assign(array(
                'HOOK_HEADER' => Module::hookExec('header'),
                'HOOK_TOP' => Module::hookExec('top'),
                'HOOK_TOP_MENU' => Module::hookExec('topMenu'),
                'HOOK_LEFT_COLUMN' => Module::hookExec('leftColumn')
            ));
        }
    

最后在themes / mytheme / header.tpl中我有:

<div class="my_top_menu">{$HOOK_TOP_MENU}</div>

但没有任何反应......输出是:

<div class="my_top_menu"></div>

知道如何获得它吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您还需要更改模块中的安装功能以添加钩子:

public function install(){
    if (!parent::install() OR
        !$this->registerHook('header') OR
        !$this->registerHook('topMenu') )
        return false;
    return true;
}

当然,您需要在此之后卸载并重新安装模块。