1

我创建了一个新钩子,我想向该钩子添加一个现有模块(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:

    函数 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')
            ));
        }
    

最后在主题/mytheme/header.tpl 我有:

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

但是什么也没发生……输出是:

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

知道如何得到它吗?

谢谢!

4

1 回答 1

2

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

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

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

于 2012-07-12T10:14:09.960 回答