Advertisement
ikai2

display variant title

Aug 20th, 2022 (edited)
884
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {% for variant in product.variants %}
  2. {% if product.selected_or_first_available_variant.id == variant.id %}
  3. <div class="variant-title">{{ variant.title }}</div>
  4. {% endif %}
  5. {% endfor %}
  6.  
  7. window.addEventListener("load", () => {
  8.     const products = document.querySelectorAll('[data-pf-type="ProductBox"]');
  9.     for (let i = 0; i < products.length; i++) {
  10.     const selects = products[i].querySelectorAll(
  11.         ".pf-option-swatches div[data-option-name]"
  12.     );
  13.     selects.forEach((sel) => {
  14.         sel.addEventListener("click", () => {
  15.             setTimeout(() => {
  16.                 const variantId = products[i].querySelector(
  17.                     '[data-pf-type="ProductVariantSwatches"] input'
  18.                 ).value;
  19.                 const productId = products[i]
  20.                     .querySelector('[data-pf-type="ProductVariantSwatches"] input')
  21.                     .getAttribute("data-product-id");
  22.                 const variant = __pageflyProducts[productId].variants.filter(
  23.                     (item) => item.id === parseInt(variantId)
  24.                 );
  25.               let variantTitle = variant[0].title;
  26.               const atc = sel.closest('[data-pf-type="ProductBox"]').querySelector('[data-pf-type="ProductATC"]');
  27.               const unavailableVariant = atc.textContent.includes("Unavailable");
  28.               if (unavailableVariant && atc.disabled) {
  29.                   document.querySelector(".variant-title").setAttribute("unavailable", "")
  30.                   products[i].querySelector(".variant-title").innerText = atc.textContent;
  31.               } else {
  32.                   document.querySelector(".variant-title").removeAttribute("unavailable", "")
  33.                   products[i].querySelector(".variant-title").innerText = variantTitle;
  34.               }
  35.                   }, 0);
  36.         });
  37.     });
  38. }
  39. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement