Dustin Lee
Dustin Lee

Reputation: 59

Shopify Option Selectors Not Changing Price

I'm trying to fix my option selection because previously this company had Bold Installed and it messed with our option selection. I've got the Option selection to show but EXACTLY how I want it but it works for now... But the price will not change no matter what I do! Can anyone help me figure what I'm missing here?

The first code snippet is contained in my 'product-form.liquid' snippet

    <form action="/cart/add" method="post" enctype="multipart/form-data" id="AddToCartForm" class="form-vertical">

    <select name="id" id="ProductSelect" class="product-single__variants">
                {% for variant in product.variants %}
                  {% if variant.available %}

                    <option {% if variant == product.selected_or_first_available_variant %} selected="selected" {% endif %} data-sku="{{ variant.sku }}" value="{{ variant.id }}">{{ variant.title }} - {{ variant.price | money_with_currency }}</option>

                  {% else %}
                    <option disabled="disabled">
                      {{ variant.title }} - {{ 'products.product.sold_out' | t }}
                    </option>
                  {% endif %}
                {% endfor %}
              </select>
      {% if settings.product_swatches %}
        {% if product.available and bold_variants_size > 1 %}
          {% for option in product.options %}
            {% include 'swatch' with option %}
          {% endfor %}
        {% endif %}
      {% endif %}
      {% if settings.product_different_swatches %}
        {% include 'different_product_swatches' with product.type, titlee: settings.product_different_swatches_title %}
      {% endif %}

     <div class="formWrap">
      <div class="price-variant-wrap">
        <span class="priceText">PRICE:</span>
         <span class="visually-hidden">{{ 'products.general.regular_price' | t }}</span>
              <span id="ProductPrice" class="h2" itemprop="price" content="{{ current_variant.price | divided_by: 100.00 }}">
                {{ current_variant.price | money }}
              </span>

              {% if product.compare_at_price_max > product.price %}
                <span class="visually-hidden">{{ 'products.general.sale_price' | t }}</span>
                <p id="ComparePrice">
                  {{ 'products.product.compare_at' | t }} {{ current_variant.compare_at_price | money }}
                </p>
              {% endif %}
      </div>

      {% assign isFreeGift=false %}
      {% for tag in product.tags %}
        {% if tag =='SECOMAPP_FREEGIFT'%}
          {% assign isFreeGift=true %}
        {% endif %}
      {% endfor %}
      {% if isFreeGift == false %}
      <div class="product-bottom-wrap">

        <div class="fancy_btn_wrap">
          <div class="product-single__add-to-cart">
          {% if settings.prod_quantity == 'plus-minus' %}
              {% include 'quantity' %}
          {% elsif settings.prod_quantity == 'number' %}
            <label for="Quantity" class="quantity-selector">{{ 'products.product.quantity' | t }}</label>
            <input type="number" id="Quantity" name="quantity" value="1" min="1" class="quantity-selector">
          {% endif %}
            <div class="submit-container">
              <button type="submit" name="add" id="AddToCart" data-price="{{ current_variant.price | money_without_currency }}" class="btn {{settings.product_page_button_type}} ">
                <input type="hidden" name="return_to" value="back" />
                <span id="AddToCartText">{{ 'products.product.add_to_cart' | t }}</span>
              </button>
            </div>
          </div>
        </div>
      </div>
       {% endif %}
    </div>
        <div id="shopmessage-checkbox" class="fbmessage"></div>
    </form>
    <div class="sca-fg-cat-list" style="display: none;" name="secomapp-fg-data-{{ product.id }}"> </div>

This code below is in my product.template

    <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
                <meta itemprop="priceCurrency" content="{{ shop.currency }}">

                <link itemprop="availability" href="http://schema.org/{% if product.available %}InStock{% else %}OutOfStock{% endif %}">
                {% if settings.product_description_location == 'above_form' %}
                <div class="product-description rte" itemprop="description">

                 {% if product.description contains '<!-- split -->' %} 
                   {{ description[0] }} 
                 {% else %} 
                   {{ product.description }} 
                 {% endif %}
                </div>
              {% endif %}
                {% comment %}
                  ID addToCartForm is a selector for the ajax cart plugin
                {% endcomment %}
                {% include 'product-form' %}
                {% include 'addthis' %}

              </div>

    <script>
    var selectCallback = function(variant, selector) {
      {% if settings.product_swatches %}
      // BEGIN SWATCHES
      if (variant) {
        var form = jQuery('#' + selector.domIdPrefix).closest('form');
        for (var i=0,length=variant.options.length; i<length; i++) {
          var radioButton = form.find('.swatch[data-option-index="' + i + '"] :radio[value="' + variant.options[i] +'"]');
          if (radioButton.size()) {
            radioButton.get(0).checked = true;
          }
        }
      }
      // END SWATCHES
      {% endif %}
      timber.productPage({
        money_format: "{{ shop.money_format }}",
        variant: variant,
        selector: selector
      });
    };

    jQuery(function($) {
      new Shopify.OptionSelectors('productSelect', {
        product: {{ product | 'json' }},
        onVariantSelected: selectCallback,
        enableHistoryState: false
      });

      // Add label if only one product option and it isn't 'Title'. Could be 'Size'.
      {% if product.options.size == 1 and product.options.first != 'Title' %}
        $('.selector-wrapper:eq(0)').prepend('<label for="productSelect-option-0">{{ product.options.first | escape }}</label>');
      {% endif %}

      // Hide selectors if we only have 1 variant and its title contains 'Default'.
      {% if bold_variants_size == 1 and bold_selected_or_first_available_variant.title contains 'Default' %}
        $('.selector-wrapper').hide();
      {% endif %}
    });

    {% unless product.title == 'Gift Card' %}
      var checkExist = setInterval(function() {
        if ($('.spr-badge .spr-badge-caption').length) {
          var rating = $('.spr-starrating.spr-summary-starrating').html();
          var noOfRatings = $('.spr-summary-caption').html();
          var ratingHolder = $('.ratingHolder');
          ratingHolder.prepend(noOfRatings);
          ratingHolder.prepend(rating);
          ratingHolder.click(function(){
            $('#product_tabs .tab_3 a').trigger('click');
            $('html, body').animate({
              scrollTop: $("#product_tabs").offset().top - $('.site-header').outerHeight() - 30
            }, 1000);
          });
          clearInterval(checkExist);
        }
      });
    {% endunless %}
    </script>

Not quite sure what's happening here pretty much the code from the live code but bold is removed and the is different. the 'productSelect' is lower cased on live code as oppose to it being uppercase which actually makes the 'select' show.

Thanks!

Upvotes: 1

Views: 2095

Answers (1)

David Lazar
David Lazar

Reputation: 11427

If you go back to the liquid before you used Bold, you will be in a good place. Your code should just work. From that point, you can customize to make it as you wish today. Shopify has a primitive support for going back in time. Have you tried that? Or getting a copy of your theme from your theme supplier before Bold? That would also give you clean working Liquid.

Upvotes: 1

Related Questions