场景设定
为了方便讲解,我们做一个通用的设定:

(图片来源网络,侵删)
- 模型: 我们使用 DedeCMS 自带的 “产品模型”。
- 主表:
dede_archives(存放文章的基本信息,如标题、ID等) - 附加表:
dedecaretype(存放产品特有的信息,如价格、品牌、产品图片等) - 字段: 在
dedecaretype附加表中,我们有一个字段名为pic,用来存放产品大图的路径。
重要提示: 在实际操作前,请务必确认你的附加表名称和图片字段名称,它们可能与我的示例不同。
使用 {dede:field} 标签(最简单、最推荐)
这是最直接、最简单的方法,适用于在单个内容页(如 article_article.htm)中调用当前文章的产品大图。
适用场景: 在文章详情页显示该产品的大图。
代码示例:

(图片来源网络,侵删)
{dede:field name='pic'/}
代码解释:
{dede:field}是 DedeCMS 用于调用字段值的单标签。name='pic'指定了要调用的字段名,这里的pic就是我们在附加表中定义的产品大图字段。- 这个标签会直接输出图片的完整路径,
/uploads/product/202511/15/a.jpg。
如何使用在 <img> 标签中:
我们希望调用的是图片的 URL,而不是直接输出路径,可以这样写:
<img src="{dede:field name='pic'/}" alt="{dede:field.title/}" />
或者,如果你想更严谨地判断图片是否存在,可以使用 if 条件判断:

(图片来源网络,侵删)
{dede:field name='pic' runphp='yes'}
if(@me != '') {
@me = '<img src="' . @me . '" alt="' . $this->Fields['title'] . '" />';
} else {
@me = '<img src="/images/default.jpg" alt="' . $this->Fields['title'] . '" />'; // 如果没有图,显示默认图
}
{/dede:field}
使用 {dede:arclist} 或 {dede:list} 标签(列表页调用)
如果你想在列表页(如产品列表页 list_product.htm)中,每条产品信息旁边都显示一张大图,就需要在 arclist 或 list 标签中使用 addfields 和 channelid 属性。
适用场景: 在产品列表页、频道页等循环展示多个产品时。
代码示例:
{dede:arclist addfields='pic' channelid='7' row='10' titlelen='30'}
<li>
<a href="[field:arcurl/]">
<img src="[field:pic/]" alt="[field:title/]">
<h3>[field:title/]</h3>
</a>
</li>
{/dede:arclist}
代码解释:
{dede:arclist}: 调用文章列表的标签。addfields='pic': 这是关键! 它告诉 DedeCMS 除了默认的字段外,还需要从附加表中额外获取pic字段,多个字段用逗号隔开,如addfields='pic,price,brand'。channelid='数字': 这是关键! 指定当前内容模型所在的频道ID,你需要在 DedeCMS 后台 -> 核心 -> 频道管理 -> 找到你的“产品模型”,记下它的“ID数字”。row='10': 显示10条记录。[field:pic/]: 在arclist循环内部,使用[field:字段名/]的语法来调用addfields中指定的字段。
使用 {dede:sql} 标签(最灵活、最强大)
当 arclist 或 list 无法满足复杂需求时(例如需要跨表查询、条件非常苛刻),可以直接使用原生 SQL 语句进行查询。
适用场景: 调用指定分类下的产品大图、调用最新/最热产品大图等复杂逻辑。
代码示例:
假设我们要调用 ID 为 1 的分类下的所有产品大图。
{dede:sql sql='SELECT a.id, a.title, c.pic FROM `dede_archives` AS a LEFT JOIN `dedecaretype` AS c ON a.id = c.aid WHERE a.typeid = 1'}
<div class="product-item">
<a href="/plus/view.php?aid=[field:id/]">
<img src="[field:pic/]" alt="[field:title/]">
<p>[field:title/]</p>
</a>
</div>
{/dede:sql}
代码解释:
{dede:sql}: 执行自定义 SQL 语句的标签。sql='...': 里面是你的 SQL 查询语句。SELECT a.id, a.title, c.pic: 从主表dede_archives(别名 a) 和附加表dedecaretype(别名 c) 中选择需要的字段。FROM ... LEFT JOIN ... ON a.id = c.aid: 通过文章 ID (aid) 关联主表和附加表。注意:附加表中的关联字段通常是aid。WHERE a.typeid = 1: 查询条件,这里是只显示 ID 为 1 的分类下的产品。
[field:id/]和[field:pic/]: 在sql标签内部,同样使用[field:字段名/]来获取查询结果。
总结与步骤
无论使用哪种方法,请遵循以下步骤:
- 确认字段: 登录 DedeCMS 后台,进入“核心” -> “内容模型管理” -> “选择你的产品模型” -> “字段管理”,找到存放大图的字段名(
pic)。 - 确认附加表名: 在同一个模型管理页面,查看“频道设置”或“附加表”,确认附加表的表名(
dedecaretype)。 - 确认频道ID: 在“频道管理”中找到你的产品模型,记下它的ID。
- 选择合适的方法:
- 单页显示:用
{dede:field name='pic'}。 - 列表循环:用
{dede:arclist addfields='pic' channelid='X'}。 - 复杂查询:用
{dede:sql sql='...'}。
- 单页显示:用
- 复制代码到模板: 将代码粘贴到对应的模板文件中,并根据你的网站结构调整 HTML 结构。
希望这些详细的解释和示例能帮助你成功调用产品大图!
