О системе
Модули
Демо-версия
Скачать / Заказать
Документация
Поддержка
Новости Обратите внимание
Особые условия web-разработчикам
Получить профессиональную CMS и использовать в своих проектах - это выгодно! подробнее

Для некоммерческих организаций
Система управления сайтом - бесплатно! подробнее

Описание движка интернет-магазина U21 "Catalog&Shop"

Перейти к краткой информации о модуле
Перейти инструкции по управлению интернет-магазином

U21 "Catalog&Shop" это движок интернет-магазина, в основе которого лежит принцип минимальной достаточности. Т.е. это комплект с минимальной структурой данных и скриптов, но максимальными программными возможностями. Такой принцип организации позволяет легко разбираться в незнакомом коде, производить его модификации для собственных потребностей, создавать сложные конструкции без значительных изменений начального комплекта. Кредо движка - простота и минимализм при сохранении богатой функциональности.

Сущности

Основными сущностями движка являются товар и корзина. Все остальные - второстепенные.

Товар

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

Корзина

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

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

Поля корзины

addinfo - поле с примечанием покупателя при заказе. Так покупатель может дать дополнительную информацию при заказе, далее значение этого поля меняться не должно.

public_marks - доступно для заполнения оператору и выводится покупателю в ЛК. Используется для информирования покупателя в процессе обработки заказа.

working_marks - доступно для заполнения оператору, но не видно покупателю. Используется как внутренние заметки.

Принадлежность товара к нескольким разделам

Изначально товар принадлежит к одному разделу, основному. Его нельзя делать множественным, т.к. с учетом раздела производятся расчеты скидок и пр.

Чтобы поместить товар в несколько разделов нужно:

  1. для товаров добавить поле дополнительных разделов, например, "add_sid", оно должно быть множественным с типом VARCHAR.
  2. выбор значения этого поля сделать через select с параметром multiple.
  3. выбор в списке товаров сделать с использованием следующего выражения:
    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 подходит для всех регионов корзин. У корзины может быть не указан регион.

Вес указывается в кг.

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

Использование данных заказанных корзин

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

Совместное использование вариаций и наборов

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