在《理解Datalife Engine模板的标签模式 》一文中,我们已经讲了三种类型的标签及一种调用函数,当时只提供了一个概念性的东西。从第二部分开始,我们会把重点放到具体应用方面,所以本章就具体说一下不同模板文件的交叉调用和一些注意事项。

一、几个全局性的调用函数

{include file="xxx.tpl"},调用函数,全局性函数

(1)使用这个函数,我们可以把代码变得更加简化和有条理性
例如:我们制作main.tpl时,如果所有代码都写到这个文件里面,会显得非常乱,但是我们可以把一些通用性的代码段如顶部菜单、侧边栏等,另外保存为模板文件topmenu.tpl、 sidebar.tpl等,在需要摆放代码的地方添加{include file="topmenu.tpl"}{include file="sidebar.tpl"}即可。

(2)这个函数不仅支持tpl,还支持php文件,可以更好的支持modules模板输出的内容
例如:我们安装了recent search模板以后,我们在main.tpl合适的地方插入{include file="/engine/modules/searchcloud.php"}即可输出近期用户搜索过的词语。

(3)这个函数还支持php文件的多参数传值,达成更多效果
例如:{include file="engine/modules/mymod.php?param=value1&variable2=value2"}
{include file="engine/modules/mymod.php?param={news-id}"}
这里设计了比较多的php方面的知识而使用频率很少,所以我们会在第三部分的高级进阶篇再深入探讨此功能

{custom}标签,功能性标签,全局性标签

关于{custom}标签的具体使用方法请参考《Datalife Engine模板原理及全局标签/基础标签解析 》一文。通过这个标签,我们可以调用指定分类的文章按特定的模板样式输出,这里要注意的是特定的模板样式要自己制作,具体参考上文。

二、main.tpl和fullstory.tpl等模板文件间预置的调用性质的功能类标签

Datalife Engine的模板系统在多个版本的完善之后,已经趋于成熟。
对于一些常用的功能性模板(如login.tpl、addnews.tpl等)都是模板必备的模板,我们有理由来进行更加简化的调用:

一方面:我们没有必要再多次使用{include}函数来实施模板直接的调用,以导致调用代码混乱,不易于二次开发; 另一方面:如login.tpl,addnews.tpl,feedback.tpl等功能性模板需要将用户添加的数据传值到系统,所以涉及到不同name的<form>来传值,如果这些都有我们来做的话,无疑增加了模板制作的工作量和难度。

所以下面我们分别列出不同模板文件直接的调用性质的标签:

1、main.tpl中的调用性质的标签

{headers}:输出站点的编码、<title>、<meta>关键词、描述等信息
{login}:自动输出login.tpl模板文件的信息
{vote}:自动输出vote.tpl模板文件的信息
{info}:自动输出info.tpl模板文件的信息
{content}:自动输出addnews、feedback、shortstory、fullstory、registration、userinfo、search、stats、lostpassword、static、pm、tagscloud、navigation 等模板文件的内容

2、fullstory.tpl中调用性质的标签

{poll}:自动输出poll.tpl模板文件的信息
{comments}:自动输出comments.tpl模板文件的信息
{addcomments}:自动输出addcomments.tpl模板文件的信息

三、模板调用中的一些注意事项

1.制作模板中,调用性的局部标签必须与指定的模板文件相匹配

制作模板中,我们经常会希望某个标签能在另外一个未匹配的模板文件中出现,但是这种想法已经超出了DLE模板的设计范围,请切记不要这么浪费时间。

2.制作模板中,请注意不同模板之间的HTML代码的衔接,避免遗漏或错放,如<div></div>等

可能大家会莫名其妙,制作模板不可能连基本的<div>类标签都放置不对吧?
其实这里就是一个提醒,因为我制作瀑布流模板时,为了分离出navigation.tpl模板的下一页链接,我必须通过<div>来把navigation.tpl从{content}中脱离出来,但是这样一来,会涉及到addnews、feedback、shortstory、fullstory、registration、userinfo、search、stats、lostpassword、static、pm、tagscloud、 navigation等多个模板都要更改,添加一个只有</div>或只有<div>的单标签,不同模板再衔接起来达成完整代码,多个模板都出现这种断码后,整个模板有点凌乱,很容易出错!

当时个别模板没有弄好,如feedback.tpl因为多了一个<div>而导致DLE自动为feedback.tpl模板外围添加的<form></form>代码组包括范围出错,进而导致http://zctou.com/?do=feedback的反馈功能失效了。
所以在制作模板时请尽量使用DLE后台提供的模板编辑器或专业的文本编辑器,这些工具可以高亮展示代码范围,方便自己识别代码,迅速制作出结构良好的模板。