我在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中的活动主题?
答案 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());
}
}