Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates Joomla 3插件-如果未在菜单级别定义,如何覆盖模板_Templates_Plugins_Joomla3.5 - Fatal编程技术网

Templates Joomla 3插件-如果未在菜单级别定义,如何覆盖模板

Templates Joomla 3插件-如果未在菜单级别定义,如何覆盖模板,templates,plugins,joomla3.5,Templates,Plugins,Joomla3.5,我喜欢创建一个插件,只有在菜单上没有设置模板时才覆盖模板 现在,我正在努力解决插件和框架的生命周期阶段 我需要在回调方法“onAfterInitialise”中设置模板,但此时“活动菜单”不可用 在回调方法“onAfterRoute”期间,活动菜单变为可用,但get my“setTemplate”调用被忽略,因为模板似乎已由系统设置,因为菜单已设置模板 public function onAfterInitialise() { $menu = JFactory::getApplicati

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

现在,我正在努力解决插件和框架的生命周期阶段

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

在回调方法“onAfterRoute”期间,活动菜单变为可用,但get my“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 );
    }       
}
有什么想法吗