thinkcmf模板执行php代码的两种方式
发布于 作者:苏南大叔 来源:程序如此灵动~thinkcmf
模板使用php
的方式,可以分为传统php
和内置标签
两种方式。其中,内置标签是thinkcmf(thinkphp)特有的方式,也是本文重点介绍的内容。
苏南大叔这里就是个抛砖引玉,具体的还是需要大家多多实践,才会有更加深刻的认识。
传统的php方式
在thinkcmf的模板文件中是可以运行传统的php代码的,加载方式也很简单。下面是几个例子。
<body>
<?php
echo "这个是在html模板里面调用的";
?>
<php>
echo "这个也是在html模板里面调用的";
</php>
{:sub_str("这个演示调用php函数",0,-1)}
{:my_diy("这个演示调用自定义php函数")}
</body>
其中自定义函数,可以定义在模板html目录中。代码方式类似:
<include file="public@function"/>
比如:在/public/themes/simpleboot3/public/head.html
文件中,引入的就是public/function.html
中的自定义函数。函数的编写是类似这样的:
<php>function my_diy(){}</php>
不过,在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/ 。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。