背景描述:
1,我是很个懒的人。
2,你是不是遇到这样的问题:很多模板页面都需要include 一个公用的header文件?。这个header模板呢。标签包含了</head>
3,然后呢个别页面又需要调用一些js。比如。add操作的页面可能需要调用jquery.validate.js 注册页面也需要调用它。
4,然后呢,回到第一点。我是个很懒惰的人。其一,我不想再建立header文件。其二呢,又想“规范”(加了引号)下html----我要在</head>之前引入这个需要的js。
------------------------------割一下吧------------------------
然后我的做法是:使用TP的。tag.也就是B。
首先,自己写了个很简单的Behavior(抛砖引玉啦,自己扩展吧。我只是加了一个abc.js。如果还需要引入其他的东西,方法类似啦)。见附件。
然后,修改THINK_PATH下面的Conf目录里面的tags.php.在34行加入。以下代码:'AutoSource',//这个是刚才附件的那个Behavior名字。自己修改了。主要是要注意顺序。
修改后代码如下
'view_filter' => array( //这个是第33行。
'AutoSource',//自己的那个Behavior,注意要放到第一个。不然不能解析!-PUBLIC-!这些东东
'ContentReplace', // 模板输出替换
'TokenBuild', // 表单令牌
'WriteHtmlCache', // 写入静态缓存
'ShowRuntime', // 运行时间显示
),然后重点来了。一般的,用TP。都会建立一个CommonAction或者是ba
如果你还没有这个习惯,我真的不知道该说点什么了。。。(那你直接去Action里改吧,但是很不推荐这种做法0_0)
那么你需要在你的公共类里添加这样的东西。
我是在我的公共类的初始化函数(可能是_initialize,也可能是__construct里。这个看你的习惯了。)
好了,贴上我的示例。
public function __construct() {
parent::__construct();//这个不解释了。
//如下,碰到所有add,edit操作都会自动引入前面提到的abcjs了
//如果你项目很小,就不需要这样麻烦了~~
if (in_array(strtolower(ACTION_NAME), explode(',', 'add,edit'))) {
C('AUTO_SOURCE',true);
}else{
C('AUTO_SOURCE',false);
}
}
AutoSourceBehavior.class.zip
( 433 B 下载:30 次 )
最佳答案