是否可以在BigCommerce中为自定义页面动态获取和插入产品价格?
我正在创建一个详细介绍BigCommerce中特定产品的自定义页面,我希望能够从系统中获取每个产品的产品价格,而不是在页面上手动设置它。
这样,如果产品的价格发生变化,价格当然会在自定义页面上动态变化。
我知道BigCommerce使用%%GLOBAL_ProductPrice%%
来调用产品页面和整个网站的其他代码中的价格,但无法弄清楚如何在自定义页面上使用此功能列出的产品。
答案 0 :(得分:0)
我非常喜欢@ tim-diztinct的答案,如果可以的话我会建议你这样做。
但除此之外,替代/困难的方法是使用JavaScript直接从实时产品页面获取价格。
在BigCommerce中,您可以使用以下两种标准化网址之一快速访问产品页面:
1. store_url.com/products.php?product=product name here
2. store_url.com/products.php?productId=productIdHere
(我的首选)
那么如果您想从产品页面获取实时价格,您可以对产品页面进行Ajax调用,并解析内容以获取价格......
/**
* Makes an HTTP GET to an external product page
* and parses that page for the product's current price.
* @param pid <int> - The product ID to search for.
* @return Promise - Resolved with product price, reject on fail.
*/
function getProductPrice(pid) {
// Ensure pid parameter set:
if (typeof pid == 'undefined') {
throw new Error('Missing product ID.');
} else {
// Ensure pid is a non decimal number:
pid = parseInt(pid);
}
// Return promise to contain the results...
return new Promise(function(resolve, reject) {
// Make an Ajax GET request to the product page:
$.get("site_url_here.com/products.php?productId=" +pid, function(res) {
// If request successful:
if (res) {
// The content for the product page is loaded in 'res'.
// The Price should be contained within a meta element within a div containing the class name 'Value'.
// Below, we parse the html response for the meta element containing the price...
resolve($(res).find('.Value > meta'').attr('content'));
// Else request failed:
} else {
reject(false);
}
});
});
}
//** Calling the above function **//
getProductPrice(25).then(function(price) {
// Do something with the price (insert it into your custom page?)
alert('The product price is ' +price);
}).catch(function(e) {
console.log('Error getting product price - ', e);
});
我的最后一条建议是让您有所收获,因为我认为您的自定义页面上会有多个产品,因此您需要获得每种产品的价格。
我的建议是将产品ID包含在与每个产品相关的某个位置(例如ID或隐藏元素)。将所有ID解析为数组,以便forEach值可以调用getProductPrice函数,然后将其注入自定义页面中负责显示价格的元素!
奖励:将价格保存在每隔X个时间间隔到期的cookie中,并从那里读取重复的客户端请求。
/