什么是织梦标签?
织梦标签是一种专用于织梦CMS系统的模板指令,它类似于WordPress的短代码,但功能更强大、更灵活。

- 作用:在模板文件(
.htm)中,通过调用标签来获取并显示数据库中的内容,如文章列表、栏目、图集、软件等。 - 格式:通常由
{dede:标签名 属性='值'}开头,由{/dede:标签名}对于单标签,则直接以/{dede:标签名}- 优势:将页面逻辑与内容分离,前台设计人员只需关注HTML和标签,无需关心后端PHP代码,大大降低了网站开发的难度和维护成本。
核心标签解析
织梦标签非常多,但掌握了以下几类核心标签,就能构建出绝大多数网站页面。
全局通用标签
这些标签可以在任何页面使用,用于获取网站的基本信息。
{dede:global}:调用网站全局变量。- 示例:
{dede:global.cfg_webname/}:调用网站名称。{dede:global.cfg_weburl/}:调用网站首页URL。{dede:global.cfg_powerby/}:调用版权信息。
- 示例:
{dede:include}:包含其他文件,常用于引入页头、页脚、侧边栏等。- 示例:
{dede:include filename='head.htm'/}:引入根目录下的head.htm文件。{dede:include file='templets/default/foot.htm'/}:引入指定路径的文件。
- 示例:
文章列表类标签
这是最常用的标签组,用于在首页、列表页、栏目页等展示文章。
-
主标签:
{dede:arclist}-
作用:获取一个文章列表。
-
常用属性:
typeid: 必选,指定栏目ID,获取该栏目下的文章,多个ID用逗号隔开,如'1,2,3'。'top'表示顶级栏目。row: 调用文章数量,默认为10条。titlelen: 标题长度,默认为30字节(一个汉字2字节)。infolen: 简介(长度。orderby: 排序方式,常用值:pubdate(发布时间)、id(文章ID)、click(点击量)、hot(热度),默认为pubdate。orderway: 排序方向。desc(降序)、asc(升序),默认为desc。channelid: 指定频道ID,如1代表文章,2代表图集。limit: 起始位置,获取数量,如limit='0,5'表示从第0条开始,获取5条。
-
底层模板变量:在
{dede:arclist}和{/dede:arclist}之间使用的变量。[field:title]。[field:arcurl]:文章链接。[field:pubdate function='strftime("%Y-%m-%d",@me)'/]:发布时间,function用于格式化日期。[field:description]:[field:click]:文章点击量。[field:image]:文章第一张图片(如果有)。[field:litpic]:文章缩略图。
-
完整示例(首页头条文章):
{dede:arclist typeid='1' row='5' titlelen='40' orderby='click' orderway='desc'} <li> <a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a> <span>[field:pubdate function='strftime("%m-%d",@me)'/]</span> </li> {/dede:arclist}
-
页标签
这些标签只在文章内容页(article_article.htm)中使用。
-
{dede:field}:调用文章的某个字段。- 常用属性:
title: 文章标题。pubdate: 发布时间。source: 来源。writer: 作者。click: 点击量。description:body: 文章正文内容。typename: 当前栏目名称。
- 示例:
<h1>{dede:field.title/}</h1><p>发布时间:{dede:field.pubdate function='strftime("%Y-%m-%d %H:%M:%S",@me)'/}</p>[field:body/](注意:内容页直接用[field:body/]而不是{dede:field.body/})
- 常用属性:
-
{dede:field name='position'}:调用当前位置(面包屑导航)。- 示例:
首页 > 技术分享 > {dede:field name='title'/}
- 示例:
-
{dede:prenext get='pre'/}和{dede:prenext get='next'/}:调用上一篇/下一篇文章。get='pre':上一篇。get='next':下一篇。
-
{dede:likearticle}:调用相关文章。- 常用属性:
row(数量)、typeid(指定栏目)。 - 底层变量:同
arclist。
- 常用属性:
栏目导航标签
用于生成网站的栏目菜单。
- 主标签:
{dede:channel}- 作用:获取栏目列表。
- 常用属性:
typeid: 指定从哪个栏目开始获取,默认为顶级栏目,'0'也是顶级栏目。row: 调用栏目数量。type: 栏目类型,默认为son(下级栏目),self(同级栏目)。currentstyle: 当前栏目样式,非常有用!
- 底层模板变量:
[field:typename]:栏目名称。[field:typelink]:栏目链接。
currentstyle属性示例:{dede:channel type='top' currentstyle="<li class='on'><a href='~typelink~'>~typename~</a></li>"} <li><a href="[field:typelink/]">[field:typename/]</a></li> {/dede:channel}这个意思是:如果是当前栏目,就应用
currentstyle里的样式(~typelink~和~typename~会自动替换为对应的值),否则应用默认的<li>样式,这可以轻松实现高亮当前菜单项。
高级标签与技巧
自定义循环({dede:loop})
{dede:loop} 是一个万能标签,可以执行任何SQL语句,非常灵活。
- 作用:执行SQL并循环输出结果。
- 属性:
sql: 要执行的SQL语句。row: 返回记录数。
- 底层变量:通过
[field:字段名]调用。 - 示例(调用友情链接):
{dede:loop table='dede_flink' type='my' row='10'} <a href="[field:url/]" target="_blank">[field:webname/]</a> {/dede:loop}注意:
type='my'是调用自己添加的友情链接,type='image'是调用图片链接。
条件判断({dede:if})
在模板中进行逻辑判断,让页面内容更智能。
- 语法:
{dede:if 条件}...[else]...{/dede:if} - 示例(判断是否有缩略图):
{dede:if field.litpic != ''} <img src="[field:litpic/]" alt="[field:title/]" /> {else} <img src="/images/default.jpg" alt="默认图片" /> {/dede:if}
代码片段({dede:myad} / {dede:myphp})
-
广告调用
{dede:myad}:- 作用:调用后台广告管理器中的广告。
- 示例:
{dede:myad name='topbanner'/},name对应后台广告标识符。
-
PHP代码执行
{dede:myphp}:- 作用:在模板中直接执行PHP代码(危险操作,非必要不使用)。
- 示例:
{dede:myphp} $now = date('Y-m-d H:i:s'); echo "现在时间是:".$now; {/dede:myphp}
标签嵌套
织梦标签支持嵌套,可以实现更复杂的功能。
- 示例(在每个栏目下调用其子栏目的文章):
{dede:channel type='son' typeid='top'} <!-- [field:typename/] 是当前循环的子栏目名称 --> <h2>[field:typename/]</h2> <ul> {dede:arclist row='5' typeid='[field:id]'} <!-- 注意这里的typeid是动态变化的 --> <li><a href="[field:arcurl/]">[field:title/]</a></li> {/dede:arclist} </ul> {/dede:channel}
标签系统常见问题与解决方案
问题:标签不生效,页面显示为 {dede:xxx} 原样字符。
- 原因:模板文件没有被织梦解析。
- 解决方案:
- 确保模板文件是
.htm后缀。 - 进入后台 -> 模板 -> 默认模板管理 -> 选择对应页面 -> 更新HTML,这是最常用的方法。
- 检查标签拼写是否错误,如
{dede:arccat}是错误的,应为{dede:arclist}。
- 确保模板文件是
问题:调用出的链接是动态的 plus/view.php?aid=123,而不是静态的 /html/123.html。
- 原因:网站开启了伪静态,但模板更新时没有正确生成静态文件。
- 解决方案:
- 进入后台 -> 系统 -> 系统基本参数 -> 核心设置,确认“是否使用伪静态”是“是”。
- 进入后台 -> 生成 -> HTML更新,选择“一键更新网站”,或者选择“更新栏目页/列表页/内容页”进行更新。
问题:如何修改或自定义标签?
- 修改现有标签:织梦标签的核心PHP文件位于
/include/taglib/目录下。arclist.lib.php文件就对应了{dede:arclist}标签的逻辑。(此操作需要PHP编程基础,不推荐新手随意修改,容易导致系统异常) - 创建自定义标签:可以通过编写PHP函数,然后在
/include/common.func.php文件中添加,最后在模板中通过{dede:mytag}调用,这是一个高级技巧,用于实现系统没有的特定功能。
织梦CMS的标签系统是一个强大而灵活的工具,掌握它的关键在于:
- 熟悉核心标签:
{dede:global},{dede:include},{dede:arclist},{dede:field},{dede:channel}是构建网站的基础。 - 理解属性和底层变量:属性用来控制标签行为,底层变量用来显示内容。
- 勤于练习和查阅官方文档:遇到不认识的标签,最好的方法是查阅织梦官方提供的《标签手册》。
- 学会“更新HTML”:90%的标签不显示问题都可以通过“更新HTML”解决。
希望这份详细的指南能帮助你从入门到精通织梦CMS的标签系统!
