# =========================================================================== #
# NG CMS // Плагины // Корзина заказа                                         #
# =========================================================================== #

 Плагин "корзина заказа" позволяет сделать из NGCMS небольшой интернет-магазин.
В своей работе плагин использует плагины:
* xfields - для формирования списка товаров, доступного к заказу
* feedback - для заполнения данных о заказе и отправки самого заказа 
  администраторам/менеджерам сайта


Основные шаги для настройки/использования плагина:
==== XFields ====
1. Необходимо определить для каких записей будет отображаться ссылка "добавить в корзину"
1.1. Для всех новостей
1.2. Только для тех новостей в которых есть выбранное вами доп. поле и его значение отлично от нуля
2. Создать поле в котором будет храниться стоимость 1 единицы

==== Feedback ====
1. Создать форму, которая будет использоваться при формировании заказа (режим рассылки - HTML)
[ == текущая версия отправляет заказ только на указанные в форме email'ы, отправка копии заказа его автору - невозможна == ]

==== Basket =====
1. Настроить условия активации
2. Выбрать форму обратной связи

==== Шаблоны =====
> Текст email нотификации:
В шаблоне plugins/feedback/tpl/mail.html.tpl добавить в нужное место переменную {{ plugin_basket }}

> Собственные шаблоны плагина лежат в templates/default/plugins/basket/

> В mail.tpl доступна переменная {plugin_basket}, она заполняется из шаблона плагина total.tpl

> В news.short.tpl и news.full.tpl доступно:
/* Данный способ устарел, в данный момент используется AJAX добавление товаров в корзину, см. ниже */
блок [basket]..[/basket] (отображается при возможности положить этот товар в конзину)
переменная {basket_link} со ссылкой на URL добавления товара в корзину
/* Данный способ устарел, в данный момент используется AJAX добавление товаров в корзину, см. ниже */

** плагин добавляет свою js библиотеку basket.js, она позволяет добавлять товары в корзину через AJAX
пример правильного кода для добавления:
[basket]<a href="#" onclick="rpcBasketRequest('plugin.basket.manage', {'action': 'add', 'ds':1,'id':{news-id},'count':1}); return false;">В корзину</a>[/basket]

Плагин позволяет работать в разных режимах:
- можно использовать новость как еденицу товара, одна новость - один товар, тогда "Работа с доп. полями внутри новостей"
- можно использовать новость как группу товаров и выбирать что добавлять в корзину будеш из таблицы "Работа с таблицами доп. полей внутри новостей"
- работают и совместно и поодиночке даже в пределах одной новости и направляются в корзину без конфликтов

Например, если новость - это еденица товара. Внутри новости можно использовать табличные данные плагина xfields - это один и тот же товар но с разной ценой, цветом, размером, то вывод различных модификаций товаров
может выглядеть так:
{% for xdata in p.xfields._table.data %}
    <tr>
        <td> ID:{{ xdata.id }}</td>
        <td> Цвет: {{ xdata.field_color }}</td>
        <td> Цена: {{ xdata.field_prais }}</td>
        <td><a href="#" class="add_item_to_basket" data-tblid="{{ xdata.id }}">В корзину</a></td>
    </tr>
{% endfor %}
AJAX обработчик нажатия добавления товара в корзину на JQ:
$(".add_item_to_basket").click(function () {
    var count = $("input[name*='count']").val();
    var tblid = 0;
    tblid = $(this).attr("data-tblid");
    rpcBasketRequest('plugin.basket.manage', {'action': 'add', 'ds':51,'id':tblid,'count':count}); return false;
});

> total.tpl - Общий вывод по заказам в корзине, работает в main.tpl
Переменные:
{{ count }} - кол-во записей
{{ price }} - общая стоимость
...

> list.tpl - Корзина заказа (с возможностью обновлять кол-во заказанных товаров)
{{ recs }} - кол-во записей
{{ entries }} - массив со всеми записями корзины
	{{ entry.title }} - наименование товара
	{{ entry.count }} - кол-во товара
	{{ etry.sum }}	  - общая стоимость товара
	{{ entry.xfields.news.NAME }} - содержимое доп. поля NAME в новости из которой делался заказ
	{{ entry.xfields.tdata.NAME }} - содержимое доп. поля при заказе из таблицы внутри новости
...

Более подробная информация о возможностях плагина:
http://ngcms.ru/forum/viewtopic.php?id=2705
http://ngcms.ru/forum/viewtopic.php?id=2746
http://ngcms.ru/forum/viewtopic.php?pid=30259#p30259
http://ngcms.ru/forum/viewtopic.php?id=3743