核心概念:标签、模板、PHP
-
织梦标签:
(图片来源网络,侵删)- 本质:一种专用的、简化的代码语法,用于在模板文件中调用数据。
- 作用:让不懂PHP的网站编辑人员也能通过简单的标签组合,动态地生成网页内容,而无需直接操作PHP代码。
- 格式:通常由
{dede:标签名 属性='值'}开头,由{/dede:标签名}对于单标签,则没有结束标签。 - 示例:
{dede:arclist titlelen='30' row='10'}...{/dede:arclist}:调用10条标题长度为30字符的文章列表。{dede:field.title/}:获取当前文章或栏目的标题。
-
模板文件:
- 本质:一个包含HTML代码和织梦标签的文件,是网站的“骨架”和“皮肤”。
- 扩展名:通常是
.htm。 - 位置:位于
/templets/目录及其子目录下,首页模板是/templets/default/index.htm。 - 工作流程:当用户访问一个页面时,织梦引擎会读取对应的模板文件,解析其中的所有织梦标签,然后从数据库中获取数据,将数据填充到标签位置,最后生成一个纯HTML页面发送给用户的浏览器。
-
PHP文件:
- 本质:织梦系统的“大脑”和“心脏”,负责处理所有业务逻辑。
- 作用:
- 定义标签:PHP文件中编写了标签的具体实现逻辑,告诉织梦引擎这个标签应该做什么、如何从数据库取数据。
- 处理请求:接收用户请求(如点击“阅读全文”),处理表单提交,进行用户登录验证等。
- 管理后台:后台的所有功能(如文章发布、栏目管理)都是由PHP文件驱动的。
- 位置:主要位于
/include/、/dede/(后台目录)等目录下。
织梦标签详解
织梦标签非常丰富,可以分为几大类。
常用列表类标签
这类标签用于循环输出内容列表。

(图片来源网络,侵删)
-
{dede:arclist}:文章列表标签,最常用。- 常用属性:
typeid: 栏目ID,指定在哪个栏目下获取内容。typeid='0'表示全站。row: 获取条数,row='10'表示获取10条。titlelen: 标题长度,titlelen='30'表示标题最多显示30个字符。infolen: 内容摘要长度。orderby: 排序方式,如orderby='hot'(按点击量),orderby='pubdate'(按发布时间)。channelid: 模型ID,channelid='1'是文章模型。
- 底层模板字段:在
{dede:arclist}和{/dede:arclist}之间,可以使用特定字段来显示每条信息的具体内容。[field:title]: 文章标题。[field:arcurl]: 文章链接。[field:pubdate function='strftime("%Y-%m-%d",@me)'/]: 发布时间,通过function进行格式化。[field:click]: 点击量。[field:litpic]: 文章缩略图。
示例:在首页模板中调用最新文章
<ul> {dede:arclist typeid='1' row='5' titlelen='20'} <li> <a href="[field:arcurl/]">[field:title]</a> <span>[field:pubdate function='strftime("%m-%d",@me)'/]</span> </li> {/dede:arclist} </ul> - 常用属性:
-
{dede:channel}:栏目列表标签,用于显示栏目导航。- 常用属性:
typeid: 父栏目ID,typeid='0'表示顶级栏目。row: 显示栏目数量。type:type='son'表示显示子栏目,type='self'表示显示本栏目。
- 常用属性:
内容详情类标签
这类标签用于在文章内容页(article_article.htm)中显示当前文章的详细信息。

(图片来源网络,侵删)
{dede:field}:获取当前文档的单个字段。- 常用属性:
name: 字段名,必须指定。
- 示例:
{dede:field.name/}。{dede:field.posttime function='strftime("%Y-%m-%d %H:%M:%S",@me)'/}:发布时间。{dede:field.body/}:文章正文内容。{dede:field.keywords/}:文章关键词。
- 常用属性:
辅助类标签
这类标签用于实现一些特定功能,如分页、表单等。
-
{dede:pagelist}:分页列表标签,通常放在文章列表页。- 常用属性:
listsize: 显示的页码数量。listitem: 显示的分页项,如info,index,next,end,pre。
- 常用属性:
-
{dede:include}:包含文件标签,用于引入其他模板文件,实现模块化。- 示例:
{dede:include filename='head.htm'/}会引入/templets/default/head.htm文件。
- 示例:
PHP 文件详解
PHP文件是标签功能的具体实现者,理解它们的关系,就能进行自定义开发。
标签PHP文件
- 位置:
/include/taglib/目录。 - 命名规则:
标签名.lib.php。arclist标签的实现文件就是arclist.lib.php。 - 工作原理:
- 当模板引擎解析到
{dede:arclist ...}时,它会自动去/include/taglib/目录下寻找arclist.lib.php文件。 - 这个PHP文件定义了一个名为
lib_arclist的函数(函数名规则为lib_标签名)。 - 织梦引擎会调用这个函数,并把模板中设置的属性(如
typeid,row)作为参数传递进去。 lib_arclist函数内部会执行SQL查询,从数据库中获取数据,然后将数据格式化并返回给模板引擎。- 模板引擎再将返回的数据填充到
{dede:arclist}...{/dede:arclist}的位置。
- 当模板引擎解析到
示例:arclist.lib.php 的核心逻辑(简化版)
// 文件位置: /include/taglib/arclist.lib.php
function lib_arlist(&$ctag, &$refObj) {
// 1. 获取标签属性
$attlist = "typeid|0,row|10,titlelen|30";
FillAttsDefault($ctag->CAttribute, $attlist);
$typeid = $ctag->CAttribute['typeid'];
$row = $ctag->CAttribute['row'];
// 2. 编写SQL查询语句
$sql = "SELECT id, title, pubdate, litpic FROM dede_archives WHERE typeid='$typeid' ORDER BY pubdate DESC LIMIT 0, $row";
// 3. 执行查询,获取数据
$dsql->SetQuery($sql);
$dsql->Execute();
$items = array();
while ($row = $dsql->GetArray()) {
$items[] = $row;
}
// 4. 返回数据,供模板循环使用
return $items;
}
核心PHP文件
/include/dedetag.class.php:这是织梦模板引擎的核心类,它负责解析模板文件中的所有标签,并调用对应的.lib.php文件来获取数据。/include/common.func.php:公共函数库,包含了许多常用的辅助函数,如GetOneMysql()、pasterImageUp()等,在PHP标签和后台中都会被调用。/dede/目录:整个后台系统的入口和所有功能模块的PHP文件。/dede/article_add.php:处理“添加文章”的表单提交。/dede/ catalog_add.php:处理“添加栏目”的请求。
关系总结与二次开发流程
关系图:
用户请求 -> PHP入口文件 (如 index.php) -> 织梦引擎 (dedetag.class.php) -> 读取模板 (.htm) -> 解析标签 -> 调用标签PHP (.lib.php) -> 执行SQL -> 获取数据 -> 填充模板 -> 生成HTML -> 返回给用户
自定义标签的开发流程(示例):创建一个“推荐文章”标签
- 需求:想在首页显示一个“编辑推荐”的文章列表。
- 步骤1:修改数据表:在
dede_archives表中添加一个is_recommended字段(类型为 tinyint(1)),用于标记是否为推荐文章。 - 步骤2:创建标签PHP文件:
- 在
/include/taglib/目录下创建一个新文件:recommend.lib.php。 - 在文件中编写
lib_recommend函数,SQL查询语句需要加上WHERE is_recommended = 1的条件。
- 在
- 步骤3:在模板中使用标签:
- 在首页模板 (
index.htm) 中,使用你新创建的标签:<h3>编辑推荐</h3> <ul> {dede:recommend row='5' titlelen='20'} <li><a href="[field:arcurl/]">[field:title]</a></li> {/dede:recommend} </ul>
- 在首页模板 (
- 步骤4(可选):后台集成:
- 修改文章编辑模板 (
/templets/default/article_edit.htm),在表单中增加一个复选框,用于设置is_recommended字段的值。 - 修改文章保存的PHP文件 (
/dede/article_edit.php),在保存数据时,将复选框的值更新到is_recommended字段。
- 修改文章编辑模板 (
通过以上流程,你就可以成功地扩展织梦系统的功能,而不仅仅是局限于它自带的标签,掌握标签与PHP的关系,是成为织梦高手的关键一步。
