Примеры применения Liquid
Содержание
Кнопка «под заказ»
Можно показывать закончившийся товар на сайте, но при этом оповестить покупателей о том, что его можно получить «под заказ». Это нужно реализовывать в шаблоне. Например, в одном случае должна выводиться одна кнопка «Купить», а в другом случае – «Под заказ»:
{% if product.available == true %} <input src="{{ 'buy.gif' | asset_url }}" type="image" /> {% else %} <input src="{{ 'wait.gif' | asset_url }}" type="image" /> {% endif %}
Такая логика работы поддерживается в стандартном шаблоне «Техника». В остальных шаблонах и в собственном дизайне можно её добавить, используя приведённый выше кусочек кода (естественно адаптировав его под себя).
Предложено в статье Какие товары показывать на сайте?
Вывод товары из произвольной категории в любом из шаблонов сайта
В качестве примера создадим отдельную скрытую категорию на сайте c путем /collection/special
В эту категорию мы будем добавлять товары, которые хотим вывести на главной странице. Напомним, что на сайте один товар может быть в нескольких категориях, поэтому для вывода уже существующих товаров нужно всего лишь разместить их и в этой спец-категории.
Теперь добавим код для вывода товаров в шаблон главной страницы. В самом простейшем виде:
{% for product in collections.special.products %} {{ product.title }} {% endfor %}
В качестве идентификатора категории используется ее пермалинк (постоянная ссылка), который мы указали в пути, в данном случае «special». Но этот пример выведет всего лишь список названий товаров, мы же хотим вывести полноценный список товаров с картинками, краткими описаниями и кнопками «Купить» и «Подробнее». Для этого на примере шаблона «Зеленый лист» скопируем код из шаблона «Категория» и слегка модифицируем его:
<div class="view-catalog"> <TABLE id="products-in-collection"> {% tablerow product in collections.special.products cols: 3 %} <div class="node node-teaser" style="height: 300px;"> <div class="node-inner" id="product_{{ product.id }}" style="height: 230px; overflow: hidden;"> <div class="img"><a href="{{ product.url }}"><img src="{{ product.first_image.thumb_url }}" alt="[IMG]" title="{{ product.title | escape }}" /></a></div> <h3 class="title"><a href="{{ product.url }}">{{ product.title | escape }}</a></h3> <div class="content"> <p class="short-description">{{ product.short_description | truncate:100 }}</p> </div> </div> <div class="buyzone"> <div class="price">{{ product.sale_price | money }}</div> {% if product.variants.size == 1 %} <form action="{{ cart_url }}" method="post" id="order"> <input type="hidden" name="variant_id" value="{{ product.variants.first.id }}"> <input type="submit" class="buy" value="" title="Купить"/> <div class="readmore"><a href="{{ product.url }}">подробнее...</a></div> </form> {% else %} <a href="{{ product.url }}" class="buy" title="Купить"></a> <div class="readmore"><a href="{{ product.url }}">подробнее...</a></div> {% endif %} <BR class='clear'> </div> <BR class="clear"> </div> {% endtablerow %} </TABLE> </div>
Мы убрали постраничный вывод и вывод текущей категории. Вставляем его в шаблон главной страницы сразу после блока:
<div class="content">{{ page.content }}</div>
Таким же образом можно выводить товары из произвольной категории в любом из шаблонов сайта.
Предложено в статье Вывод товаров на главной странице
Проверка количества товара на складе при добавлении в корзину
Можно сделать проверку количества товара на складе при добавлении в корзину на уровне шаблона, для блокирования заказа, более имеющегося количества. Назначим свои переменные - "есть нехватка" и "предмет нехватки". Количество товара в модификации известно, количество его помещенного в корзину - тоже. В шаблоне Корзины (меню Сайт-Дизайн-Редактор) дополним код с кнопкой заказа.
В теме "Техника" блок кнопок оформления заказа выглядит так:
<div class="cart_reserve"> <a href="#" class="cart_update" id="cart_update" style="display:none"><img src="{{ 'recalc.gif' | asset_url }}" /></a> <input id="create_order" type="submit" value="" name="make_order" /> </div>
Заменим предыдущий кусок на этот:
{% assign nehvatka = false %} {% for item in cart.items %}{% if item.variant.quantity < item.quantity %} {% assign nehvatka = true %}{% assign vinovnik = item.title %} {% endif %}{% endfor %} {% if nehvatka %} <p style="margin: 20px;">Извините!<br />На складе недостаточно товара "<strong>{{ vinovnik }}</strong>". <br />Попробуйте уменьшить количество в Вашем заказе.</p> <div class="cart_reserve"> <a href="#" class="cart_update" id="cart_update" style="display:none"><img src="{{ 'recalc.gif' | asset_url }}" /></a> </div> {% else %} <div class="cart_reserve"> <a href="#" class="cart_update" id="cart_update" style="display:none"><img src="{{ 'recalc.gif' | asset_url }}" /></a> <input id="create_order" type="submit" value="" name="make_order" /> </div> {% endif %}
Теперь, если какого-то товара заказано больше чем есть на складе, умный код предупредит об этом и уберет кнопку чекаута.
Если тема шаблона - не "Техника", то изменяете блокиПредложено пльзователем Victor на форуме 21.02.2010 г.