我喜欢创建一个插件,只有在菜单上没有设置模板时才应该覆盖模板
现在我在插件和框架的生命周期阶段苦苦挣扎。
我需要在回调方法“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 );
}
}
任何想法?