从本文开始,我们会陆续把DLE内置的各个模板文件进行详细的注释,希望大家能多提意见,不断完善后续的文章。

从本文开始,会涉及到非常多的HTML相关知识,所以希望新来的同学能够有一定编码基础后再进行比较大的改造,如果对HTML代码的基础薄弱,请只更改必 要的文字,而一些涉及到赋值的代码请尽量不要更改。另外,DLE的模板文件为标准的TPL文件,所以不会涉及到太多的PHP语言,即使没有PHP语言基 础,在编辑模板方面也不会有什么问题。

一、DLE模板系统中main.tpl模板文件的用途简介

如《Datalife Engine模板原理及全局标签/基础标签解析 》所说,DLE系统在设计模板时必须提供一个框架/枢纽性质的模板文件,即main.tpl,将这个文件编辑好以后,我们打开DLE的站点,我们首先看到的页面(即HOME首页)即是由main.tpl来控制的,也就是说main.tpl代表的就是站点的HOME首页文件,它决定了站点的整体框架、外观和各个功能模板(如果页头,文章列表,侧边栏,页脚等)的布局。通过文字可以理解main.tpl的概要,不过我们可能还是不清晰main.tpl的具体情况,下面我做了一张简图来更清晰的分析一下main.tpl的具体情况!

[模板知识] 整站框架模板 main.tpl及可用模板标签
本图为mian.tpl模板文件的解析图,请在制作、仿制模板前,仔细看一下这个图,肯定会对你有帮助的。

二、DLE系统mian.tpl模板文件可用标签

      {headers} 功能性标签 局部标签

只能用于<head></head>之间,输出站点、文章的编码、名称、描述、关键词等信息,对于站点的搜索引擎优化 SEO非常有帮助。关于本标签输出的内容,都是程序已经内置的,其中有一些关于Datelife Engine的版本信息,如果需要更改这些信息,需要到/engine/engine.php文件(靠近底部)中修改,具体方法我们会在Datalife Engine文件解析教程中在做介绍。

{THEME} 数据值标签 全局标签

我们在制作模板时,经常会使用模板的文件地址,特别是images/下面的图片文件。此时模板的名称并不是固定,如:/templates /xxxxx/images/logo.png,这里的xxxxx即为模板名称,虽然我们开始给模板命名了,但是其他用户使用模板时可能会更改模板名称, 那么模板中大量的绝对地址引用都会出现404错误。DLE模板内置了{THEME}这个标签可以解决这个问题:

{THEME}即可代表/templates/xxxxx/,上例中的网址我们可以改写为:{THEME}/images/logo.png
{login} 功能性标签 局部标签

在main.tpl的任意位置都可以使用,用于输出login.tpl规定的输出内容,即用户登录面板和控制面板
{vote} 功能性标签 局部标签

在main.tpl的任意位置都可以使用,用于输出vote.tpl规定的输出内容,即站点的投票系统
      {changeskin} 功能性标签 局部标签

在main.tpl的<body></body> 内任意位置都可以使用,用于输出系统内存在的各个模板供用户选择并实时切换模板,在后台System Settings里面可以设置是否允许用户切换模板,如果关闭的话,这个标签即使布置了,也不会输出任何内容。

{calendar} 功能性标签 局部标签
在main.tpl的<body></body> 内任意位置都可以使用,用于输出站点日历功能,在后台System Settings里面可以设置是否开启站点日历功能,如果关闭的话,这个标签即使布置了,也不会输出任何内容。

{topnews} 功能性标签 局部标签
在main.tpl的<body></body> 内任意位置都可以使用,用于循环输出topnews.tpl规定的热门文章列表

{archives} 功能性标签 局部标签
在main.tpl的 <body></body> 内任意位置都可以使用,用于输出站点的月份存档信息

{info} 功能性标签 局部标签
在main.tpl的 <body></body> 内任意位置都可以使用,但是建议放于{content}之前,用于输出站点的提示信息和错误提示

{content} 功能性标签 局部标签
在main.tpl布置后,会根据用户的请求输出addnews、feedback、shortstory、fullstory、registration、userinfo、search、stats、lostpassword、static、pm、tagscloud、 navigation等多个模板的内容

{custom} 功能性标签 全局标签
自定义文章输出形式,具体使用信息请参照《Datalife Engine模板原理及全局标签/基础标签解析 》一文,这里不再赘述

{AJAX} 功能性标签 局部标签
请紧邻<body>之后布置此标签,用于输出站点的AJAX交互信息

{banner_ad} 数据值标签 局部标签
Datalife engine 内置广告系统http://www.site.com/allcp.php?mod=banners ,在广告管理模块中,我们可以设定好每个广告的名称,如header,设定好以后,我们就可以在main.tpl添加{banner_header}来放置这个广告了。

{inform_rss} 数据值标签 局部标签
Datelife Engine比较实用的一个功能:rss引用功能,这个功能可以把其他站点的RSS源引用到自己的站点来,通过可以通过inform.tpl模板控制RSS源在本站展示的标题简介形式等,我们在http://www.allcandl.com/allcp.php?mod=rssinform 这个模块中可以设定引用的rss源的名称,如:我们引用allcandl.com的rss源,http://www.allcandl.com/rss.xml,并在自己站点的模板控制面板中设定名称为allcandl,那么我们在main.tpl里面布置{inform_allcandl}就可以输出allcandl站点的rss源信息了。

下面标记为绿色的几组标签,均为范围类标签,因为这几组标签适用范围广,而且容易出现误解,所以我们在之前的教程中已经做过很多的介绍,如果你不清楚具体的含义和使用方法,可以参考以下几篇文章:1.4 理解Datalife Engine模板的标签模式 》、《 1.5 Datalife Engine模板原理及全局标签/基础标签解析 》、《 1.6 举例说明Datalife Engine的范围标签的使用方法 》 。可以应用于main.tpl的范围类标签如下:

[aviable=xxx] text [/aviable] 范围标签 全局标签
设定text内容的可以出现的范围
[not-aviable=xxx] text [/not-aviable] 范围标签 全局标签
设定text内容的不可以出现的范围
[group=id] text [/group] 范围标签 全局标签
设定特定id用户组的用户可以查看text内容
[not-group=id] text [/not-group] 范围标签 全局标签
设定特定id用户组的用户不可以查看text内容
[category=id] text [/category] 范围标签 全局标签
设定特定id的分类可以显示text内容
[not-category=id] text [/not-category] 范围标签 全局标签
设定特定id的分类不可以显示text内容
[page-count=1,2,3] text [/page-count] 范围标签 全局标签
设定特定范围内的文章列表特定页码中可以显示text内容
[not-page-count=1,2,3] text [/not-page-count] 范围标签 全局标签
设定特定范围内的文章列表特定页码中不可以显示text内容