dede如何调用产品大图?

99ANYc3cd6
预计阅读时长 13 分钟
位置: 首页 DEDE建站 正文

场景设定

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

dede 调用产品大图
(图片来源网络,侵删)
  • 模型: 我们使用 DedeCMS 自带的 “产品模型”
  • 主表: dede_archives (存放文章的基本信息,如标题、ID等)
  • 附加表: dedecaretype (存放产品特有的信息,如价格、品牌、产品图片等)
  • 字段: 在 dedecaretype 附加表中,我们有一个字段名为 pic,用来存放产品大图的路径。

重要提示: 在实际操作前,请务必确认你的附加表名称和图片字段名称,它们可能与我的示例不同。


使用 {dede:field} 标签(最简单、最推荐)

这是最直接、最简单的方法,适用于在单个内容页(如 article_article.htm)中调用当前文章的产品大图。

适用场景: 在文章详情页显示该产品的大图。

代码示例:

dede 调用产品大图
(图片来源网络,侵删)
{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 调用产品大图
(图片来源网络,侵删)
{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)中,每条产品信息旁边都显示一张大图,就需要在 arclistlist 标签中使用 addfieldschannelid 属性。

适用场景: 在产品列表页、频道页等循环展示多个产品时。

代码示例:

{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} 标签(最灵活、最强大)

arclistlist 无法满足复杂需求时(例如需要跨表查询、条件非常苛刻),可以直接使用原生 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:字段名/] 来获取查询结果。

总结与步骤

无论使用哪种方法,请遵循以下步骤:

  1. 确认字段: 登录 DedeCMS 后台,进入“核心” -> “内容模型管理” -> “选择你的产品模型” -> “字段管理”,找到存放大图的字段名(pic)。
  2. 确认附加表名: 在同一个模型管理页面,查看“频道设置”或“附加表”,确认附加表的表名(dedecaretype)。
  3. 确认频道ID: 在“频道管理”中找到你的产品模型,记下它的ID。
  4. 选择合适的方法:
    • 单页显示:用 {dede:field name='pic'}
    • 列表循环:用 {dede:arclist addfields='pic' channelid='X'}
    • 复杂查询:用 {dede:sql sql='...'}
  5. 复制代码到模板: 将代码粘贴到对应的模板文件中,并根据你的网站结构调整 HTML 结构。

希望这些详细的解释和示例能帮助你成功调用产品大图!

-- 展开阅读全文 --
头像
织梦评论表情图标如何修改?
« 上一篇 03-07
dede首页轮播图代码
下一篇 » 03-07

相关文章

取消
微信二维码
支付宝二维码

目录[+]