Установка ,настройка плагина basket — "корзина заказа"

Собственно эта тема появилась благодаря Толяну,он поднял вопрос вывода табличных данных корзины .Сам я дня три ломал как вывести таблицу с данными доп полей,но как всегда помог infinity237 ,ну я и решил всю инфу с форума по плагину собрать обработать и разложить по полочкам.
И так приступим.
Сам плагин basket — «корзина заказа» позволяет сделать из NGCMS небольшой интернет-магазин.
В своей работе плагин использует плагины:
xfields — для формирования списка товаров, доступного к заказу
feedback — для заполнения данных о заказе и отправки самого заказа
администраторам/менеджерам сайта.
Основные шаги для настройки/использования плагина:
Настроика XFields для магазина
1. Необходимо определить для каких записей будет отображаться ссылка «добавить в корзину»
1.1. Для всех новостей
1.2. Только для тех новостей в которых есть выбранное вами доп. поле и его значение отлично от нуля
2. Создать поле в котором будет храниться стоимость 1 единицы

Настройка Feedback
1. Создать форму, которая будет использоваться при формировании заказа (режим рассылки — HTML)
( текущая версия отправляет заказ только на указанные в форме email’ы, отправка копии заказа его автору — невозможна )

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

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

Код:
 {{ plugin_basket }}

2.Собственные шаблоны плагина basket лежат в templates/default/plugins/basket/
3.В mail.tpl доступна переменная

Код:
 {plugin_basket}

, она заполняется из шаблона плагина total.tpl
4. В news.short.tpl и news.full.tpl доступно:
блок

Код:
 [basket]..[/basket] 

(отображается при возможности положить этот товар в конзину) переменная

Код:
 {basket_link}

со ссылкой на URL добавления товара в корзину
5.Плагин basket добавляет свою js библиотеку basket.js, она позволяет добавлять товары в корзину через AJAX.
6.Пример правильного кода для добавления:

Код:
 <a href="#" onclick="rpcBasketRequest('plugin.basket.manage', {'action': 'add', 'ds':1,'id':{news-id},'count':1}); return false;">В корзину</a>

7. total.tpl — Общий вывод по заказам в корзине, работает в main.tpl
Переменные:

Код:
 {{ count }} - кол-во записей
{{ price }} - общая стоимость

8. list.tpl — Корзина заказа (с возможностью обновлять кол-во заказанных товаров)

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

1. Скачиваем плагин basket . Заливаем его в engine/plugins. Устанавливаем.
2. Скачиваем плагин xfields : Заливаем его в engine/plugins . Устанавливаем.
3. Заходим в управление плагина доп. полей, создаем поле price, для наглядности скрин в студию:
Установка ,настройка плагина basket - "корзина заказа"

4. Скачиваем плагин feedback версии 0.18. Устанавливаем. Создаем там форму обратной связи, в моем случае с такими вот настройками:
Установка ,настройка плагина basket - "корзина заказа"[/img]
5. Идем в управление плагином корзины, там задаем след. настройки:
Установка ,настройка плагина basket - "корзина заказа"[/img]
6. Теперь переходим к шаблонной части. Идем в папку с нашим шаблоном, открываем файлы:
news.short.tpl
news.full.tpl
в них мы добавляем след. код:

Код:
 
[xvalue_price] рублей
[basket]<a href="#" onclick="rpcBasketRequest('plugin.basket.manage', {'action': 'add', 'ds':1,'id':{news-id},'count':1}); return false;">Купить!</a>[/basket]

далее двигаем в папку НАЗВАНИЕ ВАШЕГО ШАБЛОНА\plugins\ там мы должны сделать папку basket и поместить в созданную папку файлы из папки engine\plugin\basket\tpl.

Собственно и все, теперь магазин готов к эксплуатации. Ну только не забудьте про то что файлы из engine\plugin\basket\tpl содержат стандартное оформление.

1) Найти https://github.com/vponomarev/ngcms-plugins/blob/master/basket/lib/librpc.php#L130-134
Заменить на:

Код:
 $xc = xf_configLoad();
$xfData = xf_decode($nrec['xfields']);
$xfTData = unserialize($rec['xfields']);
// Get price
if (pluginGetVariable('basket', 'ntable_price') && isset($xfTData[pluginGetVariable('basket', 'ntable_price')])) {
$price = $xfTData[pluginGetVariable('basket', 'ntable_price')];
} else {
$price = 0;
}

2) В news.full.tpl добавить вывод:
Код:

Код:
 {% for xdata in p.xfields._table.data %}
<tr>
<td> ID:{{ xdata.id }}</td>
<td> Цвет: {{ xdata.field_ваше табичное поле }}</td>
<td> цена: {{ xdata.field_ваше табичное поле }}</td>
<td><a href="#" class="add_item_to_basket" data-tblid="{{ xdata.id }}">В корзину</a></td>
</tr>
{% endfor %}

3) В news.full.tpl добавить обработчик:

Код:
 $(".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;
});

1. Что такое «Работа с таблицами доп. полей внутри новостей» и «Работа с доп. полями внутри новостей»? Я правильно понял, что надо включать только 1 из этих вариантов?

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

2. Что такое «Поле для параметра «активация корзины по..»?

— выбираеш поле (если эта фича необходима) которое при условии «> 0 (больше нуля)» позволит вывести кнопку «Добавить в корзину», например поле с ценой указанное как «Поле для активация корзины» при цене 0 или незаполнении не позволит активировать баскет в новости.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

восемнадцать − 7 =