В рамках данного урока разберем как настроить Minishop2 под различные типы сайтов: интернет-магазины или партнерский интернет каталог с офферами (т.е. у нес не будет кнопок купить, корзин и т.д. следовательно множество стандартных полей нам не нужно) и мы их отключим.
Системные настройки Minishop2
Настройки для карточки товара
ms2_product_extra_fields (дополнительные поля товара) — эта настройка отвечает за вывод полей во вкладке «Свойства товара», по умолчанию они следующие: price(цена), old_price (старая цена), article (артикул), weight (вес), color (цвета), size (размеры), vendor (производитель), made_in (страна), tags (теги), new (новый), popular (популярный), favorite (особый)
Все что не нужно можно отключить, например в нашем случае можно смело удалить: ,vendor и ,made_in, получим данную вкладку без этих полей.
Да еще все эти поля можно переименовать (если сильно хочется).
Если данные свойства вам не нужны, то можно полностью скрыть эту вкладку при помощи настройки: ms2_product_tab_extra (вкладка свойств товара) — ставим Нет (для скрытия).
Таким же образом можно скрыть остальные вкладки (если они вам не нужны):
- ms2_product_tab_categories (вкладка категорий товара) — ставим Нет (для скрытия). Скрываем если только у вас товары или офферы находятся строго только в 1 категории.
- ms2_product_tab_gallery (вкладка галереи товара) — ставим Нет (для скрытия). Нюанс: если вы хотите парсить контент и заливать изображения с левых сайтов — то эта вкладка вам точно нужна. А так, если картинка одна и парсить не чего не будите, то можно использовать обычное TV изображение (которое у нас уже есть).
- ms2_product_tab_links (вкладка связей товара) — ставим Нет (для скрытия).
- ms2_product_tab_options (вкладка опций товара) — ставим Нет (для скрытия), но они нам точно будут нужны.
- ms2_product_show_comments (показывать комментарии товара) — ставим нет (либо Да, если хотите привязать к карточкам товара комментарии от tickets).
ms2_product_thumbnail_default (путь к превью по умолчанию) — я обычно делаю какую-нибудь свою картинку и потом указываю до нее путь: img/noimage.png.
ms2_template_product_default (шаблон по умолчанию для новых товаров) — устанавливаем шаблон по умолчанию.
ms2_email_manager (почтовые адреса менеджеров) — для полноценного магазина указываем email адреса через запятую, куда будут приходить уведомления о заказах.
Категория товаров
ms2_category_show_comments (показывать комментарии категории) — ставим нет, если к карточкам tickets не собираетесь прикручивать.
ms2_template_category_default (шаблон по умолчанию для новых категорий) — ставим шаблон для категорий.
ms2_category_grid_fields (поля таблицы товаров) — данная настройка отвечает за табличный вид в категории товаров:
Следовательно, к примеру ID можно убрать (оно на против названий выводиться), я делаю каталог офферов, вкладка свойств скрыта (через системные настройки) — от сюда вытекает что в моем случае можно смело можно удалить еще Цену и Артикул. Для этого убираем из настройки: id ,article и до кучи ,new,favorite,popular.
Так же в эту сетку можно добавлять опции товаров (будем создавать в следующем уроке). Для этого вписываем туда их названия, через запятую.
После этого включаем опцию ms2_category_show_options (показывать опции товаров категории) — ставим ДА и получаем такую сетку.
Настройки из вкладки Сайт.
ms2_frontend_css (стили фронтенда) — [[+cssUrl]]web/default.css
ms2_frontend_js (скрипты фронтенда) — [[+jsUrl]]web/default.js
ms2_frontend_message_css ms2_frontend_message_css — [[+cssUrl]]web/lib/jquery.jgrowl.min.css
ms2_frontend_message_js ms2_frontend_message_js — [[+jsUrl]]web/lib/jquery.jgrowl.min.js
ms2_frontend_message_js_settings ms2_frontend_message_js_settings — [[+jsUrl]]web/message_settings.js
В общем это все стили и скрипты которые подключаются в фронтенд сайта, т.к. сейчас я создаю так сказать каталог с оферами и мне не нужны: кнопоки купить, корзина — я удаляю все эти значения.
Если делаете полноценный магазин, из обязательного: укажите email адреса менеджеров к которым будут прилетать уведомления о покупках, ключ: ms2_email_manager.
Прочие настройки (для тех кто делает интернет-магазин).
С системными настройками разобрались, теперь разберем как сделать остальные настройки. Для этого перейдите в «Пакеты» — «miniShop2 — «Настройки». Теперь разберем каждую вкладку индивидуально.
Варианты доставки
Вы можете создавать разные методы доставки со своей логикой, за которую будет отвечать кастомный класс, указанный в настройках. Класс необязателен, вы можете его не указывать и тогда никакой особой обработки заказа не будет.
Каждому методу доставки привязываются свои методы оплаты в окне редактирования.
Способы оплаты
Методы оплаты привязываются к заказам и должны реализовывать какую-то свою логику. Обычно они отправляют пользователя для оплаты заказа на сторонний сервис.
Указание класса-обработчика оплаты необязательно.
Статусы заказа
Существует несколько обязательных статусов заказа:
- новый
- оплачен
- отправлен
- отменён» Их можно настраивать, но нельзя удалять, так как они необходимы для работы магазина. Вы можете указать свои статусы для расширенной логики работы с заказами в своём классе.
Статус может быть окончательным. Это значит, что его нельзя переключить на другой. Например, «отправлен» и «отменён».
Статус может быть зафиксирован. То есть, с него нельзя переключаться на более ранние статусы (порядок задаётся перетаскиванием). Например, «оплачен» нельзя переключить на «новый».
Каждый статус может отправлять свои письма покупателю и администраторам магазина, указанным в системной настройке ms2_email_manager.
Для оформления писем используются указанные в статусе чанки. Все они обрабатываются pdoTools, так что вы можете использовать Fenom для наследования одного общего шаблона писем.
Производители товаров
В этом разделе вы можете задать производителей товаров, которые потом будут выбираться в свойствах товара.
Каждому производителю можно указать разные свойства и связь с ресурсом сайта, например, для вывода его персональной страницы.
Связи товаров
Это простой инструмент, который позволяет создавать группы товаров по любому признаку.
Типы связи нужно выбрать из четырех доступных:
- Один к одному — двухстороння равная связь товаров.
- Один ко многим — связь одного товара с несколькими. Дочерние товары не связаны друг с другом, только с родителем.
- Многие к одному — тоже самое, что и предыдущая связь, только наоборот — дочерний товар связывается с главным. Возможно, этот тип избыточен, но пусть будет для симметрии.
- Многие ко многим — самый интересный тип связи — равнозначная многосторонняя связь нескольких товаров, при добавлении в группу нового товара он связывается со всеми ее членами. Эта связь нужна для указания товаров, которые отличаются, например, по одному параметру. Или все товары этой группы могут быть участниками какой-то акции (и вы легко сделаете вывод ссылок на другие предложения на странице товара).
Хранение
Для добавления новой записи нужно выбрать заранее созданную связь и товар, к которому ее применить.
На уровне базы данных связанность товаров представляет таблица msProductLink, в которой всего 3 столбика:
- link — то есть id связи в таблице
msLink
, которую мы создали чуть выше, в настройках - master — это id главного товара
- slave — а это id подчиненного товара
Давайте разберемся, какие записи создаются у разных типов связей.
Один к одному — добавляем товар с id = 11 к товару с id = 15, создаётся 2 записи в БД:
master = 11, slave = 15
master = 15, slave = 11
Один ко многим — добавляем 3 товара с разными id к товару с id = 110, получаем такие записи:
master = 11, slave = 15
master = 11, slave = 16
master = 11, slave = 17
Многие к одному — добавляем 3 товара с разными id к товару с id = 11, получаем такие записи:
master = 21, slave = 11
master = 22, slave = 11
master = 23, slave = 11
Многие ко многим — и, наконец, добавляем 3 товара с разными id к товару с id = 11.
master = 11, slave = 31
master = 11, slave = 32
master = 11, slave = 33
master = 31, slave = 11
master = 31, slave = 32
master = 31, slave = 33
master = 32, slave = 11
master = 32, slave = 31
master = 32, slave = 33
master = 33, slave = 11
master = 33, slave = 31
master = 33, slave = 32
Все товары группы перелинкованы друг с другом.
Выборка
Тут всё просто: создаём сниппет и выбираем id товаров группы, указывая link и master (у связи многие к одному — slave вместо master).
$q = $modx->newQuery('msProductLink', array(
'link' => 1,
'master' => 10
));
$q->select('slave');
if ($q->prepare() && $q->stmt->execute()) {
$ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
print_r($ids);
}
Ну а получив id связанных товаров, можно делать с ними всё, что угодно. Возможности применения ограничены только вашей фантазией.
Примеры
Рекомендованные товары (выводятся в корзине, при оформлении заказа)
Комплекты товаров (выводятся ссылки на другие товары комплекта в карточке)
Опции товаров
О том как создавать и выводить опции товаров miniShop2 я писал в отдельном уроке: Опции товаров miniShop2 — создание и вывод.