Сниппет Shopkeeper

Самая новая документация идет в комплекте с SHK: /docs/doc_ru.txt.

Параметры сниппета

  • lang - Язык (по умолчанию `ru`);
  • prodCont - CSS-селектор элемента, внутри которого находится информация о товаре (по умолчанию `div.shk-item`);
  • tplPath - Путь до папки с чанками сниппета (по умолчанию `core/components/shopkeeper/elements/chunks/ru/`);
  • cartTpl - Шаблон корзины (по умолчанию `@FILE shopCart.tpl`);
  • cartRowTpl - Шаблон строки корзины (по умолчанию `@FILE shopCartRow.tpl`);
  • additDataTpl - Шаблон для доп. параметров в корзине (по умолчанию `@FILE additData.tpl`);
  • orderDataTpl - Шаблон для содержимого заказа (по умолчанию `@FILE orderData.tpl`);
  • cartHelperTpl - Шаблон для всплывающего блока (хелпера) (по умолчанию берётся из shopkeeper.js);
  • flyToCart - Эффект добавления товара в корзину - helper | image | nofly (по умолчанию `helper`);
  • priceTV - Имя TV параметра цены (по умолчанию `price`);
  • style - Стиль корзины (по умолчанию `default`);
  • currency - Валюта по умолчанию (по умолчанию `руб.`);
  • noCounter - Не показывать стрелки изменения кол-ва товара (по умолчанию `0`);
  • noLoader - Не показывать прелоадер (по умолчанию `0`);
  • orderFormPage - ID страницы с формой оформления заказа (по умолчанию `2`);
  • goToOrderFormPage - Переходить на страницу оформления заказа сразу после добавлении товара в корзину (по умолчанию `0`);
  • counterField - Добавить ко всем полям кол-ва товара стрелки больше/меньше (по умолчанию `0`);
  • excepDigitGroup - Разделять числа цен в корзине на разрядым (по умолчанию `1`);
  • changePrice - При изменении параметров с ценой - изменяется цена товара, а индекс с плюсом не появляется (по умолчанию `0`);
  • allowFloatCount - Разрешить покупать дробное число товара (по умолчанию `0`);
  • noJavaScript - Работать без JavaScript (по умолчанию `0`);
  • noJQuery - Не подгружать jquery.js (по умолчанию `0`);
  • noConflict - Включить режим noConflict для jQuery. Используется, если на сайте уже используется другая JS-библиотека (не jQuery) (по умолчанию `0`);
  • animCart - Анимация изменения высоты корзины (по умолчанию `1`);
  • hideOn - Не выводить корзину на страницах (id через запятую) (по умолчанию `0`);
  • debug - Включить режим отладки (по умолчанию `0`);

Если используется Ajax, параметры сниппета нужно указывать в его свойствах в админке.

Шаблоны и плейсхолдеры

cartRowTpl

Шаблон (чанк) строки с информацией о товаре в корзине

[[+name]] - название товара;

[[+id]] - ID товара;

[[+link]] - ссылка на страницу товара;

[[+addit_data]] - дополнительные параметры товара;

[[+price]] - цена товара;

[[+price_total]] - общая цена товара, включая доп. параметры;

[[+price_count]] - цена товара, умнженная на кол-во;

[[+currency]] - валюта товара;

[[+count]] - количество товара;

[[+this_page_url]] - адрес текущей страницы;

[[+index]] - порядковый номер товара в корзине от нуля;

[[+num]] - порядковый номер товара в корзине от единицы;

[[+even]] - четный или нечетный товар (выводит 1 или 0);

[[+comma]] - запятая (выводится между товарами);

[[+url_del_item]] - ссылка на удаление товара из корзины;

[[+available]] - доступен (available) или нет (notavailable) товар для покупки;

[[+s]] - если товар не доступен для покупки, выводит открывающий тег <s>;

[[+/s]] - если товар не доступен для покупки, выводит закрывающий тег </s>;

[[+любой TV]] - любой TV-параметр, например ;

[[+shk_любой TV]] - любой доп. параметр, выбранный при добавлении товара в корзину (из [[+addit_data]]), например [[+shk_param1]].

cartTpl

Шаблон (чанк) корзины

[[+inner]] - список товаров (по шаблону cartRowTpl);

[[+price_total]] - общая цена товаров в корзине;

[[+items_total]] - общее число товаров в корзине;

[[+items_unique_total]] - общее число уникальных товаров в корзине;

[[+plural]] - слово "товар" во множественном числе в зависимости от числа выбранных товаров;

[[+this_page_url]] - адрес текущей страницы;

[[+empty_url]] - ссылка для очистки корзины;

[[+order_page_url]] - ссылка на страницу оформления заказа;

[[+currency]] - валюта товаров;

[[+plugin]] - вывод плагина с событием "OnSHKcartLoad".

additDataTpl

Шаблон для доп. параметров в корзине

[[+param]] - название параметра и цена;

[[+name]] - название параметра;

[[+price]] - цена параметра.

orderDataTpl (в сниппете) и order_data_tpl (в настройках компонента)

Шаблон для содержимого заказа (в письме и компоненте)

[[+price_total]] - общая цена товаров в корзине;

[[+items_total]] - общее число товаров в корзине;

[[+items_unique_total]] - общее число уникальных товаров в корзине;

[[+currency]] - валюта товаров;

[[+loop]], [[+end_loop]] - начало и конец строки данных товаров (цикл). Внутри доступны все плейсхолдеры из cartRowTpl.

emailTpl

Шаблон письма о заказе сниппета FromIt

[[+orderID]] - ID заказа;

[[+orderData]] - список товаров в заказе по шаблону "orderDataTpl";

[[+date]] - дата и время заказа.

Дополнительные параметры товаров

Товарам можно назначать параметры, которые покупатель сможет выбрать перед добавлением товара в корзину.
Параметры выводятся в виде выпадающего списка - shk_select, радио кнопок - shk_radio или флажков (чекбоксов) - shk_checkbox. Выбрать тип вывода можно в настройках TV-параметра на вкладке "Параметры вывода".

Значения параметров (на странице редактирования ресурса (товара)) вводятся по такому принципу:
название параметра 1==цена 1||название параметра 2==цена 2||...

Можно ввести цену параметра со знаком умножения: Вес==*0.5||Вес==*1 В этом случае цена товара будет умножена на цену параметра.

В чанке сниппета getResources параметры выводятся как плейсхолдеры: [[+tv.param1]].
На странице товара нужно изменить ID параметра. Сделать это можно с помощью фильтра replace:
[[*param1:replace=`[[+id]]==[[*id]]`]]

Контроллер параметров вывода: core/model/modx/processors/element/tv/renders/mgr/properties/
Параметры вывода: manager/templates/default/element/tv/renders/properties/
Контроллеры вывода: core/model/modx/processors/element/tv/renders/web/output/

Вывод каталога товаров

Для вывода товаров можно использовать сниппет getResources. Для постраничной навигации - сниппет getPage.

Пример вывода товаров из контекста "catalog":
[[!getPage?
&elementClass=`modSnippet`
&element=`getResources`
&context=`catalog`
&tplPath=`[[++core_path]]components/shopkeeper/elements/chunks/ru/`
&tpl=`@FILE product1.tpl`
&includeTVs=`1`
&processTVs=`1`
&limit=`10`
&sortby=`id`
&sortbyTVType=`integer`
&pageVarKey=`page`
&pageFirstTpl=`<li class="control"><a [[+classes]] href="[[+href]]">Первая</a></li>`
&pageLastTpl=`<li class="control"><a [[+classes]] href="[[+href]]">Последняя</a></li>`
]]
<br class="clear" />
<ul class="pages">
[[!+page.nav]]
</ul>

Отправка заказа на почту и в компонент управления заказами Shopkeeper

Для отправки заказа на почту и в компонент управления заказами используется сниппет FormIt и сниппет (hook) shk_fihook.

Пример использования:

[[!Shopkeeper@order_page?propertySetName=`order_page`]]

[[!FormIt?
&hooks=`spam,shk_fihook,email,FormItAutoResponder,redirect`
&submitVar=`order`
&emailTpl=`shopOrderReport`
&fiarTpl=`shopOrderReport`
&emailSubject=`В интернет-магазине "[[++site_name]]" сделан новый заказ`
&fiarSubject=`Вы сделали заказ в интернет-магазине "[[++site_name]]"`
&emailTo=`andchir@gmail.com`
&redirectTo=`13`
&validate=`address:required,fullname:required,email:email:required,phone:required`
&errTpl=`<br /><span class="error">[[+error]]`
]]

[[!$shopOrderForm]]

чанк shopOrderForm: core/components/shopkeeper/elements/chunks/ru/shopOrderForm.tpl

чанк shopOrderReport: core/components/shopkeeper/elements/chunks/ru/shopOrderReport.tpl

После отправки заказа на любой странице доступны плейсхолдеры с данными этого заказа:

shk.id - ID заказа;
shk.price - общая цена заказа;
shk.currency - валюта заказа;
shk.date - дата и аремя заказа в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС;
shk.email - адрес эл.почты покупателя;
shk.phone - номер телефона покупателя;
shk.delivery - способ доставки;
shk.payment - способ оплаты;
shk.userid - ID пользователя (покупателя).