如何在购物车预览中访问“新产品”

时间:2018-08-01 20:45:18

标签: bigcommerce

在我的基石主题中,我可以使用yaml front-matter这样访问主页上的“新产品”

---
products:
    new:
---

但这不适用于模板文件。所以我想知道我是否可以做这样的事情。

utils.api.products.new( { template: 'cart-upsells' }, (err, response) => {
    if (err) { return false; }
    $upsells.html(response);
});

虽然我不认为utils.api.products.new存在,但这也不起作用。

如果它是唯一的方式,我也愿意使用BC-api-说我确实从api返回了一堆json,我可以使用车把将其模板化吗?

1 个答案:

答案 0 :(得分:4)

新产品在全球范围内可用,因此您应该能够在购物车预览模式下访问它们,而无需调用API。

您能尝试在您的 cart.html 页面上添加新产品的重要内容吗?那应该调用该对象,以便您可以使用{{products.new}}

preview.html 上访问新产品。
---
products:
    new:
        limit:
---

编辑: 要在标题(cart-preview.html)的微型购物车预览中访问新产品对象,可以使用{{inject}}和{{jsContext}}助手来公开新产品对象并对其进行处理。在您的代码中。例如,添加到base.html:

{{inject 'newProducts' products.new}}



<script>
    var jsContext = JSON.parse({{jsContext}});
    console.log(jsContext.newProducts);
</script>

您可以使用此方法在微型购物车预览中调用jsContext.newProducts。您将要确保所有页面类型(类别,产品,页面,品牌)都调用新产品的主题,以使对象显示出来。

编辑#2:您可以在cart-preview.js选项数组中将“新产品”添加为配置,这应该使cart-preview.html可以访问{{products.new}} 。您的options数组在cart-preview.js中应如下所示:

$cart.on('click', event => {
        const options = {
            template: 'common/cart-preview',
            config: {
                products: {
                    new: {
                        limit: 3,
                    },
                },
            },
        }; 

然后,您可以使用cart-preview.html中的把手来打印属性:

{{#each products.new}}
{{name}}
{{/each}}