Документация Shopkeeper 3.x
Сниппет выводит корзину товаров на сайте. Товары в корзину можно добавлять без JavaScript.
Параметры
| lang | язык. По умолчанию - ru. | |
| prodCont | CSS-селектор элемента, внутри которого находится информация о товаре (по умолчанию div.shk-item); | |
| cartTpl |
Чанк корзины (в нём содержатся две части: пустая корзина и корзина с товарами). |
shopCart |
| cartRowTpl |
Чанк строки товара в корзине. По умолчанию. |
shopCartRow |
| packageName | Имя пакета таблицы БД товаровe: "shop". По умолчанию пусто (modResource). | |
| className | Имя класса таблицы БД товаров. Пример: "ShopContent". По умолчанию пусто (modResource). | |
| fieldPrice | Имя поля или TV с ценой товара. По умолчанию - price. | |
| fieldName | Имя поля или TV с названием товара. По умолчанию - pagetitle. | |
| getUnpublished | Разрешить добавлять в корзину неопубликованные товары. По умолчанию - . | false |
| allowFloatCount | Разрешить числа с плавающей точкой для кол-ва товара. По умолчанию - false | |
| excepDigitGroup | Делать разрядность больших чисев в ценах. | |
| orderFormPageId | ID страницы оформления заказа | |
| currency | Валюта. По умолчанию - руб. | |
| processParams | Просчитывать дополнительные параметры перед добавлением товара в корзину. | |
| savePurchasesFields | Список полей (или имен TV) товаров, которые нужно выводить в корзине и сохранять при заказе (через запятую) | |
| orderDataRowTpl | чанк строки товара в списке в письме, которое отправляется при заказе (`` ``). | orderDataRow. |
| flyToCart | Эффект добавления товара в корзину - helper | image | nofly (по умолчанию helper); | |
| noJQuery | Не подгружать jquery.js (по умолчанию 0); | |
| jsScript |
Управление загрузкой JS-скриптов (по умолчанию 1). Значения: - 1 - загружать все JS-скрипты (кроме jquery.js). - 2 - не загружать JS-файлы, но вывести скрипт инициализации Shopkeeper (рекомендуется, но нужно понимать зачем вы это делаете). - 0 - не загружать никакие скрипты. |
|
| style | Стиль корзины (по умолчанию `default`); | |
| pluralWords | Слова через запятую, которые нужно склонять по количеству. По умолчанию слова берутся из языкового файла (товар,товара,товаров). | |
| groupBy | Название поля, по которому нужно группировать товары в корзине. Пример: `` &groupBy=`parent` `` |
[ [!Shopkeeper3@cart_catalog]]
**cart_catalog** - Имя набора параметров.
Рекомендуется все параметры указывать в наборе параметров, т.к. нужно синхронизировать эти параметры при аякс-запросе.
Можно выводить две и более корзины на одной странице.
Пример чанка корзины товаров:
<div class="shop-cart" data-shopcart="1">
<div class="shop-cart-head"><b>Корзина</b></div>
<div class="empty">
<div class="shop-cart-empty">Пусто</div>
</div>
</div>
<!--tpl_separator-->
<div class="shop-cart" data-shopcart="1">
<div class="shop-cart-head"><b>Корзина</b></div>
<div class="full">
<div style="text-align:right;">
<a href="" id="shk_butEmptyCart">Очистить корзину</a>
</div>
<div class="shop-cart-body">Выбрано: <b></b> </div>
<div style="text-align:right;">Общая сумма: <b></b>
</div>
<div class="cart-order">
<a href="" id="shk_butOrder">Оформить заказ</a>
</div>
</div>
</div>
Чанк состоит из двух частей, разделенных специальным разделителем `` <!--tpl_separator--> ``
Первая часть - чанк пустой корзины товаров.
Вторая часть - чанк корзины с товарами.
`` data-shopcart="1" `` - это метка, по которой определяется набор параметров при аякс-обновлении корзины.
В настройках системы (Настройки системы -> shopkeeper3) в параметре "shk3.property_sets" нужно указать имена наборов параметров (можно несколько через запятую),
которые используются на вашем сайте для сниппета Shopkeeper. Это нужно для синхронизации при аякс-обновлении корзины.
Например **shk3.property_sets = cart_catalog,cart_order_page**
В этом случае в чанке (cartTpl), который указан в наборе параметров "cart_catalog" нужно поставить метку `` data-shopcart="1" ``.
А в чанке , который указан в наборе параметров "cart_order_page" поставить метку `` data-shopcart="2" `` (порядковый номер набора параметров).
В админке перейти "Настройки системы" -> "shopkeeper3" (фильтр).
shk3.property_sets - Список используемых наборов параметров сниппета Shopkeeper3. Подробнее в разделе "Пример чанка корзины товаров". По умолчанию "cart_catalog,cart_order_page".
shk3.currency - Название основной валюты сайта. По умолчанию "руб.".
shk3.currency_default - Номер валюты в списке по умолчанию. Подробнее в разделе "Мультивалютность". По умолчанию "1".
shk3.mail_order_data_tpl - Чанк шаблона данных заказа (для письма заказа). По умолчанию "orderDataOuter".
shk3.mail_order_data_row_tpl - Чанк шаблона одного товара в письме заказа. По умолчанию "orderDataRow".
shk3.mail_contacts_row_tpl - Чанк шаблона строки контактных данных в письме заказа. По умолчанию "mailContactsRow".
shk3.first_status - Номер первого статуса заказа от еденицы. Этот статус присваивается при создании заказа. По умолчанию "1" (Новый).
shk.price_total - Общая цена товаров в корзине.
shk.items_total - Общее число товаров в корзине.
shk.items_unique_total - Число уникальных товаров в корзине.
shk.delivery_price - Цена доставки.
- список товаров (по шаблону cartRowTpl);
- общая цена товаров в корзине;
- общее число товаров в корзине;
- общее число уникальных товаров в корзине;
- слово "товар" во множественном числе в зависимости от числа выбранных товаров;
- адрес текущей страницы;
- ссылка для очистки корзины;
- ссылка на страницу оформления заказа;
- валюта товаров;
- Название выбранной доставки.
- Цена выбранной доставки.
Плейсхолдеры, доступные в чанке "cartRowTpl":
- название товара;
- ID товара;
- ссылка на страницу товара;
- цена товара;
- общая цена товара, включая доп. параметры;
- цена товара, умнженная на кол-во;
- общая цена товара с параметрами, умноженная на кол-во;
- валюта товара;
- количество товара;
- порядковый номер товара в корзине от нуля;
- порядковый номер товара в корзине от единицы;
- четный или нечетный товар (выводит 1 или 0);
- запятая (выводится между товарами);
- ссылка на удаление товара из корзины;
- дополнительные параметры товара;
- любой TV-параметр, например ; Для сохранение в корзине использовать параметр savePurchasesFields.
- любой доп. параметр, выбранный при добавлении товара в корзину (из ), например .
Если параметры сделаны в виде чекбоксов, то чтобы вывести отдельно каждый из них, нужно добавлять индекс (номер от нуля) для параметров следующих за первым.
Пример: , , ...
- цена доп.параметра. Пример: .
OnSHKaddProduct - Добавление товара в корзину. $purchaseArray
OnSHKAfterAddProduct - После добавления товара в корзину. $purchaseArray, $index, $id
OnSHKgetProductPrice - Выбор цены товара при добавлении в корзину. $price, $id, $purchaseArray
OnSHKgetDeliveryPrice - Выбор цены доставки. $price
OnSHKgetProductAdditParamPrice - Выбор цены доп. параметра товара при добавлении в корзину. $price, $id
OnSHKcalcTotalPrice - Рассчет полной цены товаров в корзине. $price_total, $purchases
OnSHKbeforeCartLoad - Вызывается до начала формирования HTML-кода корзины.
OnSHKcartLoad - Вывод корзины. $items_total, $price_total
OnSHKChangeStatus - Изменение статуса заказа. Доступны: $order_ids, $status.
OnSHKsaveOrder - Отправка заказа. $order_id
OnSHKAfterRemoveProduct - После удаления товара из корзины. $index, $id
OnSHKAfterClearCart - После очистки корзины (удаления всех товаров).
Виджет
Для добавления виджета "Статистика заказов" на панель перейти
"Панели" -> "Панели" -> "Default" -> "Редактировать" -> "Добавить виджет" -> "Статистика заказов".
Перетащить в списке виджет вверх.
Плагин меняет число (значение поля или TV) кол-ва товара на складе, при переводе заказа в нужный статус.
По умолчанию плагин отключен, нужно его включить и настроить параметры:
inventory_fieldname - Имя поля или TV, где записано число товара на складе. По умолчанию - inventory.
plugin_status - номер статуса (от 1) при котором нужно уменьшать число товаров на складе. По умолчанию - 2.
context - имя контекста, кэш которого нужно очистить после пересчета товара на складе.
Создать плагин на событие "OnDocFormSave" с кодом из файла:
"/core/components/shopkeeper3/elements/plugins/migx_autoalias.php"
Открыть файл "/core/components/migx/processors/mgr/default/update.php" и сразу после "$object->save()"
точнее в актуальной версии версии это после
if ($object->save() == false) {
$updateerror = true;
$errormsg = $modx->lexicon('quip.thread_err_save');
return;
}
Добавить вызов плагина так:
$modx->invokeEvent( 'OnDocFormSave', array( 'id' => $object->get('id'), 'resource' => &$object ) );
Сниппет для вывода конфигурации Shopkeeper. Например можно выводить список способов доставки и оплаты.
Параметры:
get - Названия параметров, которые нужно достать из БД. Можно несколько через запятую.
post_name - Названия полей в форме. Например вывод при оформлении заказа. Нужно для работы плейсхолдера - выбранное значение.
tpl - Названия чанка для одной строки параметра.
toPlaceholders - отправить вывод в плейсхолдеры (разделенные по названию параметров). По умолчанию 0 (выкл.).
pl_prefix - Префикс названия плейсхолдера. По умолчанию: shkopt_.
Пример чанка (tpl):
<option value="" ></option>
Пример использования:
[ [!shkOptions?
&get=`delivery,payments`
&post_name=`shk_delivery,payment`
&toPlaceholders=`1`
&pl_prefix=`shkopt_`
&tpl=`select_option`
]]
Способ доставки:
<select name="shk_delivery">
<option value=""></option>
[ [!+shkopt_delivery]]
</select>
Способ оплаты:
<select name="payment">
<option value=""></option>
[ [!+shkopt_payments]]
</select>
<script type="text/javascript">
$(document).bind('ready',function(){
if ( SHK.data.delivery_name ) {
$('select[name="shk_delivery"]','#shopOrderForm').val( SHK.data.delivery_name );
}
$('select[name="shk_delivery"]','#shopOrderForm').bind('change',function(){
SHK.selectDelivery( $(this).val() );
});
});
</script>
Для мультивалютности используется плагин "shk_multicurrency". Проверьте чтобы он был активирован (по умолчанию выключен).
В настройках системы используются параметры:
shk3.currency - название валюты по умолчанию.
shk3.currency_default - номер валюты в списке по умолчанию.
Курсы вылют задаются в конфигурации компонента Shopkeeper3. "Управление заказами" -> "Настройки" -> "Курсы валют".
Если все цены интернет-магазина заданы в долларах (USD), в параметре "shk3.currency_default" нужно указать значение "3" (без кавычек),
если в списке валют USD под номером 3.
В шаблоне в нужном месте разместить выпадающий список с выбором валют:
<select id="site_currency" name="curency">
<option value="1">руб.</option>
<option value="2">грн.</option>
<option value="3">USD</option>
<option value="4">euro</option>
</select>
Также список валют можно выводить с помощью сниппета "shkOptions".
При выборе валюты все цены будут пересчитаны по соответствующему курсу.
Для пересчета цены в шаблоне страницы товара использовать модификатор "shk_curr_rate":
shk_currency - плейсхолдер наименования валюты.
Пример вывода цены в чанке сниппета getProducts при выводе списка товаров:
Если на сайте только одна валюта, но цены товаров указаны в другой валюте,
нужно добавить в настройках системы параметр "shk3.currency_selected" (Пространство имен "shopkeeper3") со значением - номер валюты (от еденицы),
в которую нужно переводить.
Например, если у товаров указана цена в долларах, а нужно выводить в рублях:
shk3.currency_default = 3 (USD)
shk3.currency_selected = 1 (руб.)
3 - номер валюты USD в списке курсов валют.
Дополнительные параметры товаров:
Товарам можно назначать параметры, которые покупатель сможет выбрать перед добавлением товара в корзину.
Параметры выводятся в виде выпадающего списка - shk_select, радио кнопок - shk_radio или флажков (чекбоксов) - shk_checkbox.
Выбрать тип вывода можно в настройках TV-параметра на вкладке "Параметры вывода".
Значения параметров (на странице редактирования ресурса (товара)) вводятся по такому принципу:
название параметра 1==цена 1||название параметра 2==цена 2||...
Можно ввести цену параметра со знаком умножения: Вес==*0.5||Вес==*1
В этом случае цена товара будет умножена на цену параметра.
В чанке сниппета getResources или getProducts параметры выводятся как плейсхолдеры: .
На странице товара (в шаблоне товара) нужно изменить ID параметра. Сделать это можно с помощью фильтра replace:
Контроллер параметров вывода: 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/
По умолчанию в качестве товаров используются обычные ресурсы (документы) MODX.
Shopkeeper (>=2.3) поддерживает добавление товаров из любой таблицы БД. Необходимо создать класс для управления элементами таблицы в БД, как это описано в документации MODX: http://rtfm.modx.com/display/revolution20/Using+Custom+Database+Tables+in+your+3rd+Party+Components.
Для создания php-карты таблицы и класса удобно использовать пакет MIGX (http://modx.com/extras/package/migx).
Рекоммендуется создавать отдельную таблицу для товаров, если планируется количество товаров больше 3000. А также в любом случае для увеличения производительности.
Для вывода страницытовара используется плагин shk_contextSwitch. Нужно настроить параметры.
Для создания интерфейса добавления/редактирования товаров использовать можно компонент MIGX.
[ [!getPage?
&elementClass=`modSnippet`
&element=`getProducts`
&className=`shopContent`
&packageName=`shop`
&limit=`10`
&tpl=`product`
&where=`{"template":15}`
]]
<br class="clear" />
<ul class="pages">
</ul>
Пример чанка товара:
/core/components/shopkeeper3/elements/chunks/ru/product_migxdb.tpl
Несколько отдельных таблиц для товаров:
Если у вас на сайте создано несколько отдельных таблиц в компоненте MIGXDB для товаров
1. Открыть шаблон категории товаров.
2. Перейти на вкладку "Параметры".
3. Разблокировать параметры по умолчанию и добавить параметры:
prodClassName - Имя класса таблицы БД (например "ShopContent").
prodPackageName - Имя пакета таблицы БД (например "shop").
prodTemplateId - ID шаблона по умолчанию для товров.
4. Сохранить изменения.
Теперь плагин "shk_contextSwitch" настройки будет брать из параметров шаблона.
Для этого нужно создать две или более формы (<form>) и в поле name=«shk-id» после ID написать имя TV с ценой.
Пример:
<input type="hidden" name="shk-id" value="15__price2" />
При submit формы в корзину добавится цена из TV-параметра (или поля) с именем «price2».
Добавление в корзину данных без создания TV-параметров
Пример:
<input type="text" name="test__15__add" value="дополнительные данные" />
В корзину добавится параметр, который можно выводить в месте вставки плейсхолдера (выведется «дополнительные данные»).
Автор - slaad
1. Создать документ с именем и псевдонимом "sitemap".
2. Установить пустой шаблон и отметить флажки "Публиковать" и "Не показывать в меню".
Тип содержимого - XML.
3. В поле "Содержимое ресурса" вставить вызов сниппета.
Параметры сниппета:
packageNames - Имя пакета объектов которые нужно вывдить (можно несколько через запятую).
classNames - Имя класса объектов которые нужно вывдить (можно несколько через запятую).
contexts - Контекст, в котором находятся объекты (можно несколько через запятую). Внимаение! Нужно сохранять порядок контекстов и классов, если их несколько, см. пример ниже.
Примеры:
1. Только ресурсы (Один или больше контекстов):
[ [shk_sitemap?
&packageNames=`modResource`
&classNames=`modResource`
]]
2. Ресурсы и товары из отдельной таблицы, два контекста:
[ [shk_sitemap?
&packageNames=`modResource,shop`
&classNames=`modResource,ShopContent`
&contexts=`web,catalog`
]]
В данном случае родители товаров (категории каталога) находятся в контексте "catalog".
<div class="product shk-item">
<div class="product-b">
<div class="product-descr">
<a href="">
<img class="shk-image" src="" alt="" height="130" width="130" />
</a>
<h3></h3>
<br />
<a href="">Details ›</a>
<div style="clear:both;"></div>
</div>
<form action="/dokumentacziya-shopkeeper-3.x" method="post">
<fieldset>
<input type="hidden" name="shk-id" value="" />
<input type="hidden" name="shk-count" value="1" />
<div class="product-price">
<button type="submit" class="shk-but">Add to cart</button>
<div>Price: <span class="shk-price"></span> руб.</div>
</div>
</fieldset>
</form>
</div>
</div>
Вывод списка товаров с помощью сниппетов "getPage" и "getProducts":
<br clear="all" />
<ul class="pages">
</ul>
Оформление заказа с помощью сниппета "FormIt" и хука "shk_fihook"
В чанке shopOrderReport доступны плейсхолдеры:
orderID - ID заказа.
orderDate - Дата заказа.
orderPrice - Цена заказа.
orderOutputData - Состав заказа (чанк "orderDataOuter"). Включает список товаров, контактные данные, доставку.
orderCurrency - Валюта заказа.