Сниппет 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 пользователя (покупателя).