在用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',