Собственно эта тема появилась благодаря Толяну,он поднял вопрос вывода табличных данных корзины .Сам я дня три ломал как вывести таблицу с данными доп полей,но как всегда помог infinity237 ,ну я и решил всю инфу с форума по плагину собрать обработать и разложить по полочкам.
И так приступим.
Сам плагин basket - "корзина заказа" позволяет сделать из NGCMS небольшой интернет-магазин.
В своей работе плагин использует плагины:
xfields - для формирования списка товаров, доступного к заказу
feedback - для заполнения данных о заказе и отправки самого заказа администраторам/менеджерам сайта.
Основные шаги для настройки/использования плагина:
Скачиваем плагин xfields : Заливаем его в engine/plugins . Устанавливаем.
Настроика XFields для магазина
1. Необходимо определить для каких записей будет отображаться ссылка "добавить в корзину"
1.1. Для всех новостей
1.2. Только для тех новостей в которых есть выбранное вами доп. поле и его значение отлично от нуля
2. Создать поле в котором будет храниться стоимость 1 единицы
3.Заходим в управление плагина доп. полей, создаем поле price, для наглядности скрин в студию:
Настройка Feedback
Скачиваем плагин feedback .Заливаем его в engine/plugins. Устанавливаем.
1. Создать форму, которая будет использоваться при формировании заказа (режим рассылки - HTML)
( текущая версия отправляет заказ только на указанные в форме email'ы, отправка копии заказа его автору - невозможна )
Текст email нотификации:
1.В шаблоне plugins/feedback/tpl/mail.html.tpl добавить в нужное место переменную
{{plugin_basket}}
Скачиваем плагин basket . Заливаем его в engine/plugins. Устанавливаем.
Настройка Basket
1. Настроить условия активации
2. Выбрать форму обратной связи
Идем в управление плагином корзины, там задаем след. настройки:
Прописываем переменные в шаблоны
2.Собственные шаблоны плагина basket лежат в templates/default/plugins/basket/
3.В mail.tpl доступна переменная
{plugin_basket}
4. Теперь переходим к шаблонной части. Идем в папку с нашим шаблоном, открываем файлы:
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]
Собственно и все, теперь магазин готов к эксплуатации. Ну только не забудьте про то что файлы из engine\plugin\basket\tpl содержат стандартное оформление.
5.Плагин basket добавляет свою js библиотеку basket.js, она позволяет добавлять товары в корзину через AJAX.
7. total.tpl - Общий вывод по заказам в корзине, работает в main.tpl
Переменные:
{{ count }} - кол-во записей
{{ price }} - общая стоимость
{{ recs }} - кол-во записей
{{ entries }} - массив со всеми записями корзины
{{ entry.title }} - наименование товара
{{ entry.count }} - кол-во товара
{{ etry.sum }} - общая стоимость товара
{{ entry.xfields.news.NAME }} - содержимое доп. поля NAME в новости из которой делался заказ
{{ entry.xfields.tdata.NAME }} - содержимое доп. поля при заказе из таблицы внутри новости
Заполняем и выводим табличные данные
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;
}
Код:
{% 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 %}
$(".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 или незаполнении не позволит активировать баскет в новости.
Можешь почитать и вот эту статейку "Fresh HTML редактор кода"
Это тоже интересно
- 27.11.13FerroMenu JQuery плагин
- 05.08.18Плагин reCAPTCHA
- 02.09.19Плагин "Турбо Яндекс"
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.