Документация Shopkeeper 3.x-Документация Shopkeeper 3.x

Документация 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 - Цена доставки.


Плейсхолдеры, доступные в чанке "cartTpl":

- список товаров (по шаблону 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" -> "Редактировать" -> "Добавить виджет" -> "Статистика заказов".

Перетащить в списке виджет вверх.


Плагин "shk_updateInventory" - Учет товара на складе

Плагин меняет число (значение поля или TV) кол-ва товара на складе, при переводе заказа в нужный статус.

По умолчанию плагин отключен, нужно его включить и настроить параметры:

inventory_fieldname - Имя поля или TV, где записано число товара на складе. По умолчанию - inventory.

plugin_status - номер статуса (от 1) при котором нужно уменьшать число товаров на складе. По умолчанию - 2.

context - имя контекста, кэш которого нужно очистить после пересчета товара на складе.


 Автоматические псевдонимы для MIGXDB

Создать плагин на событие "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 ) );


 Сниппет shkOptions

Сниппет для вывода конфигурации 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="дополнительные данные" />

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


Сниппет "shk_sitemap" - создание sitemap.xml

Автор - 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 &rsaquo;</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"


Ф.И.О.*:
Адрес*:
E-mail*:
Телефон*:
Способ доставки*:
Способ оплаты*:
Комментарий:

В чанке shopOrderReport доступны плейсхолдеры:

orderID - ID заказа.

orderDate - Дата заказа.

orderPrice - Цена заказа.

orderOutputData - Состав заказа (чанк "orderDataOuter"). Включает список товаров, контактные данные, доставку.

orderCurrency - Валюта заказа.

24.07.2026

Главная »

Яндекс.Метрика