set_theme在模块pyroCMS 2.1中不起作用

时间:2012-05-21 06:18:09

标签: module pyrocms

我在addons / default / themes中创建一个名为“uni”的自定义主题。好的,因为我可以在CP中看到它。

接下来,我创建一个包含代码的自定义模块:

class Server extends Public_Controller
{
public function __construct()
{
parent::__construct();

}
public function index()
{
$this->template->title($this->module_details['name'])->set_theme('uni')->build('test');

}
}

但是当我浏览这个模块时,主题仍然是CP上的活动主题,因此模块控制器中的set_theme不起作用。

是否可以使用自定义主题制作模块,而不是更改CP中的活动主题?

2 个答案:

答案 0 :(得分:0)

我认为要更改前端的“主题”,您需要使用自定义页面布局,而不是set_theme

答案 1 :(得分:0)

如果我理解了您的问题,那么此问题与PyroCMS - custom module design, clear CSS formating from default design类似,您可以在那里找到解决方案。

<强>被修改 通过您的解释,我认为您想为同一模块使用两种不同的布局。我实际上不知道如何在控制器中做到这一点,但我可以硬编码。实际上,布局已加载到/system/appname/libraries/Template.php中,因此您可以通过此处的硬编码来解决它。这是我在pyroCMS 1.3.2中做出的解决方案,它可能与版本2.1类似,或者您可以获得解决问题的一些提示。

要更改/system/appname/libraries/Template.php的文件。找到构建功能并找到条件并替换它。

if ($this->_layout)
{
    // Added to $this->_data['template'] by refference
    $template['body'] = $this->_body;
            $CI = &get_instance();

            if($CI->uri->segment(2) == 'backend'){
                    $this->_body =  self::_load_view('layouts/backend.html', $this->_data, TRUE, self::_find_view_folder());
            }
            else{
                    $this->_body =  self::_load_view('layouts/frontend.html', $this->_data, TRUE, self::_find_view_folder());
            }
    }