Примеры применения Liquid — различия между версиями

Материал из Insales Wiki
Перейти к: навигация, поиск
(Проверка количества товара на складе при добавлении в корзину)
(Вывод товары из произвольной категории в любом из шаблонов сайта)
Строка 19: Строка 19:
  
  
=Вывод товары из произвольной категории в любом из шаблонов сайта=
+
=Задать число товаров на странице витрины при просмотре=
 +
 
 +
Можно указать число товаров на странице витрины при просмотре:
 +
 
 +
В шаблоне "Категория" в строчках:
 +
<pre>
 +
<ul>
 +
  {% paginate products by 9 %}
 +
  <table class="items">
 +
 
 +
  {% tablerow product in products cols: 3 %}
 +
</ul>
 +
</pre>
 +
Измените числа 9 и 3 на нужные вам, первое число - это общее число товаров на странице, 3 - число колонок.
 +
<blockquote>
 +
<i>Из FAQ</i>
 +
</blockquote>
 +
 
 +
=Вывод товаров из произвольной категории в любом из шаблонов сайта=
  
 
В качестве примера создадим отдельную скрытую категорию на сайте c путем /collection/special
 
В качестве примера создадим отдельную скрытую категорию на сайте c путем /collection/special

Версия 20:06, 22 февраля 2010

Кнопка «под заказ»

Можно показывать закончившийся товар на сайте, но при этом оповестить покупателей о том, что его можно получить «под заказ». Это нужно реализовывать в шаблоне. Например, в одном случае должна выводиться одна кнопка «Купить», а в другом случае – «Под заказ»:

     {% if product.available == true %}
          <input src="{{ 'buy.gif' | asset_url }}" type="image" />
     {% else %}
          <input src="{{ 'wait.gif' | asset_url }}" type="image" />
     {% endif %}

Такая логика работы поддерживается в стандартном шаблоне «Техника». В остальных шаблонах и в собственном дизайне можно её добавить, используя приведённый выше кусочек кода (естественно адаптировав его под себя).

Предложено в статье Какие товары показывать на сайте?


Задать число товаров на странице витрины при просмотре

Можно указать число товаров на странице витрины при просмотре:

В шаблоне "Категория" в строчках:

<ul>
  {% paginate products by 9 %}
  <table class="items">

  {% tablerow product in products cols: 3 %}
</ul> 

Измените числа 9 и 3 на нужные вам, первое число - это общее число товаров на странице, 3 - число колонок.

Из FAQ

Вывод товаров из произвольной категории в любом из шаблонов сайта

В качестве примера создадим отдельную скрытую категорию на сайте 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 г.