Собственно эта тема появилась благодаря Толяну,он поднял вопрос вывода табличных данных корзины .Сам я дня три ломал как вывести таблицу с данными доп полей,но как всегда помог infinity237 ,ну я и решил всю инфу с форума по плагину собрать обработать и разложить по полочкам.
И так приступим.
Сам плагин basket - "корзина заказа" позволяет сделать из NGCMS небольшой интернет-магазин.
В своей работе плагин использует плагины:
xfields - для формирования списка товаров, доступного к заказу
feedback - для заполнения данных о заказе и отправки самого заказа администраторам/менеджерам сайта.
Основные шаги для настройки/использования плагина:
Скачиваем плагин xfields : Заливаем его в engine/plugins . Устанавливаем.
Настроика XFields для магазина
1. Необходимо определить для каких записей будет отображаться ссылка "добавить в корзину"
1.1. Для всех новостей
1.2. Только для тех новостей в которых есть выбранное вами доп. поле и его значение отлично от нуля
2. Создать поле в котором будет храниться стоимость 1 единицы
3.Заходим в управление плагина доп. полей, создаем поле price, для наглядности скрин в студию:
27c5446f380fddf3df91f5cbda532fc5.png (34.89 Kb)

Настройка Feedback
Скачиваем плагин feedback .Заливаем его в engine/plugins. Устанавливаем.
1. Создать форму, которая будет использоваться при формировании заказа (режим рассылки - HTML)
( текущая версия отправляет заказ только на указанные в форме email'ы, отправка копии заказа его автору - невозможна )
Текст email нотификации:
1.В шаблоне plugins/feedback/tpl/mail.html.tpl добавить в нужное место переменную

Код:
 {{plugin_basket}} 
в моем случае с такими вот настройками:
58787552c5cee05290a0e3ddfe688bb8.png (63.47 Kb)

Скачиваем плагин basket . Заливаем его в engine/plugins. Устанавливаем.
Настройка Basket
1. Настроить условия активации
2. Выбрать форму обратной связи
Идем в управление плагином корзины, там задаем след. настройки:
eaf315a335a4d60eb8b690caeff6800d.png (28.74 Kb)

Прописываем переменные в шаблоны
2.Собственные шаблоны плагина basket лежат в templates/default/plugins/basket/
3.В mail.tpl доступна переменная
Код:
{plugin_basket}
, она заполняется из шаблона плагина total.tpl
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]
далее двигаем в папку НАЗВАНИЕ ВАШЕГО ШАБЛОНА\plugins\ там мы должны создать папку basket и поместить в созданную папку файлы из папки engine\plugin\basket\tpl.
Собственно и все, теперь магазин готов к эксплуатации. Ну только не забудьте про то что файлы из engine\plugin\basket\tpl содержат стандартное оформление.
5.Плагин basket добавляет свою js библиотеку basket.js, она позволяет добавлять товары в корзину через AJAX.
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) Найти 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;
});
Вот скрины моих настроек для таблиц
basshot_11.png (13.2 Kb)
basshotshot_12.png (14.38 Kb)
Ну и немного пояснений
1. Что такое "Работа с таблицами доп. полей внутри новостей" и "Работа с доп. полями внутри новостей"? Я правильно понял, что надо включать только 1 из этих вариантов?
- можно использовать новость как еденицу товара, одна новость - один товар, тогда "Работа с доп. полями внутри новостей"
- можно использовать новость как группу товаров и выбирать что добавлять в корзину будеш из таблицы "Работа с таблицами доп. полей внутри новостей"
- работают и совместно и поодиночке даже в пределах одной новости и направляются в корзину без конфликтов

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

Можешь почитать и вот эту статейку "Стильные CSS3 hover эффекты"

mistakes

Это тоже интересно

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Ваше мнение

Каким софтом вы пользуетесь?
Результаты

----