在ThinkPHP6的应用中,如果想要自定义一套自己的标签。首先要在应用安装好模板引擎。
composer require topthink/think-view
安装完成后再文件目录中可以看到这个目录
这里有个签库类文件(Cx.php)这个文件是系统已经定义的模板标签。我们可以根据这个文件格式来创建我们想自定义的模板标签,并用相同的格式写出我们需要的属性。
在我们的应用中创建tablib文件夹,在这个文件中创建一个xmcms.php文件,这个是文件是可以随意命名的。这个Xmcms的类要继承 TagLib类。
namespace app\index\taglib;
use think\facade\Db;
use think\template\TagLib;
class Xmcms extends TagLib
{
// 标签定义: attr 属性列表 close 是否闭合(1-闭合、0-开放) alias 标签别名 level 嵌套层次
// 定义标签列表
protected $tags = [
'channel'=>['attr'=>'type,order,pid','close'=>1],
'swiper'=>['attr'=>'type,order' , 'close'=>1 ],
'artical'=>['attr'=>'type,order' , 'close'=>1 ],
];
//type 传入的值 top son 或者ID
//如果type = son 需要传入一个PID获取当前子类
public function tagChannel($tag,$content){
$tag["id"] = !empty($tag["id"]) ? $tag["id"] : "item";
$type = !empty($tag["type"]) ? $tag["type"] : "top";
}
}
这里自定义了3个自定义标签channel , swiper , artical。
在页面调用
{xmcms:channel type="top"}<div>测试</div>{/xmcms:channel}
就可以使用了,在tagChannel函数中$tag对应的是自定义的属性通过 tag["type"] 可以获取到自定义值,$content对应的是自定义标签包裹的部分。