Инструменты пользователя

Инструменты сайта


shopkeeper_snippet

Внимание! Самая полная документация идет в комплекте с компонентом Shopkeeper - /core/components/shopkeeper/docs/doc_ru.txt.

Сниппет Shopkeeper

Сниппет Shopkeeper - это один из основных компонентов магазина 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`). Для отключения в значении указать «0» (без кавычек);
  • currency - Валюта по умолчанию (по умолчанию `руб.`);
  • noCounter - Не показывать стрелки изменения кол-ва товара (по умолчанию `0`);
  • noLoader - Не показывать прелоадер (по умолчанию `0`);
  • orderFormPage - ID страницы с формой оформления заказа (по умолчанию `2`);
  • goToOrderFormPage - Переходить на страницу оформления заказа сразу после добавлении товара в корзину (по умолчанию `0`);
  • counterField - Добавить ко всем полям кол-ва товара стрелки больше/меньше (по умолчанию `0`);
  • counterFieldCart - Добавить ко всем полям кол-ва товара в корзине стрелки больше/меньше (по умолчанию `0`);
  • excepDigitGroup - Разделять числа цен в корзине на разряды (по умолчанию `1`);
  • changePrice - При изменении параметров с ценой - изменяется цена товара, а индекс с плюсом не появляется (по умолчанию `0`);
  • allowFloatCount - Разрешить покупать дробное число товара (по умолчанию `0`);
  • additParamSource - ID источника доп.параметров (ресурс MODX). Полезно, если у всех товаров значения доп.параметра одинаковые (например размер). Создать ресурс, добавить TV параметр с типом ввода «param-edit». Для всех товаров значения будут браться из этого ресурса. Выводить параметр можно с помощью сниппета «getResourceField».
  • noJavaScript - Работать без JavaScript (по умолчанию `0`);
  • noJQuery - Не подгружать jQuery (по умолчанию `0`). Если на сайте уже подключена jQuery, это значение нужно установить равным 1;
  • noConflict - Включить режим noConflict для jQuery. Используется, если на сайте уже используется другая JS-библиотека (не jQuery) (по умолчанию `0`);
  • animCart - Анимация изменения высоты корзины (по умолчанию `1`);
  • hideOn - Не выводить корзину на страницах (id через запятую) (по умолчанию `0`);
  • debug - Включить режим отладки (по умолчанию `0`);
  • TVsaveList - список имён TV-параметров которые нужно сохранить в БД при отправке заказа. Если пусто, сохраняются все TV.
  • processParams - Переводить доп. параметры при добавлении в корзину в формат типа вывода (по умолчанию `0`);
  • fromParentList - список полей через запятую, которые нужно добавить товарам от родителей. Например «pagetitle,image» - в корзине будут доступны плейсхолдеры [[+parent.pagetitle]] и [[+parent.image]]. По умолчанию выключено.
  • fromParentHeight - сколько уровней родителей учитывать при использовании параметра «fromParentList». Например первый уровень: [[+parent.pagetitle]], второй: [[+parent2.pagetitle]]. По умолчанию 1.
  • className - Имя класса (объекта) товаров (можно несколько через запятую). См. раздел «Товары из отдельной таблицы».
  • packageName - Имя пакета класса товаров (можно несколько через запятую). См. раздел «Товары из отдельной таблицы».

Внимание! Если вы используете AJAX-корзину (а это, скорее всего, так), параметры должны обязательно передаваться сниппету в виде набора параметров (property set) и настраиваться в менеджере. Передавать параметры для AJAX-корзины непосредственно в вызове сниппета нельзя!

[[!Shopkeeper@cart_catalog?propertySetName=`cart_catalog`]] // правильно

[[Shopkeeper? &noJavascript=`1` &cartRowTpl=`myCustomCart`]] // так можно делать только для корзин без Javascript! (noJavaScript=`1`)

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

cartRowTpl

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

  • [[+name]] - название товара;
  • [[+id]] - ID товара;
  • [[+link]] - ссылка на страницу товара;
  • [[+addit_data]] - дополнительные параметры товара;
  • [[+price]] - цена товара;
  • [[+price_total]] - общая цена товара, включая доп. параметры;
  • [[+price_count]] - цена товара, умноженная на кол-во;
  • [[+price_count_total]] - общая цена товара с параметрами, умноженная на кол-во;
  • [[+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]] - дата и время заказа.

Плейсхолдеры на странице

На странице, где вызывается сниппет Shopkeeper, создаются плейсхолдеры:

  • [[+shk.price_total]] - Общая цена заказа.
  • [[+shk.items_total]] - Число товаров в корзине.
  • [[+shk.items_unique_total]] - Число уникальныз товаров в корзине.
  • [[+shk.currency]] - Валюта.

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

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

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

Если параметр бесплатный, нужно указать нулевую цену. В настройках TV (доп.параметра) есть параметр для цены по умолчанию чтобы не писать «0» каждый раз.

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

Для удобного добавления доп.параметров в админке нужно использовать тип ввода «param_edit».

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

[[*param1:replace=`[[+id]]==[[*id]]`]]

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

Для вывода товаров можно использовать сниппет getProducts. Для постраничной навигации - сниппет getPage. Пример вывода товаров из контекста «catalog»:

[[!getPage?
    &elementClass=`modSnippet`
    &element=`getProducts`
    &tplPath=`core/components/shopkeeper/elements/chunks/ru/`
    &tpl=`@FILE product1.tpl`
    &context=`catalog`
    &includeTVs=`1`
    &includeTVList=`price,image,producer,country`
    &limit=`10`
    &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@cart_order_page?propertySetName=`cart_order_page`]]
  
[[!FormIt?
&hooks=`spam,shk_fihook,email,FormItAutoResponder,redirect`
&submitVar=`order`
&emailTpl=`shopOrderReport`
&fiarTpl=`shopOrderReport`
&emailSubject=`В интернет-магазине "[[++site_name]]" сделан новый заказ`
&fiarSubject=`Вы сделали заказ в интернет-магазине "[[++site_name]]"`
&emailTo=`[[++emailsender]]`
&redirectTo=`13`
&validate=`address:required,fullname:required,email:email:required,phone:required`
&errTpl=`<br /><span class="error">[[+error]]`
&fiarFrom=`[[++emailsender]]`
&fiarFromName=`Название магазина например`
&emailFrom=`[[++emailsender]]`
&emailFromName=`Чудо-робот`
]]
  
[[!$shopOrderForm]]

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

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

Имя набора параметра (в данном случае «cart_order_page») нужно указать в настройках системы (раздел «shopkeeper») в значении параметра «shk.property_set_default» (Набор параметров сниппета по умолчанию). Этот набор параметров будет использоваться при отправке заказа.

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

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

События для плагинов:

  • OnSHKaddProduct - Добавление товара в корзину. $purchaseArray
  • OnSHKgetProductPrice - Выборка цены товара при добавлении в корзину. $purchaseArray
  • OnSHKcalcTotalPrice - Рассчет полной цены товаров в корзине. $price_total, $purchases
  • OnSHKbeforeCartLoad - Вызывается до начала формирования HTML-кода корзины.
  • OnSHKcartLoad - Вывод корзины. $items_total, $price_total
  • OnSHKChangeStatus - Изменение статуса заказа. Доступны: $order_id, $status.
  • OnSHKsaveOrder - Отправка заказа. $order_id
  • OnSHKScriptsLoad - Загрузка скриптов компонента управления заказами. Можно подгрузить свой JS-файл.

Две и более цены для одного товара

Для этого нужно создать две или более формы (<form>) и в поле name=«shk-id» после ID написать имя TV с ценой.

Пример:

<input type="hidden" name="shk-id" value="[[*id]]__price2" />

При submit формы в корзину добавится цена из TV-параметра с именем «price2».

Добавление в корзину данных без создания TV-параметров

Пример:

<input type="text" name="test__[[*id]]__add" value="дополнительные данные" />

В корзину добавится параметр, который можно выводить в месте вставки плейсхолдера [[+test]] (выведется «дополнительные данные»).

shopkeeper_snippet.txt · Последние изменения: 2016/04/23 15:44 (внешнее изменение)