0

我在插件/默认/主题中创建了一个名为“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 中的活动主题来制作模块?

4

2 回答 2

0

如果我理解你的问题,那么这个问题类似于PyroCMS - 自定义模块设计,从默认设计中清除 CSS 格式,你可以在那里找到解决方案。

编辑 通过你的解释,我认为你想为同一个模块使用两种不同的布局。我实际上不知道如何在控制器中执行此操作,但我可以对其进行硬编码。实际上,布局已加载,/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());
            }
    }
于 2012-05-22T02:56:09.287 回答
0

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

于 2012-05-21T08:12:11.130 回答