Ajaxify Node Basket 7.2: релиз модуля легкого и простого магазина на AJAX для Drupal 7

Таки свершилось. Конечная версия модуля под "семерку", с новым функционалом и возможностями, успешно допилена.

Краткий экскурс в ключевые обновленные возможности

  • Добавление нод в корзину происходит так же, как и в ранних версиях. По крайней мере внешне. Внутренняя же жизнь сего процесса отличается от былого чрезмерно. Вся JavaScript`овая динамика ныне исполняется исключительно через Drupal Ajax API. В свете чего отпала надобность использования модулем своих собственных js-файлов.
  • У блока корзины появился свой темплейт-файл. Дефолтно, "нарисованное" в нем отображает свернутый список отложенного в корзину, где ссылка на "развернуть" информирует так же и о количестве находящихся в корзине товарных позиций. Если у товаров есть цена, то под списком появляется строка с общей суммой заказа. Ну и в самом низу - ссылка на страницу корзины.
  • Заказы. Они теперь сохраняются, как ноды соответствующего типа. Со всеми вытекающими из этого радостями.
  • Уведомления о создании новых заказов ныне умеренно настраиваемы. Помимо администрации сайта письмо о создании заказа отправляется и пользователю, автору заказа. Если данная опция включена в настройках. Отдельный шаблон письма место быть имеет, но как theme-функция, в отдельный файл выводить его посчитал лишним.

Подробное описание настроек и принципов работы модуля

Первоначальные настройки

На странице модулей найти Node Basket можно будет в группе "Коммерция"(или "Node Commerce" в иноземном варианте).

После установки модуля в меню конфигурации сайта появится новый пункт - "Node Basket" (/admin/config/nodebasket).

Ссылка на страницу настроек модул Node Basket

На вкладке основных настроек отмечаем типы нод из всех созданных на сайте. За исключением типа "заказ", естественно.

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

Модуль Node Basket: настройка полей для типа товар.

После сохранения основных настроек, вас автоматом перекинет на страницу настройки почтовых уведомлений. Где можно выбрать поля заказа, данные которых будут отправляться на адрес электронной почты сайта и пользователя(если включена соответствующая опция). Подробнее о полях заказа будет написано ниже.

Модуль Node Basket: настройка почтовых уведомлений.

Следующим, предпоследним, шагом будет раздача разрешений на пользование корзиной и управление заказами для имеющихся пользовательских ролей.

Модуль Node Basket: настройки доступа для ролей пользователей.

Ну и наконец финальная часть. Включаем отображение блока корзины в нужном регионе текущей темы. На станице настройки блоков сайта, если кто не догадался.

Модуль Node Basket: включение отображения блока с содержимым корзины.

Настройка заказа

Как уже было сказано ранее, заказ у нас теперь есть ни что иное, как рядовая нодо-единица.

Тип материала "Заказ" будет автоматически создан при установке модуля. С двумя, лишь, "вшитыми" экстра-полями с настраиваемым отображением в теле заказа:

  • "E-mail пользователя" - почтовый адрес организма, сотворившего заказ;
  • "Содержимое заказа" - собственно, означает то, что означает;

Страница настроек отображения полей типа материала 'Заказ' модуля Node Basket.

Остальные, необходимые в вашем конкретном случае поля, создавать придется самолично. Как обычные поля обычной ноды. Что есть большущий плюс, согласитесь.

Работа модуля. Добавление товаров/нод в корзину

Модуль настроен, права на его использование обозначены, и блок корзины находиться в нужном месте. Что видит пользователь(которому видеть разрешено)?

У типов нод, что нами выбраны, как товары, теперь есть кнопка "Отложить в корзину". По нажатии на оную в блоке с содержимым корзины происходят соответствующие метаморфозы, а текст на кнопке меняется на "В корзине". Все изменения при манипуляции с данными корзины, и при ее редактировании в том числе, происходят без перезагрузки страниц, путем ajax-запросов.

Ajax-корзина с обновленными данными после добавление в нее нового товара.

Редактирование содержимого корзины и оформление заказа

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

Страница редактирования содержимого корзины.

На странице оформления пользователь заполняет обязательное "вшитое" поле контактного e-mail`а, и все другие поля, что мы посчитали нужным включить в заказ. И отправляет заполненную форму на сохранение и исполнение.

Страница оформления заказа

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

Сообщение об успешном сохранении нового заказа.

Скачать и примечания

Возможно в будущем написанное выше будет разбавлено новыми деталями или изменениями, если что упустил помянуть.

В планах: более основательный рефакторинг, оптимизация и документирование кода.

ВАЖНО!!!
При обновлении модуля с версии 7.1 прежде всего необходимо отключить и полностью деинсталлировать "старую" версию. Это два совершенно разных модуля.
Dalay

Комментарии

Да, для анонимов доступ по коду. Ну или согласно настройкам разрешений для ролей.

Спасибо, всё супер гуд!

Хочу поблагодарить автора за модуль. и вдохновение которое он дал! Долго искал простое решение для превращение Druplal в магазин с минимальным количеством модулей.
А если ближе к делу- если автору еще интересно развитие модуля или есть идеи - готов помочь!
Недавно пришлось немного доработать модуль под требования сайта - добавил:
- возможность выбора количества товара
- свойства товара (цвет, размер, и любые другие свойства с возможностью одиночно так и множественного выбора ) - все берется из словарей
- скидка товара (сделано по аналогии с ценой)
в планах добавить настройку способов доставки
возможность выбора способа оплаты
подключить например яндекс кассу
импорт товаров
-------------------------------------------------------
С одной стороны это уже другой модуль, с другой все тот-же Node Basket.
местами еще не drupal way, но буду к этому стремиться. Если автора заинтересует - готов так сказать совместно развивать эту идею под версией Light Shop 3

А вы можете поделиться модулем?
Хочется посмотреть на ваш вариант
Почта libero82@mail.ru

Могу, сейчас допиливаю, + добавлю доставку и валюты
(к модулю допилил картинки товара в корзине и в письме)
vanbot@mail.ru

А как инициировать повторную отправку сообщений о заказах?
У нас сервер одно время не был доступен, надо часть сообщений продублировать.

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

Как сделать чтобы в корзине в списке заказов вместо названия товара можно было выводить и другие поля например фото?

Очень полезный и простой модуль! Спасибо. Было бы еще круче, если навесить автоапдейт при изменении количества, а вместо чекбокса [Удалить] вывести ajax-кнопку. Хотя, сейчас уже наверно не актуально, все потихоньку переходят на восьмерку. Портировать планируете?