1

我喜欢创建一个插件,只有在菜单上没有设置模板时才应该覆盖模板

现在我在插件和框架的生命周期阶段苦苦挣扎。

我需要在回调方法“onAfterInitialise”中设置模板,但此时“活动菜单”不可用。

活动菜单在回调方法“onAfterRoute”期间可用,但忽略了我的“setTemplate”调用,因为模板似乎已经由系统设置,因为菜单设置了模板。

public function onAfterInitialise() {
    $menu = JFactory::getApplication()->getMenu();
    // this is null
    $active =   $menu->getActive();
     var_dump($active);
    // otherwiese I could easily get the template style id 
    // and verify if it is the default one ....
}

public function onAfterRoute() {
    if ( JFactory::getApplication()->isClient( 'site' ) ) {
        // get ignored by the system
        $this->_setTemplateStyle(10); 
    }
}

// set template via id
protected function _setTemplateStyle( $style ) {
    $style  =   JCckDatabase::loadObject( 'SELECT id,template,params,home FROM #__template_styles WHERE id = '.(int)$style );
    // var_dump($style);

    if ( is_object( $style ) ) {
        JFactory::getApplication()->setTemplate( $style->template, $style->params );
    }       
}

任何想法?

4

0 回答 0