1. 确保不修改discuz代码;
2. 继承discuz template类,重载parse_template 方法;由于discuz在模版引擎这一块没有考虑扩展性,对标签的解析全部写在一个方法中,因此只能重复大量代码进行重载;其中调用到的createurl方法放在idx.php 入口文件中,其实这里也可以直接调用原始的静态方法 - Mvc_Router::creatUrl();
https://gitcafe.com/web3d/uxf/blob/master/upload/source/class/mvc/mvc_template.php
<p>msg:{$msg}</p> <p>Welcome,Phper.</p> <a href="{url:'/senery-ticket/list'}">门票</a> <a href="{url:'/senery-ticket/order/id/' . $ticket_id}">订购门票</a>
3. 不覆盖discuz的结果,就是这些扩展的东西只能在uxf体系里使用
统一路由构造与解析 说明
比如模版中统一的url写法
{url:'/api-main/list/type/linux/order/1/name/'.$val.name}
参数说明:
- api:模块,默认模块common可不用添加,如 /news/list/id/10
- main:控制器
- list:动作
- 其他:都是参数
在普通url模式下,上述写法将会生成
idx.php?module=api&mod=main&action=list&type=linux&order=1&name=Ubuntu
这样的完整的url。
在pathinfo的模式下,将会生成
/api-main/list/type/linux/order/1/name/Ubuntu
在Diy的模式下,将根据自己定义的方式生成,如
/api/linux/Ubuntu