- Главная
- Документация
- Shopkeeper
- 24481
- Август 2014
Сниппет выводит корзину заказов двух типов (расширенный и простой). Письмо с заказом можно отправлять на почту и в модуль Shopkeeper (рекомендуется). Товарам можно задавать дополнительные параметры, которые пользователь сможет выбрать. Для создания формы заказа нужно использовать сниппет eForm, для вывода списка товаров - CatalogView или Ditto.
Основные параметры
Значение по умолчанию: Язык системы управления
Примечание:
Пример:
&lang=`english`
Значение по умолчанию: assets/snippets/shopkeeper/style/default/
Примечание: 0 - если не нужен отдельный стилевой файл для корзины
Пример:
&style=`0`
Значение по умолчанию: full
Примечание: `full` - расширенный
`small` - простой
`empty` - только очистка корзины без вывода на странице
Пример:
&cartType=`small`
Значение по умолчанию: руб.
Примечание:
Пример:
¤cy=``
Значение по умолчанию: price
Примечание: Если ваш TV для цены имеет название не "price", обязательно укажите это имя в данном параметре
Пример:
&priceTV=`value`
Значение по умолчанию: 1
Примечание: обязательный параметр
Пример:
&orderFormPage=`10`
Значение по умолчанию: 0
Примечание:
Пример:
&noJQuery=`1`
&noConflict - если на сайте используется другая JS-библиотека (не JQuery), например Mootools, Prototype.
Значение по умолчанию: 0
Примечание:
Пример:
&noConflict=`1`
Значение по умолчанию: 0
Примечание: 1 - скрыть
0 - не скрывать
Пример:
&noCounter=`1`
Значение по умолчанию: 1
Примечание: Если этот параметр указан (0) на странице оформления заказа, письмо с составом заказа и список товаров в модуле будут без ссылок.
Пример:
&linkAllow=`0`
Значение по умолчанию: div.shk-item
Примечание: В предыдущих версиях этот параметр назывался clStuffCont.
Пример чанка: chunk_shopStuff.tpl
Пример:
&stuffCont=``
Значение по умолчанию: 0
Примечание:
Пример:
&debug=`1`
Значение по умолчанию: helper
Примечание: helper - появляется блок со счетчиком кол-ва товаров и летит в корзину;
image - в корзину летит картинка товара;
nofly - в корзину ничего не летит;
При &flyToCart=`image` тег img должен иметь CSS-класс "shk-image"
Пример:
&flyToCart=`image`
Значение по умолчанию: 0
Примечание:
Пример:
&noLoader=`1`
Значение по умолчанию: 1
Примечание:
Пример:
&excepDigitGroup=`0`
&changePrice - при изменении параметров с ценой - изменяется цена товара, а индекс с плюсом не появляется
Значение по умолчанию: 0
Примечание:
Пример:
&changePrice=`1`
Значение по умолчанию: 0
Примечание:
Пример:
&counterField=`1`
Значение по умолчанию: 0
Примечание: Обратите внимание, что в чанке "shopCart" кнопка "Пересчитать" находится внутри тега "noscript". Если используется режим &noJavaScript=`1`, рекомендуется тег "noscript" удалить.
Пример:
&noJavaScript=`1`
Значение по умолчанию: 0
Примечание: Обычно используется в вызове сниппета краткого вида корзины. Указывается ID страницы с подробным видом корзины (оформление заказа). На этой странице краткий вид корзины будет отключен.
Пример:
&hideOn=`1`
Шаблоны
Значение по умолчанию: assets/snippets/shopkeeper/chunks/ru/
Примечание:
Пример:
&tplPath=``
Значение по умолчанию: @FILE:chunk_shopCart.tpl
Примечание: Чанк содержит сразу 3 шаблона - для пустой, заполненной расширенной и простой корзины. Если чанки хранятся в файлах, можно указать путь с командой "@FILE:". Если чанки созданы в системе управления, то указывается только имя чанка (например &cartTpl=`shopCart`)
Пример: chunk_shopCart.tpl(содержит 3 шаблона корзины)
<!--tpl_separator--> - разделитель шаблонов (удалять нельзя)
Шаблон расширенной корзины (&cartType=`full`)
Плейсхолдеры в шаблоне[+inner+]
- строка с информацией о товаре (cartRowTpl);[+price_total+]
- Общая сумма;[+this_page_url+]
- URL текущей страницы;[+empty_url+]
- URL для очистки корзины;[+order_page_url+]
- URL страницы оформления заказа;[+currency+]
- валюта;
Шаблон упрощенной корзины (&cartType=`small`)
Плейсхолдеры в шаблоне[+price_total+]
- Общая сумма;[+total_items+]
- Число выбранных товаров;[+plural+]
- слово "товар" во множественном числе в зависимости от числа выбранных товаров;[+this_page_url+]
- URL текущей страницы;[+empty_url+]
- URL для очистки корзины;[+order_page_url+]
- URL страницы оформления заказа;[+currency+]
- валюта Пример:
&cartTpl=`shopCart`
Значение по умолчанию: @FILE:chunk_shopCartRow.tpl
Примечание: Плейсхолдеры в шаблоне
[+id+]
- ID товара (документа);[+name+]
- название товара;[+link+]
- ссылка на страницу товара;[+addit_data+]
- строка с информацией о доп. параметрах товара;[+price+]
- цена;[+price_total+]
- цена товара + доп. параметры;[+price_count+]
- цена товара * кол-во;[+currency+]
- валюта;[+count+]
- количество;[+this_page_url+]
- URL текущей страницы;[+index+]
- номер товара в корзине (от нуля);[+любой TV+]
- любой TV-параметр, например [+image+]
;[+shk_любой TV+]
- любой доп. параметр, выбранный при добавлении товара в корзину (из [+addit_data+]
), например [+shk_param1+]
.Пример: chunk_shopCartRow.tpl и chunk_shopCartRow2.tpl
Пример:
&cartRowTpl=`shopCartRow`
Значение по умолчанию: @FILE:chunk_shopCartHelper
Примечание:
Пример:
&cartHelperTpl=`cartHelperTpl`
Значение по умолчанию: @FILE:chunk_additDataTpl
Примечание: Плейсхолдеры в шаблоне
[+param+]
- имя и цена параметра. Цена указывается в скобках. Если цена = 0, то пишется только название параметра (без скобок);[+name+]
- имя параметра;[+price+]
- цена параметра; Пример: chunk_additDataTpl.tpl
Пример:
&additDataTpl=`additDataTpl`
Значение по умолчанию: @FILE:chunk_orderDataTpl
Примечание: Используется в письме с отчетом о заказе (eForm &report) и в модуле
Плейсхолдеры в шаблоне
Все плейсхолдеры чанка &cartRowTpl
[+loop+]
, [+end_loop+]
- начало и конец строки данных товаров (цикл). Пример:
&orderDataTpl=`orderDataTpl`
Значение по умолчанию:
Примечание: Плейсхолдеры в шаблоне
[+orderData+]
- состав заказа (список покупок);[+orderID+]
- номер заказа;Пример: chunk_shopOrderReport.tpl и chunk_shopOrderReportWebUser.tpl
Пример:
&report=``
Примеры вызова
[!Shopkeeper? &priceTV=`price` &orderFormPage=`10`!]
[!Shopkeeper? &cartType=`small` &priceTV=`price` &orderFormPage=`10` &changePrice=`1` &counterField=`1` &flyToCart=`nofly`!]
Необходимые CSS-классы, Id и имена полей
Шаблон | CSS-классы | id HTML-элементов | Имена полей и кнопок | Примечание |
---|---|---|---|---|
Шаблон вывода информации товара | shk-item - класс "обертывающего" элемента блока с информацией о товаре; shk-image - картинка товара (если используется &flyToCart=`image`); shk-price -класс элемента с ценой товара. |
— | shk-id - имя скрытого поля с id товара; shk-count - имя скрытого поля с кол-вом товара. |
Пример chunk_shopStuff.tpl |
Шаблон корзины | — | shopCart - id "обертывающего" элемента блока корзины; butEmptyCart - id кнопки-ссылки очистки корзины; butOrder - id ссылки на страницу оформление товара. |
shk_recount - кнопка "Пересчитать". | Пример chunk_shopCart.tpl |
Шаблон строки информации о товаре в корзине | shk-del - кнопка-ссылка удаления товара. | — | count[] - name полей с кол-вом товара. | Пример chunk_shopCartRow.tpl |
Шаблон формы заказа | — | — | email - поле "E-mail"; phone - поле "Телефон" |
Пример chunk_shopOrderForm.tpl и chunk_shopOrderFormWebUser.tpl |
CSS-классы (и id) используются в JS-функциях. Их можно использовать как дополнительные. Пример:
<div class="shop-stuff shk-item">
Оформление заказа
Форма заказа делается при помощи сниппета eForm. При вызове этого сниппета обзательно указать параметры:
&eFormOnBeforeMailSent=`populateOrderData` - функция для заполнения данных о выбранных товарах.
Для того чтобы заказы отправлялись в модуль Shopkeeper, в вызов сниппета eForm добавить параметр &eFormOnMailSent=`sendOrderToManager`.
Пример вызова eForm:
[!eForm? &formid=`shopOrderForm`&tpl=`shopOrderForm`&report=`shopOrderReport`&vericode=`1`&ccsender=`1`&gotoid=`11`&subject=`Новый заказ`&eFormOnBeforeMailSent=`populateOrderData`&eFormOnMailSent=`sendOrderToManager`!]
Подключение системы оплаты
Для подключения системы оплаты (выписки квитанций и т.п.) можно сделать дополнительный сниппет, который может использовать переменные сессии, создаваемые после отправки заказа:
$_SESSION['shk_order_id'] - ID заказа в БД;
$_SESSION['shk_payment_method'] - выбранный способ оплаты (список с name="payment" в форме);
$_SESSION['shk_order_price'] - общая цена;
$_SESSION['shk_currency'] - валюта;
$_SESSION['shk_order_user_id'] - ID пользователя (если не зарегистрирован = 0);
$_SESSION['shk_order_user_email'] - адрес электронной почты плательщика (если не зарегистрирован).
События для создания плагинов
- OnSHKFrontendInit - инициализация сниппета Shopkeeper во внешней части.
- OnSHKChangeStatus - изменение статуса заказа.
- OnSHKOrderDescRender - вывод подробной информации о заказе в модуле.
- OnSHKMailApprovedForPayment - отправление письма при статусе "Принят к оплате". Плагин может добавлять в письмо доп. информацию ().
- OnSHKcartLoad - загрузка корзины (вывод информации в чанке &cartTpl - ).
- OnSHKstatusSendMail - отправка письма о смене статуса.
- OnSHKmodRenderTopLinks - вывод ссылок вверху в модуле Shopkeeper.
- OnSHKmodPagePrint - вывод страницы модуля. Можно использовать для создания своей страницы (см. пример OnSHKmodPagePrint_plugin_example.txt).
- OnSHKbeforeSendOrder - перед отправкой заказа. Можно использовать для изменения полей ($fields).
- OnSHKsaveOrder - сохранение заказа.
- OnSHKcalcTotalPrice - расчет общей стоимости.
В папке shopkeeper/docs/ есть примеры плагинов.
"Сallback-функции" на JavaScript
setCartActionsCallback - перезагрузка корзины,
fillCartCallback - добавление товара в корзину,
emptyCartCallback - очищение корзины.
Просто создайте функции с такими именами и они будут вызываться при соответствующих действиях.
Две и более цены для одного товара
Для этого нужно создать две или более формы (<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="дополнительные данные" />
В корзину добавится параметр, который можно выводить в месте вставки плейсхолдера (выведется "дополнительные данные").
Товары в каталоге Shopkeeper
Можно сохранять товары в отдельльную таблицу БД (не документы). При хранении товаров в отдельной таблице можно забыть про ограничение на число документов MODx. При этом остается возможность использовать стандартные TV-параметры для товаров и плагины. Для создания и редактирования товаров используется стандартный интерфейс (можно настраивать с помощью плагина ManagerManager). Для вывода товаров на сайте используется сниппет catalogView (см. snippets/catalogView/readme.txt).
Товары можно "вложить" в любой документ (категорию), выбрав в дереве документов. Т.е. категории каталога (структура) создается как и раньше документами MODx, но сами товары будут храниться в отдельной таблице БД.
Если товар из каталога Shopkeeeper, в чанк товара (сниппет catalogView) нужно вставить скрытое поле:
<input type="hidden" name="shk-catalog" value="1" />
Чтобы в модуле Shopkeeper (в админке) появилась ссылка "Каталог", нужно в конфигурации указать ID категории каталога (документ MODx) по умолчанию.
Также необходимо настроить конфигурацию плагина SaveToSHK — указать ID шаблона товаров и ID TV-параметра цены.
Важно!
- На странице формирования заказа сниппет Shopkeeper должен вызываться раньше eForm.
- В чанке формы заказа обязательно добавить скрытое поле
<input type="hidden" name="reportTpl" value="shopOrderReport" />
где shopOrderReport - это название чанка с шаблоном отчета (параметр &report сниппета eForm). - Сниппет можно вызывать на странице несколько раз, но корзина выводится только в месте первого вызова. Второй и последующие вызовы игнорируются. Если у Вас корзина на страницах каталога товаров находится в правой колонке шаблона, а на странице оформления заказа вызов сниппета вставлен в контент страницы, то на этой странице корзина будет выведена только в ценральной колонке (в правой вызов сниппета можно не убирать).
- Рекомендуется использовать ЧПУ (семантические URL). В шаблонах сайта рекомендуется использовать <base href="http://i--gu.ru/" /> (внутри <head>) и относительные пути.
- Если чанки хранятся в файлах (используется команда @FILE:), проверьте кодировку этих файлов. Она должна быть такая же как у вашего сайта.
- Рекомендуется установить плагин PHx (http://modxcms.com/extras/package/?package=342).
В чанке chunk_shopOrderFormWebUser.tpl для примера он используется для заполнения скрытых полей данными авторизованного пользователя. - Для вывода корзины (сниппета) в разных местах рекомендуется создавать разные шаблоны для страниц или использовать плагин PHx.
- Если используется умножение цены товара на цену доп.параметра, в шаблоне информации о товаре (chunk_shopStuff.tpl и chunk_shopToCart.tpl) поле с ID товара (<input type="hidden" name="shk-id" value="1653" />) должно быть выше допюпараметров по HTML-коду.
- Рекомендуется имена TV-параметров и чанков писать на латинице.
- Рекомендованная кодировка - UTF-8.
- Для работы необходим PHP версии не позднее 5.0. На PHP 5.3 пока не тестировалось.
Все примеры прилагаются (папка shopkeeper/chunks/).
Примеры чанков в папке install/examples/
- chunk_shopCart.tpl - чанк корзины. Может быть использован как значение параметра &cartTpl при вызове Shopkeeper. Чанк содержит сразу 3 шаблона - для пустой, заполненной расширенной и простой корзины.
- chunk_shopCartRow.tpl - чанк шаблона строки с информацией товара в расширенной корзине.
- chunk_shopCartRow2.tpl - -//- пример с картинкой (TV - image) и условием PHx.
- chunk_shopStuff.tpl - чанк краткой информации о товаре. Может быть использован как значение параметра &tpl при вызове Ditto.
- chunk_shopStuff_2.tpl - -//- пример с двумя ценами для одного товара (продажа и прокат).
- chunk_shopToCart.tpl - может быть использован в шаблоне страницы подробного описания товара или можно вставлять вызов чанка в визуальный редактор.
- chunk_shopCartHelper.tpl - чанк шаблона "хелпера" - блока, который появляется для подтверждения действий.
- chunk_additDataTpl.tpl - шаблон для доп. параметров товаров в корзине.
- chunk_shopOrderForm.tpl - чанк форма оформление заказа. Может быть использован как значение параметра &tpl при вызове eForm.
- chunk_shopOrderFormWebUser.tpl - чанк форма оформление заказа для зарегистрированных пользователей.
- chunk_shopOrderReport.tpl - чанк письма с информацией о заказе. Может быть использован как значение параметра &report при вызове eForm.
- chunk_shopOrderReportWebUser.tpl - чанк письма с информацией о заказе для зарегистрированных пользователей.
- chunk_FormSignup.tpl - пример чанка с шаблоном формы регистрации для сниппета WebSignup.
- chunk_weblogin.tpl - пример чанка с шаблоном формы авторизации сниппета WebLogin.
- chunk_orderDataTpl.tpl - шаблон списка товаров в отчете о заказе ()
Виджеты для параметров товаров
Для создания виджетов (выпадающий список, радиокнопка, чекбокс) используется модификатор PHx - shk_widget.
Предупреждение
Т.к. сниппет производит действия с базой данных (запись, чтение), это может быть опасно. Автор попытался защититься от наиболее распространенных методов взлома системы, но всё может быть... Вы используете этот код на свой страх и риск. Автор не несет ответственности за последствия.