使用 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
文件夹中。我还没有测试过从另一个来源向它传递模板。
使用 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
文件夹中。我还没有测试过从另一个来源向它传递模板。