You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prestashop 1.7商品页组合列表新增展示额外数据实现咨询

实现步骤

第一步:注入组合全局数据到前端

首先修改主题下的themes/warehouse/templates/catalog/product.tpl文件,在变体模块渲染前添加代码,把所有组合的完整数据输出为前端可调用的JS变量:

{block name='product_custom_comb_data'}
<script>
  // 提前注入所有组合的全量数据
  window.allProductCombinations = {$product.combinations|json_encode};
</script>
{/block}

如果主题本身已经预置了组合全局变量,可以直接复用,跳过这一步

第二步:修改product-variants.tpl循环结构

把你给出的foreach循环替换为以下代码,预留额外数据的显示容器,同时给每个属性项加标识属性方便后续匹配数据:

{foreach from=$group.attributes key=id_attribute item=group_attribute}
  <li class="input-container float-left" data-attr-id="{$id_attribute}" data-attr-group="{$id_attribute_group}">
    <input class="input-radio" type="radio" data-product-attribute="{$id_attribute_group}"
            name="group[{$id_attribute_group}]"
            value="{$id_attribute}"{if $group_attribute.selected} checked="checked"{/if}>
    <span class="radio-label">{$group_attribute.name}</span>
    <!-- 新增组合额外信息展示区域 -->
    <div class="comb-extra small text-muted mt-1 pl-2">
      <p class="mb-0 comb-ref">参考号:-</p>
      <p class="mb-0 comb-stock">库存:-</p>
      <p class="mb-0 comb-location">库存位置:-</p>
    </div>
  </li>
{/foreach}

第三步:添加JS逻辑匹配渲染数据

在product-variants.tpl文件末尾添加以下JS代码,遍历组合数据匹配对应属性项,把需要展示的字段直接渲染到预留容器:

document.addEventListener('DOMContentLoaded', function() {
  const combinations = window.allProductCombinations;
  if (!combinations || combinations.length === 0) return;

  combinations.forEach(comb => {
    // 提取当前组合对应的所有属性ID
    const combinationAttrIds = Object.values(comb.attributes).map(item => item.id);
    combinationAttrIds.forEach(attrId => {
      const targetEl = document.querySelector(`[data-attr-id="${attrId}"] .comb-extra`);
      if (!targetEl) return;
      // 填充数据
      targetEl.querySelector('.comb-ref').textContent = `参考号:${comb.reference || '-'}`;
      targetEl.querySelector('.comb-stock').textContent = `库存:${comb.quantity || 0}`;
      targetEl.querySelector('.comb-location').textContent = `库存位置:${comb.stock_location || '-'}`;
    })
  })
})

第四步:可选样式调整

可以在主题自定义CSS中添加以下代码优化排版:

.comb-extra {
  font-size: 12px;
  line-height: 1.3;
  color: #666;
}

如果你的商品是多属性组的组合,需要根据实际业务调整JS逻辑,按属性组合匹配唯一的组合数据,避免不同组合信息重复显示

内容的提问来源于stack exchange,提问作者x0cker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 13:54:01