Описание движка интернет-магазина U21 "Catalog&Shop"
Перейти к краткой информации о модуле
Перейти инструкции по управлению интернет-магазином
U21 "Catalog&Shop" это движок интернет-магазина, в основе которого лежит
принцип минимальной достаточности. Т.е. это комплект с минимальной структурой
данных и скриптов, но максимальными программными возможностями.
Такой принцип организации позволяет легко разбираться в незнакомом коде,
производить его модификации для собственных потребностей, создавать сложные
конструкции без значительных изменений начального комплекта.
Кредо движка -
простота и минимализм при сохранении
богатой функциональности.
Сущности
Основными сущностями движка являются товар и корзина. Все остальные - второстепенные.
Товар
Товар является главной сущностью при выборке и поиске. Вариации и наборы
являются добавками к товарами, они несамостоятельны. В корзину также помещается
прежде всего товар, и только дополнительно может указываться вариация или
набор.
Корзина
В движке корзина и заказ представляют собой одну сущность - "корзина", которая
может иметь разные статусы. При заказе корзина просто меняет статус и приобретает
дополнительную информацию.
Товары (точнее, информация об их доступном количестве) перемещаются со склада в
корзину при совершении заказа, т.е. смене статуса корзины на "заказан", и могут
быть возвращены при отмене заказа.
Поля корзины
addinfo - поле с примечанием покупателя при заказе. Так покупатель может дать
дополнительную информацию при заказе, далее значение этого поля меняться
не должно.
public_marks - доступно для заполнения оператору и выводится покупателю в ЛК.
Используется для информирования покупателя в процессе обработки заказа.
working_marks - доступно для заполнения оператору, но не видно покупателю.
Используется как внутренние заметки.
Принадлежность товара к нескольким разделам
Изначально товар принадлежит к одному разделу, основному.
Его нельзя делать множественным, т.к. с учетом раздела производятся расчеты
скидок и пр.
Чтобы поместить товар в несколько разделов нужно:
- для товаров добавить поле дополнительных разделов, например, "add_sid", оно должно
быть множественным с типом VARCHAR.
- выбор значения этого поля сделать через select с параметром multiple.
- выбор в списке товаров сделать с использованием следующего выражения:
if ($sid) $suf = "add_sid='$sid' OR add_sid LIKE '$sid###%' OR add_sid LIKE '%###$sid###%' OR add_sid LIKE '%###$sid'";
Организация дополнительных товаров и услуг
Если требуется разместить дополнительные товары или услуги, например, дополнительная
гарантия, подъем на этаж и пр., такие элементы следует размещать как товары в
специально созданном разделе. Этот раздел следует скрыть, а его товары
исключить из поиска.
Далее такие товары/услуги можно предлагать в карточке товара как для покупки в
отдельном виде, так и в составе набора с основным товаром.
Баллы за покупку
Имеется возможность начисления пользователя баллов за покупку, а также списание
этих баллов при дальнейших покупках.
1 балл = 1 единица основной валюты магазина (например, 1 балл = 1 RUR).
Баллы указываются в соответствующем поле каждого товара и суммируются в корзине.
Получение баллов: сохраняются в корзине при заказе и начисляются пользователю
при переходе заказа в статус "выполнен".
Списание баллов: списываются с баланса пользователя сразу при заказе и хранятся
в корзине. При отмене заказа возвращаются пользователю.
Расчет доставки
Способы доставки и регионы задаются конечным разработчиком.
Названия способов нужны просто для ориентирования в Панели управления, с
"фронт"-частью сайта не связаны.
dlvr_type в корзине должен быть не пустым и не 0, иначе считается неопределенным,
и не будут считаться стоимость доставки и конечная стоимость корзины с доставкой.
Обязательно в списке вариантов доставки должен быть "ненулевой" способ
(dlvr_type не равный 0 или пусто).
Могут быть как цифры, так и буквы.
region=0 подходит для всех регионов корзин. У корзины может быть не указан
регион.
Вес указывается в кг.
Для автоматич рассчета цена неважна.
Если нужно сделать внешний калькулятор доставки, нужно создать функцию, в ней все
необходимые вызовы и указать ее имя в соответствующем поле способа доставки.
Функция должна быть доступна и в Панели управления, т.е. нужно положить ее в
отдельный файл и подключить его в том числе и для Панели управления.
Использование данных заказанных корзин
До совершения заказа данные о товарах и всех подобных элементах корзины берутся
непосредственно из таблиц товаров и т.п. При заказе создается и сохраняется
снимок корзины, в котором имеются данные о товарах, наборах, вариациях,
рассчитанных стоимостях. Соответственно при выводе информации о совершенном
заказе следует брать данные снимка, а не из "живых" таблиц, т.к. в них
информация может измениться.
Некоторая информация в корзине сохраняется избыточно именно для этих целей,
чтобы можно было восстановить историю: что и с какими параметрами было
заказано.
Совместное использование вариаций и наборов
Такое использование возможно для основных товаров, не для дополнительных в
наборе.
В скриптах примера для упрощения показан вариант наборов для товаров без вариаций.
В случае и вариаций, и наборов, следует перечислить все комбинации наборов
и вариаций - исходные данные для такого перечисления уже отдаются функциями.