thinkcmf模板执行php代码的两种方式
发布于 作者:苏南大叔 来源:程序如此灵动~

thinkcmf
模板使用php
的方式,可以分为传统php
和内置标签
两种方式。其中,内置标签是thinkcmf(thinkphp)特有的方式,也是本文重点介绍的内容。

苏南大叔这里就是个抛砖引玉,具体的还是需要大家多多实践,才会有更加深刻的认识。
传统的php方式
在thinkcmf的模板文件中是可以运行传统的php代码的,加载方式也很简单。下面是几个例子。
其中自定义函数,可以定义在模板html目录中。代码方式类似:
比如:在/public/themes/simpleboot3/public/head.html
文件中,引入的就是public/function.html
中的自定义函数。函数的编写是类似这样的:
不过,在html中定义php函数,是不是非常的怪异?反正,苏南大叔是这么想的。其实<php></php>
这种也是自定义标签的做法,只不过苏南大叔把它归类到这边了。

在最新的tp5
中,实际上在每个<module>
目录下面,可以定义一个common.php
文件,可以用于放置公共的自定义函数。在tp3
时代,苏南大叔记得是一个function.php
来搞定的。但是tp5系列,貌似不识别function.php
了。
值得一提的是:common.php
这里面定义的函数,在controller、model、view里面都是可以使用的。

这里你可以看到更多信息。
- thinkcmf描述的内置标签 https://www.kancloud.cn/thinkcmf/doc/266535
- thinkphp描述的内置标签 https://www.kancloud.cn/manual/thinkphp5/125016
内置标签taglib的方式
thinkcmf
内置标签taglib
这种方式,苏南大叔认为:很好很强大,值得推广。在thinkcmf
中,内置标签的提供方,有两个,分别是thinkphp
和thinkcmf
。当然,您也可以自定义属于自己的taglib
。
第一部分就是thinkphp
提供的基础性的标签。常见的包括volist
,foreach
,if
,else
等等。这些标签一般都不涉及业务逻辑。也不需要特殊设置,直接能在模板html里面使用。
这些标签定义来自/thinkphp/library/think/template/taglib/Cx.php
这个文件。

第二个部分就是thinkcmf
提供的业务相关的标签。包括articles
,categories
等。这些thinkcmf
独有的标签,是需要在模板中,特殊指定才能识别的。
例如在官方例子中,/public/themes/simpleboot3/public/head.html
中的<taglib name="app\portal\taglib\Portal"/>
,实际上加载的是/app/portal/taglib/portal.php
中的内置标签。

所以,如果您想diy自己的标签的话,就应该仿照thinkcmf
的这种加载方式。
- thinkphp加载标签库说明 https://www.kancloud.cn/manual/thinkphp5/125015
- thinkcmf加载标签库说明 https://www.kancloud.cn/thinkcmf/doc/299981
- thinkcmf标签说明 https://www.kancloud.cn/thinkcmf/doc/289636
结论
充分发挥动手能力,改造thinkcmf
系统。更多苏南大叔的经验文章,请马上点击:https://newsn.net/tag/thinkcmf/ 。


