<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0">

<channel>

<title>Блог Чуденкова Алексея, заметки с тегом: shopify</title>
<link>https://blog.chudenkov.ru/tags/shopify/</link>
<description></description>
<generator>E2 (v3365; Aegea)</generator>

<item>
<title>Shopify: add quantity button to cart</title>
<guid isPermaLink="false">71</guid>
<link>https://blog.chudenkov.ru/all/shopify-add-quantity-button-to-cart/</link>
<comments>https://blog.chudenkov.ru/all/shopify-add-quantity-button-to-cart/</comments>
<description>
&lt;p&gt;Добавить в cart-template.liquid&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;&amp;lt;input type='button' value='-' class='qtyminus' field='updates_{{ item.id }}' /&amp;gt;
&amp;lt;input type=&amp;quot;number&amp;quot; name=&amp;quot;updates[]&amp;quot; id=&amp;quot;updates_{{ item.id }}&amp;quot; class=&amp;quot;quantity&amp;quot; value=&amp;quot;{{ item.quantity }}&amp;quot; /&amp;gt;
&amp;lt;input type='button' value='+' class='qtyplus' field='updates_{{ item.id }}' /&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Добавить в Assets cart.js и его содержание:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;jQuery(document).ready(function(){
    $('.qtyplus').click(function(e){
        e.preventDefault();
        fieldName = $(this).attr('field');
        var currentVal = parseInt($('input[id='+fieldName+']').val());
        if (!isNaN(currentVal)) {
            $('input[id='+fieldName+']').val(currentVal + 1);
        } else {
            $('input[id='+fieldName+']').val(0);
        }
    });
    $(&amp;quot;.qtyminus&amp;quot;).click(function(e) {
        e.preventDefault();
        fieldName = $(this).attr('field');
        var currentVal = parseInt($('input[id='+fieldName+']').val());
        if (!isNaN(currentVal) &amp;amp;&amp;amp; currentVal &amp;gt; 0) {
            $('input[id='+fieldName+']').val(currentVal - 1);
        } else {
            $('input[id='+fieldName+']').val(0);
        }
    });
});&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Не забыть подключить JS с условием если вы находитесь на странице корзины, чтобы не перегружать сайт лишними скриптами.&lt;/p&gt;
</description>
<pubDate>Sat, 01 Feb 2020 13:35:31 +0300</pubDate>
</item>

<item>
<title>Shopify: check user age before shopping</title>
<guid isPermaLink="false">70</guid>
<link>https://blog.chudenkov.ru/all/shopify-check-user-age-before-shopping/</link>
<comments>https://blog.chudenkov.ru/all/shopify-check-user-age-before-shopping/</comments>
<description>
&lt;p&gt;Есть продукты, которые можно продавать в США только лицам старше 21 года, да и то, не во всех штатах. Сам шопифай такого решения разумеется не имеет, поэтому появилось следующее решение, которое работает так: если нет соответствующей куки, то показываем пользователю предупреждение (предупреждение сами верстаем), а если кука есть, то не показываем пользователю предупреждение N-дней. Если пользователю нет 21 года, то отправляем его в магазин лего и куку не присваиваем.&lt;/p&gt;
&lt;p&gt;Я запихал текст предупреждения в переменные, чтобы их можно было просто отредактировать.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;{% capture warning_header %}
THE SITE IS ONLY AVAILABLE TO PERSONS OVER 21 YEARS OF AGE.
{% endcapture %}

{% capture warning_question %}
ARE YOU'RE 21 YEARS OLD?
{% endcapture %}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Далее вёрстка самого предупреждения, который нужно запихать в theme.liquid сразу после body. Рекомендую подключить сниппетом, чтобы не засорять шаблон кучей строк.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;&amp;lt;div class=&amp;quot;warning&amp;quot; id=&amp;quot;warning&amp;quot;&amp;gt;
    &amp;lt;div class=&amp;quot;warning-popup&amp;quot; id=&amp;quot;popup&amp;quot;&amp;gt;
        &amp;lt;div class=&amp;quot;logo&amp;quot;&amp;gt;
            &amp;lt;img src=&amp;quot;https://cdn.shopify.com/s/files/logo.svg&amp;quot; alt=&amp;quot;logo&amp;quot;&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;div&amp;gt;{{ warning_header }}&amp;lt;/div&amp;gt;
        &amp;lt;div class=&amp;quot;warning-question&amp;quot;&amp;gt;{{ warning_question }}&amp;lt;/div&amp;gt;
        &amp;lt;div class=&amp;quot;btns&amp;quot;&amp;gt;
            &amp;lt;a href=&amp;quot;https://lego.com/&amp;quot;&amp;gt;&amp;lt;button class=&amp;quot;btn&amp;quot;&amp;gt;No&amp;lt;/button&amp;gt;&amp;lt;/a&amp;gt;
            &amp;lt;button class=&amp;quot;btn&amp;quot; onclick=&amp;quot;ageCheck()&amp;quot;&amp;gt;Yes&amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Далее сам скрипт, логику работы описал выше.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;&amp;lt;script&amp;gt;
 function ageCheck() {
     var days = 14; //количество дней, через которое спросим возраст снова
     var date = new Date();
     date.setTime(date.getTime()+(days*24*60*60*1000));
     var expires = &amp;quot;; expires=&amp;quot;+date.toGMTString();
     document.cookie = 'isAnAdult=true;'+expires+&amp;quot;; path=/&amp;quot;;
     location.reload();
   };
  function readCookie(name) {
    var nameEQ = name + &amp;quot;=&amp;quot;;
    var ca = document.cookie.split(';');
    for(var i=0;i &amp;lt; ca.length;i++) {
      var c = ca[i];
      while (c.charAt(0)==' ') c = c.substring(1,c.length);
      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
  };
  var isAnAdult = readCookie('isAnAdult');
  if (isAnAdult) {
    document.write(&amp;quot;&amp;lt;style&amp;gt; #warning { display: none; overflow:hidden; }&amp;lt;/style&amp;gt;&amp;quot;);
  };
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
<pubDate>Fri, 31 Jan 2020 03:26:16 +0300</pubDate>
</item>


</channel>
</rss>