【问题标题】:Shopify Liquid: How to only show a compare at price for a product variant if the compare at price exists?Shopify Liquid:如果存在价格比较,如何仅显示产品变体的价格比较?
【发布时间】:2012-08-21 20:09:35
【问题描述】:

我正在尝试显示某些产品变体的价格比较,但我无法弄清楚如何仅在变体的价格比较大于零时才显示它。它以 0.00 美元的价格显示比较。

它使用 javascript 来动态更新价格。这是代码:

<script type="text/javascript">
<!--
// mootools callback for multi variants dropdown selector
var selectCallback = function(variant, selector) {
if (variant && variant.available == true) {
// selected a valid variant
$('purchase').removeClass('disabled'); // remove unavailable class from add-to-cart button
$('purchase').disabled = false;           // reenable add-to-cart button
$('price-field').innerHTML = Shopify.formatMoney(variant.price, "{{shop.money_with_currency_format}}");  // update price field
$('compare-price').innerHTML = Shopify.formatMoney(variant.compare_at_price, "{{shop.money_with_currency_format}}");  // update compare at price
} else {
// variant doesn't exist
$('purchase').addClass('disabled');      // set add-to-cart button to unavailable class
$('purchase').disabled = true;              // disable add-to-cart button      
$('price-field').innerHTML = (variant) ? "Sold Out" : "Unavailable"; // update price-field message
}
};

// initialize multi selector for product
window.addEvent('domready', function() {
new Shopify.OptionSelectors("product-select", { product: {{ product | json }}, onVariantSelected: selectCallback }); 
});
-->
</script>

当我有一个原始的&lt;div id="compare-price"&gt;&lt;/div&gt; 时,脚本可以正常工作。每个变体的价格动态比较被添加到该 div。但是当没有比较价格时,它仍然会增加 0.00 美元。

当变体没有价格比较时,如何隐藏 div?我正在尝试做这样的事情:

{% if product.variant.compare_at_price %}
    <div id="compare-price"></div>
{% endif %}

有人知道怎么做吗?

【问题讨论】:

    标签: javascript mootools shopify liquid


    【解决方案1】:

    好的,这就是我的工作。可能不是最优雅的解决方案,但它正在工作:

    <script type="text/javascript">
    <!--
    // mootools callback for multi variants dropdown selector
    var selectCallback = function(variant, selector) {
    if (variant && variant.available == true) {
    // selected a valid variant
    $('purchase').removeClass('disabled'); // remove unavailable class from add-to-cart button
    $('purchase').disabled = false;           // reenable add-to-cart button
    $('price-field').innerHTML = Shopify.formatMoney(variant.price, "{{shop.money_with_currency_format}}");  // update price field
    if(variant.compare_at_price > 0.0) {
    $('compare-price').innerHTML = Shopify.formatMoney(variant.compare_at_price, "{{shop.money_with_currency_format}}");  // update compare at price
    } else {
    $('compare-price').innerHTML = "";
    }
    } else {
    // variant doesn't exist
    $('purchase').addClass('disabled');      // set add-to-cart button to unavailable class
    $('purchase').disabled = true;              // disable add-to-cart button      
    $('price-field').innerHTML = (variant) ? "Sold Out" : "Unavailable"; // update price-field message
    }
    };
    
    // initialize multi selector for product
    window.addEvent('domready', function() {
    new Shopify.OptionSelectors("product-select", { product: {{ product | json }}, onVariantSelected: selectCallback }); 
    });
    -->
    </script>
    

    【讨论】:

      【解决方案2】:

      为什么不在回调中检查价格比较?您已收到变体,因此您可以检查价格......并适当地处理它们。

      if(variant.compare_at_price > 0.0) {
          $('compare-price').show().innerHTML = Shopify.formatMoney(variant.compare_at_price, "{{shop.money_with_currency_format}}");
      } else {
          $('compare-price').hide();
      }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-04
      相关资源
      最近更新 更多