问题描述
所以,我正在使用 BigCommerce for wordpress 经营一家在线鞋店,一切都运行良好,除了一件事:我们的客户不喜欢当 MSRP 价格 + 常规价格一起显示时,价值相同.因此,我们编写了一个脚本来比较两个价格并在两个值相等时禁用 MSRP 价格。
这实际上在任何地方都完美工作,除了产品快速查看卡。所以,我认为在脚本触发之前没有加载快速视图。我不知道如何解决它。
我已经尝试在 Quick View Product Card 模板中加载脚本,但这只会破坏整个网站的每个产品网格。
脚本:
/IF MSRP & REGULAR PRICE ARE THE SAME,REMOVE MSRP
jQuery(function($) {
//Pull price data
var divs2 = $('.msrp-fix .bc-product__price',this).html();
var divs = $('.msrp-fix .bc-product__retail-price-value',this).html();
//Pull page path
var pathname = window.location.pathname;
//Fire on all pages except sale page
if (pathname != "/sale/") {
//If MSRP + Price are equal
if (divs == divs2) {
//Apply this style
$( ".bc-product__retail-price" ).css( "display","none" );
// If not,do nothing
} else {
}
}
});
我对这种事情不是很熟悉,所以我不确定我的选择是什么。有没有不同的方法来触发脚本?一种瞄准模态并在打开时开火的方法?希望大家多多指教!
解决方法
Heather 和 BC 在这里!我认为您对在页面加载时触发脚本是正确的,并且快速查看模式可能不会触发页面加载。如果是这种情况,您还需要在加载快速视图模式时触发一个事件来触发脚本。而不是在产品卡本身上这样做,而是在模态的加载上这样做。
-- 更新 --
我与另一位 BC4WP 开发人员联系并进行了讨论,这就是他们在这种情况下为您提供的建议。
总的来说,这是 javascript 而不是钩子。触发器是当有人点击 Quick View Dialog 按钮时,当它被点击时,对话框被渲染并添加到 DOM 中。功能 在发生这种情况的插件中: wp-content/plugins/bigcommerce/assets/js/src/public/buttons/quick-view-dialog.js
initSingleDialog 的触发器在第 69 行左右,当单击快速查看按钮时。考虑在单击触发 initSingleDialog 的同一按钮时触发自定义函数。此函数可以每隔几毫秒进行一次调用,以检查定价类是否存在 - 一旦存在就意味着它已加载。
然后运行当前为您工作的相同检查。由于可以初始化多个对话框并且它们都将保留为 DOM 的一部分,因此可能需要进行一些故障排除,因此您可能需要确保该函数仅检查触发的对话框中的价格类别。
我们假设 .msrp-fix 类可能是针对您的实例自定义的,因此可能需要调整引用类的方式。
希望这会有所帮助!