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

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


shk3_docs

Документация 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 - чанк строки товара в списке в письме, которое отправляется при заказе ([[+orderOutputData]]). По умолчанию orderDataRow.
  • additParamSource - ID ресурса источника доп. параметров. Если у вас есть параметры, общие для всех или группы товаров, можно создать один ресурс, где создавать и редактировать параметры. Не нужно их создавать для каждого товара отдельно.
  • 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="[[+empty_url]]" id="shk_butEmptyCart">Очистить корзину</a>
        </div>
        <div class="shop-cart-body">Выбрано: <b>[[+items_total]]</b> [[+plural]]</div>
        <div style="text-align:right;">Общая сумма: <b>[[+price_total]]</b> [[+currency]]
        </div>
        <div class="cart-order">
            <a href="[[+order_page_url]]" 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" (порядковый номер набора параметров).

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

  • shk.price_total - Общая цена товаров в корзине.
  • shk.items_total - Общее число товаров в корзине.
  • shk.items_unique_total - Число уникальных товаров в корзине.
  • shk.delivery_price - Цена доставки.

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

  • [[+inner]] - список товаров (по шаблону cartRowTpl);
  • [[+price_total]] - общая цена товаров в корзине;
  • [[+items_total]] - общее число товаров в корзине;
  • [[+items_unique_total]] - общее число уникальных товаров в корзине;
  • [[+plural]] - слово "товар" во множественном числе в зависимости от числа выбранных товаров;
  • [[+this_page_url]] - адрес текущей страницы;
  • [[+empty_url]] - ссылка для очистки корзины;
  • [[+order_page_url]] - ссылка на страницу оформления заказа;
  • [[+currency]] - валюта товаров;
  • [[+delivery_name]] - Название выбранной доставки.
  • [[+delivery_price]] - Цена выбранной доставки.

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

  • [[+name]] - название товара;
  • [[+id]] - ID товара;
  • [[+url]] - ссылка на страницу товара;
  • [[+price]] - цена товара;
  • [[+price_total]] - общая цена товара, включая доп. параметры;
  • [[+price_count]] - цена товара, умнженная на кол-во;
  • [[+price_count_total]] - общая цена товара с параметрами, умноженная на кол-во;
  • [[+currency]] - валюта товара;
  • [[+count]] - количество товара;
  • [[+index]] - порядковый номер товара в корзине от нуля;
  • [[+num]] - порядковый номер товара в корзине от единицы;
  • [[+even]] - четный или нечетный товар (выводит 1 или 0);
  • [[+comma]] - запятая (выводится между товарами);
  • [[+url_del_item]] - ссылка на удаление товара из корзины;
  • [[+addit_data]] - дополнительные параметры товара;
  • [[+любой TV]] - любой TV-параметр, например [[+image]]; Для сохранения в корзине использовать параметр savePurchasesFields.
  • [[+shk_любой доп.параметр]] - любой доп. параметр, выбранный при добавлении товара в корзину (из [[+addit_data]]), например [[+shk_param1]]. Если параметры сделаны в виде чекбоксов, то чтобы вывести отдельно каждый из них, нужно добавлять индекс (номер от нуля) для параметров следующих за первым. Пример: [[+shk_param1]], [[+shk_param1_1]], [[+shk_param1_2]] ...
  • [[+shk_любой доп.параметр_price]] - цена доп.параметра. Пример: [[+shk_param1_price]].

Данные последнего заказа

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

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

Также данные последнего заказа сохраняются в сессию shk_lastOrder.

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

  • 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 - имя контекста, кэш которого нужно очистить после пересчета товара на складе.

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

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

Для удобства ввода использовать тип ввода "param_edit".

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

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

В чанке сниппета getResources или getProducts параметры выводятся как плейсхолдеры: [[+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/

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

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

Пример:

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

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

Пример с выбором типа товара с разной ценой:

<select name="shk-id">
  <option value="[[*id]]__price">Покупка ([[*price]] руб.)</option>
  <option value="[[*id]]__price2">Прокат ([[*price2]] руб.)</option>
</select>

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

Пример:

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

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

Сниппет shkOptions

Сниппет для вывода конфигурации Shopkeeper. Например можно выводить список способов доставки и оплаты.

Параметры:

  • get - Названия параметров, которые нужно достать из БД. Можно несколько через запятую.
  • post_name - Названия полей в форме. Например вывод при оформлении заказа. Нужно для работы плейсхолдера [[+selected]] - выбранное значение.
  • tpl - Названия чанка для одной строки параметра.
  • toPlaceholders - отправить вывод в плейсхолдеры (разделенные по названию параметров). По умолчанию 0 (выкл.).
  • pl_prefix - Префикс названия плейсхолдера. По умолчанию: shkopt_.

Пример чанка (tpl):

<option value="[[+value]]" [[+selected]]>[[+label]]</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>

Сниппет для вывода конфигурации Shopkeeper. Например можно выводить список способов доставки и оплаты.

Параметры:

  • get - Названия параметров, которые нужно достать из БД. Можно несколько через запятую.
  • post_name - Названия полей в форме. Например вывод при оформлении заказа. Нужно для работы плейсхолдера [[+selected]] - выбранное значение.
  • tpl - Названия чанка для одной строки параметра.
  • toPlaceholders - отправить вывод в плейсхолдеры (разделенные по названию параметров). По умолчанию 0 (выкл.).
  • pl_prefix - Префикс названия плейсхолдера. По умолчанию: shkopt_.

Пример чанка (tpl):

<option value="[[+value]]" [[+selected]]>[[+label]]</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":

[[!*price:shk_curr_rate]] [[!+shk_currency]]

shk_currency - плейсхолдер наименования валюты.

Пример вывода цены в чанке сниппета getProducts при выводе списка товаров:

[[+tv.price:shk_curr_rate]] [[+shk_currency]]

Если на сайте только одна валюта, но цены товаров указаны в другой валюте,
нужно добавить в настройках системы параметр "shk3.currency_selected" (Пространство имен "shopkeeper3") со значением - номер валюты (от еденицы), в которую нужно переводить.
Например, если у товаров указана цена в долларах, а нужно выводить в рублях:
shk3.currency_default = 3 (USD)
shk3.currency_selected = 1 (руб.)
3 - номер валюты USD в списке курсов валют.

shk3_docs.txt · Последние изменения: 2017/01/08 18:49 — andchir