织梦的自定义标签功能非常强大,它允许你创建一个全新的数据模型,用于存储和展示除了文章、图集、软件等默认模型之外的其他任何类型的信息,比如常见的:产品展示、招聘信息、留言板、活动报名、会员注册、房产信息等等。

整个过程可以分为两大步:
- 后台创建数据模型:在织梦后台定义你需要存储的字段(如标题、价格、描述、图片等)。
- 前台调用和展示:在前台模板文件中使用织梦的标签语法
{dede:arclist}或{dede:list}来调用你创建的数据并展示出来。
下面我们以一个最经典的例子——“产品展示”——来一步步讲解。
第一步:在织梦后台创建自定义数据模型
创建数据表(表前缀)
织梦的自定义模型需要对应一个单独的数据表,这个表名通常由“#@_”加上你在后台设置的表前缀组成。
-
操作路径:登录织梦后台 -> 核心 -> 频道模型 -> 内容模型管理
(图片来源网络,侵删) -
操作:点击右上角的 [增加一个内容模型] 按钮。
-
填写信息:
- 模型名称:给你的模型起个名字,产品”。
- 英文模型名:英文名称,用于系统内部识别,建议用英文或拼音,
product”。 - 数据表类型:选择“独立数据表”。
- 是否支持投稿:根据你的需求选择,产品展示一般不需要,选择“否”。
- 列表命名规则:可以保持默认,也可以自定义,
{typedir}/product_{page}.html。 - 命名规则:保持默认即可。
-
点击提交:提交后,织梦会自动在数据库中为你创建一个数据表,表名会是
#@_product(如果你的表前缀是dede_,那么就是dede_product)。
添加字段
这是最关键的一步,决定了你的产品信息能包含哪些内容。

-
操作路径:仍在 核心 -> 频道模型 -> 内容模型管理 页面。
-
操作:找到你刚刚创建的“产品”模型,点击右侧的 [字段管理] 按钮。
-
添加字段:点击 [增加字段] 按钮。
现在我们来为“产品”模型添加一些常用字段:
| 字段名称 | 字段标识 | 字段类型 | 字段参数 | 说明 |
|---|---|---|---|---|
title |
单行文本 |
默认 | 产品的名称,系统自带,无需添加。 | |
| 产品价格 | price |
数字 |
默认 | 产品的价格。 |
| 产品规格 | guige |
单行文本 |
默认 | 产品的规格,如“500g/瓶”。 |
| 产品图片 | pic |
多媒体(图片) |
默认 | 产品的主图。 |
| 产品详情 | content |
HTML文本 |
默认 | 产品的详细描述,系统自带,无需添加。 |
| 是否推荐 | tuijian |
radio |
选项值:是,否 |
用于标记是否为推荐产品。 |
添加字段的具体操作(以价格为例):
- 字段名称:填写“产品价格”。
- 字段标识:填写“
price”,这个是关键,前台调用时要用到,必须是英文或数字。 - 字段类型:选择“数字”。
- 其他选项:可以根据需要设置是否为必填、在列表页是否显示等。
- 点击 [保存] 按钮。
用同样的方法,添加“guige”(单行文本)、“pic”(图片)、“tuijian”(单选按钮)等其他字段。
生成栏目
模型创建好后,你需要一个栏目来存放这些“产品”。
- 操作路径:核心 -> 栏目管理 -> 添加主栏目
- 操作:
- 栏目名称:填写“产品中心”。
- 栏目类型:非常重要! 选择你刚刚创建的模型,即“产品”。
- 其他选项(如栏目目录、列表模板等)按需填写。
- 点击确定。
你的自定义模型和栏目都已经准备好了。
第二步:在前台模板中调用和展示数据
后台设置完毕,接下来就是在前台展示这些产品信息了。
准备模板文件
你需要创建两个模板文件:
-
列表页模板 (
list_product.html):用于展示产品列表。 -
内容页模板 (
article_product.html):用于展示单个产品的详细页面。 -
存放位置:将这两个文件上传到你的模板目录(通常是
/templets/default/或你自定义的目录)下。
编写列表页模板 (list_product.html)
列表页通常用于展示多个产品的摘要信息,比如标题、图片、价格等。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:field.title/}</title>
<link rel="stylesheet" href="/templets/default/style.css">
</head>
<body>
<h1>{dede:field.title/}</h1>
<!-- 使用 {dede:list} 标签循环输出产品列表 -->
{dede:list pagesize='10'}
<div class="product-item">
<!-- 调用产品图片,如果没有则使用默认图 -->
<a href="[field:arcurl/]">
<img src="[field:pic runphp='yes']
if(@me=='') @me = '/templets/default/images/default.jpg';
else @me = @me;
[/field:pic]" alt="[field:title/]" />
</a>
<h2><a href="[field:arcurl/]">[field:title/]</a></h2>
<p>价格:<strong>¥[field:price/]</strong></p>
<p>规格:[field:guige/]</p>
<!-- 调用单选按钮字段,显示对应的文字 -->
<p>推荐状态:[field:tuijian function='(@me=="是" ? "<span style='color:red;'>已推荐</span>" : "普通")'/]</p>
</div>
{/dede:list}
<!-- 分页 -->
<div class="dede_pages">
<ul>{dede:pagelist listsize='4'/}</ul>
</div>
</body>
</html>
关键点解释:
{dede:list}:这是调用自定义模型列表的核心标签,它会自动查询你当前栏目下的所有内容。[field:字段标识/]:这是调用单个字段内容的方式。字段标识就是你第一步在后台添加字段时填写的“字段标识”,如[field:price/]、[field:pic/]。[field:arcurl/]:这是系统内置的标签,用于获取当前文章的链接地址。runphp='yes':可以在标签内执行PHP代码,这里用来判断图片字段是否为空,如果为空则显示一个默认图片。function='...':可以对字段内容进行函数处理,这里用来将“是/否”转换成更友好的显示文字。
页模板 (article_product.html)
页用于展示单个产品的完整信息。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
</head>
<body>
<h1>{dede:field.title/}</h1>
<div class="product-detail">
<!-- 产品大图 -->
<img src="{dede:field.pic/}" alt="{dede:field.title/}" />
<div class="info">
<p><strong>价格:</strong>¥{dede:field.price/}</p>
<p><strong>规格:</strong>{dede:field.guige/}</p>
<p><strong>推荐状态:</strong>{dede:field.tuijian/}</p>
</div>
<div class="content">
<h3>产品详情</h3>
<!-- 调用产品详情内容 -->
{dede:field.content/}
</div>
</div>
</body>
</html>
关键点解释:页模板中直接使用 {dede:field.字段标识/} 即可调用对应字段的值。
{dede:field.content/}会调用你编辑产品时填写的详细内容。
绑定模板
最后一步,需要将你创建的模板文件与栏目关联起来。
- 操作路径:核心 -> 栏目管理
- 操作:找到你的“产品中心”栏目,点击后面的 [更改]。
- 在弹出的页面中,找到:
- 列表模板:选择你上传的
list_product.html。 - 文章模板:选择你上传的
article_product.html。
- 列表模板:选择你上传的
- 点击 [保存] 即可。
总结与注意事项
- 模型和栏目:自定义标签的本质是“先创建模型,再创建使用该模型的栏目”。
- 字段标识:后台添加字段时,字段标识(英文)是前台调用的唯一凭证,务必记好。
- 模板标签:
- 列表页用
{dede:list}。 - 内容页用
{dede:field}。 - 分页用
{dede:pagelist}。
- 列表页用
- 权限:确保你的网站目录有写入权限,以便织梦生成静态页面。
- 调试:如果前台不显示数据,请检查:
- 栏目是否正确绑定了模板。
- 模板中的标签名称和字段标识是否完全匹配。
- 该栏目下是否有添加任何内容。
通过以上步骤,你就可以成功创建并使用织梦的自定义标签了,这个功能非常灵活,只要理解了“模型-字段-栏目-模板”这个逻辑链,你就能创建出各种复杂的功能模块。
