在用zdcms做网站时遇到这样的需求:在默认内容页show-1.html基础上,给它创建多个模板页面,例如show-1-showa.html,用于在一些特殊场景中多种内容不同样式展现时使用,应该如何实现呢?
其实很简单,我们只要把原版内容页的控制器复制一份,然后创建一个新建控制器来做另一个模板和url地址即可。具体代码如下:
1. 以news模块为例,复制原版控制器文件 dayrui/App/News/Controllers/Show.php
2. 改名为Showa.php,内容做一下变更:
<?php namespace Phpcmf\Controllers;
/**
* 二次开发时可以修改本文件,不影响升级覆盖
*/
// 这里改成和文件名一样的名字
class Showa extends \Phpcmf\Home\Module
{
public function index() {
$this->_module_init();
$data = $this->_Show(
(int)\Phpcmf\Service::L('Input')->get('id'),
[
'field' => dr_safe_replace(\Phpcmf\Service::L('Input')->get('field')),
'value' => dr_safe_replace(\Phpcmf\Service::L('Input')->get('value')),
],
max(1, (int)\Phpcmf\Service::L('Input')->get('page')),
1
);
// 这里指定新的模板
\Phpcmf\Service::V()->display("showa.html");
}
}3. 默认访问地址就是这样:
/index.php?s=news&c=showa&id=1
4. 设置【show-1-showa.html】格式的伪静态,打开config/rewrite.php追加:
"show\-([0-9]+)\-showa\.html(.*)" => 'index.php?s=news&c=showa&id=$2',