示例环境:thinkphp3.2.3
config.php中加一行:
'TAGLIB_BUILD_IN' => 'Cx,Common\Tag\My', //加载自定义标签
示例是在Application/Common/Tag目录下建的My.class.php
新建My.class.php文件
命名空间要和配置项中填写的一致;
<?php
namespace Common\Tag;
use Think\Template\TagLib;
class My extends TagLib {
// 定义标签
protected $tags=array(
// 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次
'ueditor'=> array('attr'=>'name,content','close'=>0),
'recommend'=>array('attr'=>'limit','level'=>1),
'block'=>array('attr'=>'label','level'=>2)
);
//调用碎片
/**
* [_block 调用碎片]
* @param [type] $tag [description]
* @param [type] $content [description]
* @return [type] [description]
* 示例:
* <block label="label1" ></block>
* label="block表的label字段的值"
*/
public function _block($tag,$content){
if(empty($tag['label'])){
$where="id>0 ";
}else{
$where='label='.trim($tag['label']);
}
$datas = M('Block')->field('id,title,content')->find();
if (!empty($datas) && is_array($datas)){
$out = '<!--碎片调用:'.$tag['label'].'-->';
$out .= html_entity_decode($datas['content']);
return $out;
}else{
$out = '<!--碎片调用:'.$tag['label'].' '.$datas.' 失败-->';
return $out;
}
}
}