一.内置标签
内置标签是在 Think/Library/Think/Template/TagLib 下。在完整版中提供了两个类文件:Cx.class.php(内置标签核心类) 、Html.class.php(html 扩展标签) 。
1、在ThinkPHP 中,Cx.class.php 是自动加载的,所以并不需要各种配置或引入而可以直接编写标签代码即可运行。
2、如果要使用 Html.class.php 的扩展标签,那么首先要导入这个标签:
//导入扩展标签
<taglib name="html" />
//在使用标签的时候,前面需要加上html:,表示这个是html标签库
<html:select options="name" selected="value" />
3、无需导入和添加:html前缀的方法:
//将Cx和Html都设置为内置标签
'TAGLIB_BUILD_IN' =>'cx,html',
//设置成内置标签,则不需要 html:了
<select options="name" selected="value" />
PS:设置内置标签有一定的危险性,因为可能会出现标签的重复导致冲突。
4、无需导入、需要添加:html前缀的方法:
如果没有设置为内置标签的话,那么都需要通过 tablib 进行导入,我们可以设置标签
预加载。这样,就不需要每次都进行导入操作了。
//标签预加载
'TAGLIB_PRE_LOAD'=>'html'
二.扩展标签库
有时感觉内置的标签不能满足项目日益繁杂的项目需求, 这是可能想自己扩展一些标签
来使用,那么自己怎么扩展标签呢?
第一步:在 Think/Library/Think/Template/TagLib 下创建一个 Test.class.php
//自定义扩展标签
namespace Think\Template\TagLib;
use Think\Template\TagLib;
defined('THINK_PATH') or exit();
/**
* Test测试标签
*/
class Test extends TagLib{
// 标签定义
protected $tags = array(
'mytest'=>array('attr'=>'color,border','close'=>1)
);
public function _mytest($tag,$content) {
$color = '';
$border = '';
if (isset($tag['color'])) {
$color = 'color:'.$tag['color'];
}
if (isset($tag['border'])) {
$border = 'border:'.$tag['border'].'px solid #ccc';
}
$css = $color.';'.$border;
return '<div style="'.$css.'">'.$content.'</div>';
}
}
//导入 test 扩展标签
<taglib name="test" />
//使用扩展标签
<Test:mytest color="blue" border="5">测试标签</Test:mytest>