下面我将从基础到高级,详细讲解如何调用数据库字段,并提供清晰的示例。

核心标签:{dede:field} 和 {dede:global}
在织梦模板中,调用字段主要使用两个核心的底层模板标签:
{dede:field}:用于调用(文章、栏目、图集等)的字段。{dede:global}:用于调用全局变量,通常是系统配置或当前环境信息。
调用当前文章的字段
这是最常见的情况,比如在文章详情页 article_article.htm 中。
调用文章自带字段
织梦文章模型有很多默认字段,如标题、内容、发布时间、作者等,调用它们非常简单。
常用字段列表:

| 字段名 | 说明 | 调用示例 |
| :--- | :--- | :--- | | 文章标题 | {dede:field.title/} |
| body | 文章正文内容 | {dede:field.body/} |
| description | 如果填写了) | {dede:field.description function='htmlspecialchars(@me)'/} |
| pubdate | 发布时间(时间戳格式) | {dede:field.pubdate function='MyDate('Y-m-d H:i:s', @me)'/} |
| senddate | 入库时间(时间戳格式) | {dede:field.senddate function='MyDate('Y-m-d', @me)'/} |
| writer | 作者 | {dede:field.writer/} |
| source | 来源 | {dede:field.source/} |
| click | 点击量 | {dede:field.click/} |
| typeid | 栏目ID | {dede:field.typeid/} |
| arcrank | 文章状态(-1为待审核,0为正常) | {dede:field.arcrank/} |
示例代码(在文章详情页 article_article.htm 中):
<h1>{dede:field.title/}</h1>
<div class="info">
<span>作者:{dede:field.writer/}</span> |
<span>来源:{dede:field.source/}</span> |
<span>发布时间:{dede:field.pubdate function='MyDate('Y-m-d H:i:s', @me)'/}</span> |
<span>点击:{dede:field.click/}</span>
</div>
<div class="content">
{dede:field.body/}
</div>
function 函数:
function 用于对获取到的字段值进行二次处理,
MyDate('格式', @me):将时间戳格式化为指定格式。htmlspecialchars(@me):将HTML实体转义,防止XSS攻击,常用于调用摘要。cn_substr(@me, 100):截取字符串前100个字符。
调用当前栏目的字段
在栏目列表页 category_list.htm 或文章列表页 list_article.htm 中,需要调用当前栏目的信息。

调用栏目自带字段
常用字段列表:
| 字段名 | 说明 | 调用示例 |
|---|---|---|
typename |
栏目名称 | {dede:field.typename/} |
description |
栏目描述 | {dede:field.description/} |
seo_title |
栏目SEO标题 | {dede:field.seotitle/} |
keywords |
栏目关键词 | {dede:field.keywords/} |
id |
栏目ID | {dede:field.id/} |
示例代码(在列表页 list_article.htm 中):
<h1>{dede:field.typename/}</h1>
<div class="description">{dede:field.description/}</div>
{dede:list pagesize='10'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"]</span>
</li>
{/dede:list}
{dede:pagelist listsize='5'/}
高级调用:使用SQL查询任意数据
当默认字段无法满足需求时,比如需要调用某个特定文章的字段,或者调用自定义模型的数据,就需要使用 场景: 在首页或某个栏目页,想调用ID为 SQL语句:
模板代码: 注意: 场景: 你创建了一个“产品”自定义模型,其数据在 步骤: SQL语句: 模板代码: 常用全局变量: 示例代码(在 掌握了以上方法,你就可以在织梦CMS中自如地调用任何你需要的数据库字段了。dede:sql
{dede:sql} 标签格式:
{dede:sql sql='你的SQL语句'} [field:字段名/] {/dede:sql}调用指定文章的字段
10 的文章的标题和摘要。SELECT title, description FROM dede_archives WHERE id = 10{dede:sql sql='SELECT title, description FROM dede_archives WHERE id = 10'}
<h3><a href="[field:arcurl/]">[field:title/]</a></h3>
<p>[field:description function='cn_substr(@me, 100)']...</p>
{/dede:sql}
dede_archives 是文章主表,存放标题、发布时间等基本信息。dede_addonarticle 是文章附加表,存放正文内容。[field:arcurl/] 是一个特殊变量,织梦会自动根据文章ID生成其URL,非常方便。调用自定义模型/附加表字段
dede_addonproduct 附加表中,有一个名为 price 的价格字段,现在想在首页调用最新5个产品的名称和价格。
1)。dede_addonproduct)和字段名(price)。SELECT a.title, p.price
FROM dede_archives AS a
LEFT JOIN dede_addonproduct AS p ON a.id = p.aid
WHERE a.arctypeid = 1 -- 这里用模型的ID或对应的栏目ID
ORDER BY a.pubdate DESC
LIMIT 5
{dede:sql sql='SELECT a.title, p.price FROM dede_archives AS a LEFT JOIN dede_addonproduct AS p ON a.id = p.aid WHERE a.arctypeid = 1 ORDER BY a.pubdate DESC LIMIT 5'}
<div class="product">
<h4>[field:title/]</h4>
<p>价格:¥[field:price/] 元</p>
</div>
{/dede:sql}
调用系统全局变量
{dede:global} 用于调用系统配置信息,通常放在模板的 <head> 头部。
变量名
说明
调用示例
cfg_webname网站名称
<title>{dede:global.cfg_webname/}</title>
cfg_weburl网站根URL
<link rel="canonical" href="{dede:global.cfg_weburl/}" />
cfg_keywords网站默认关键词
<meta name="keywords" content="{dede:global.cfg_keywords/}" />
cfg_description网站默认描述
<meta name="description" content="{dede:global.cfg_description/}" />
templeturl当前模板目录
<link rel="stylesheet" href="{dede:global.templeturl/}/css/style.css" />head.htm 公共头部文件中):<head>
<meta charset="UTF-8">{dede:field.title/}_{dede:global.cfg_webname/}</title>
<meta name="keywords" content="{dede:field.keywords/},{dede:global.cfg_keywords/}" />
<meta name="description" content="{dede:field.description/},{dede:global.cfg_description/}" />
<link rel="stylesheet" href="{dede:global.templeturl/}/css/bootstrap.min.css">
</head>
总结与最佳实践
{dede:field} 是最简单、最高效的方式。{dede:sql} 功能强大,但频繁复杂的SQL查询会增加数据库负担,影响网站性能,尽量使用缓存或减少不必要的SQL调用。AS 给字段起别名,如 SELECT a.title, p.price AS product_price。function 是处理字段值的利器,特别是日期格式化、字符串截取和HTML转义,能让你更灵活地控制输出格式。htmlspecialchars 函数进行转义,防止XSS攻击。
