dede如何调用商品价格?

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

核心概念:自定义字段

在DedeCMS中,除了系统自带的标题、内容、发布时间等字段,你还可以为每个模型(比如文章模型、商品模型)添加自定义字段来存储额外的信息,比如价格、规格、库存等。

dede调用商品价格
(图片来源网络,侵删)

假设你已经为你的“商品”模型添加了一个名为 price 的自定义字段。


调用当前商品页面的价格(最常用)

这是在商品详情页(article_product.htm 或你自定义的商品模板)中,显示该商品自身价格的方法。

语法:

{dede:field.price /}

示例: 在商品详情模板中,你可以这样使用:

<h2>商品标题:{dede:field.title/}</h2>
<p>商品价格:<strong>¥{dede:field.price/}</strong> 元</p>
<p>商品库存:{dede:field.stock/} 件</p>

说明:

  • {dede:field.price/} 会直接输出当前这篇商品文章的 price 字段值。
  • 这是最简单直接的调用方式。

在列表页(如栏目页、首页)循环调用多个商品的价格

这是在商品列表页(list_product.htm 或首页的arclist调用)中,循环显示每个商品的价格。

语法: 需要在 {dede:arclist} 标签内使用 array 属性来指定要调用的自定义字段。

{dede:arclist typeid='栏目ID' row='10' titlelen='30'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <span>价格:¥[field:price/]</span>
    </li>
{/dede:arclist}

关键点:

  1. typeid='栏目ID':指定你要调用的商品所在的栏目ID,如果想调用所有栏目的商品,可以删除此属性或设置为 typeid='0'
  2. row='10':表示调用10条商品信息。
  3. [field:price/]:在 arclist 内部,自定义字段的调用方式是 [field:字段名/],注意这里的标签符号是 [...] 而不是 。

调用指定栏目的商品价格并排序

这个场景很常见,热销商品”、“特价商品”等,你需要从指定栏目调用商品,并按价格或销量等字段排序。

语法: 使用 orderbyorderway 属性。

{dede:arclist typeid='10' row='6' orderby='price' orderway='asc'}
    <div class="product-item">
        <a href="[field:arcurl/]"><img src="[field:picname/]" alt="[field:title/]" /></a>
        <h3>[field:title/]</h3>
        <p class="price">¥[field:price/]</p>
    </div>
{/dede:arclist}

关键点:

  • orderby='price':表示按照 price 字段进行排序。
  • orderway='asc':表示升序排列(从低到高)。
    • 如果你想按价格从高到低排序,则使用 orderway='desc'

其他常用的 orderby 值:

  • senddate:按发布时间排序(最常用)
  • hotclick:按点击量排序
  • id:按文章ID排序

调用指定ID的单个商品价格

有时候你可能想在页面的某个特定位置(比如首页的推荐位)显示某一个特定商品的价格。

语法: 使用 id 属性来指定文章ID。

{dede:arclist id='25' row='1'}
    <div class="featured-product">
        <h3>今日推荐</h3>
        <a href="[field:arcurl/]">[field:title/]</a>
        <p>特价:¥[field:price/]</p>
    </div>
{/dede:arclist}

说明:

  • id='25':这里的25是你想要调用的那篇商品文章在数据库中的ID。
  • row='1':因为指定了单个ID,row 设置为1即可。

进阶技巧:格式化价格(保留两位小数)

商品价格通常需要保留两位小数,90 而不是 920,DedeCMS的 arclist 标签本身不支持直接格式化,但可以通过一个简单的PHP函数来实现。

修改 include/extend.func.php 文件 在你的DedeCMS安装目录下,找到 include/extend.func.php 文件(如果不存在,请自行创建),在文件末尾添加如下PHP函数:

/**
 * 格式化价格为两位小数
 * @param string $price_str 价格字符串
 * @return string 格式化后的价格
 */
function formatPrice($price_str) {
    // 先尝试转换为浮点数,避免非数字字符出错
    $price = floatval($price_str);
    // 使用number_format格式化为两位小数
    return number_format($price, 2, '.', '');
}

在模板中调用 添加完函数后,你就可以在模板中使用 function} 标签来调用它了。

在列表页(arclist)中使用:

{dede:arclist typeid='10' row='6'}
    <p>价格:¥{dede:field.price function='formatPrice(@me)'/}</p>
{/dede:arclist}

注意:arclist 内部,{dede:field} 标签的用法是 {dede:field.字段名 function='函数名(@me)'/}。 页(article_product.htm)中使用:**

<p>商品价格:<strong>¥{dede:field.price function='formatPrice(@me)'/}</strong> 元</p>

注意: 在内容页,{dede:field} 标签的用法是 {dede:field.字段名 function='函数名(@me)'/}


总结与排查

如果调用价格不显示,请按以下顺序检查:

  1. 自定义字段是否存在:登录DedeCMS后台,【核心】-> 【内容模型管理】-> 选择你的商品模型 -> 【字段管理】,确认 price 字段是否存在并且被勾选了“使字段在发布内容表单中显示”。
  2. 字段名称是否正确:检查模板中写的字段名 price 是否和后台添加的字段名完全一致,包括大小写。
  3. 标签语法是否正确
    • 内容页用 {dede:field.price/}
    • 列表页用 [field:price/]
  4. 栏目ID和文章ID是否正确:在列表页或首页调用时,确保 typeidid 的值是正确的。
  5. 模板是否更新:修改模板后,确保清空了DedeCMS的缓存,或者在后台【生成】-> 【一键更新网站】中更新了对应的页面。

希望这份详细的指南能帮助你成功在DedeCMS中调用商品价格!

-- 展开阅读全文 --
头像
织梦小说网站模板下载,安全吗?好用吗?
« 上一篇 今天
织梦仿站如何快速熟练掌握?
下一篇 » 今天

相关文章

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

目录[+]