使用 Stencil Utils 检索产品信息 JSON

Retrieve product information as JSON with Stencil Utils

使用 stencil-utils,我可以检索给定产品 ID 的产品信息。但是,我找不到任何关于如何将信息检索为 JSON 响应而不是 HTML 模板的文档。

现在,我正在使用以下代码:

utils.api.product.getById(
    847,
    {},
    (err, resp) => {
        console.log(resp);
    }
)

我希望我可以在 params 对象中传递一个参数,它将 return 作为 JSON 的响应,这样我就可以提取我需要的关于产品的信息。

所以看起来您可以通过向选项添加 param 对象来传递其他参数。使用 debug: "context",您可以检索页面的整个上下文,然后您可以通过访问 response.product.

来获取产品信息
utils.api.product.getById(
    847,
    { params: { debug: "context" } },
    (err, resp) => {
        // Will print the name of the product.
        console.log(resp.product.title);
    }
)

使用 { params: { debug: "context" } } 在使用 stencil start 创建的本地环境中效果很好,但是一旦您将主题捆绑并上传到实时站点,它就会停止工作。调试工具 debug: "context"debug: "bar" 在生产环境中被禁用。

联系 bigcommerce 支持后,最初将我链接到这个 SO 问题,这似乎是他们提议的工作流程:

您将不得不使用一个虚拟车把模板,包括您需要的变量,并使用 bigcommerce 提供的自定义车把助手,{{json}} - 这似乎只是 运行 JSON.stringify() - 助手定义为 here.

utils.api.product.getById(
    847, { template: 'path/to/template' }, (err, resp) => {
        // Will print the name of the product.
        console.log(resp.product.title);
    });

我成功地将 path/to/template 设置为 custom/template-name 并将车把模板放在 templates/components/custom 文件夹中。我还没有测试过从另一个来源向它传递模板。