Обзор интерфейса miniShop2

Ну вот и пришла пора установить из репозитория компонент интернет-магазина miniShop2.
Это уже вторая версия моего решения для ведения интернет-коммерции на базе MODX Revolution. Она, конечно, не идеальна, но выгодно отличается от аналогов мощным пользовательским интерфейсом. Причем, судя по регулярным вопросам, которые я получаю, далеко не все знают о его возможностях. Поэтому, давайте рассмотрим админку miniShop2.

Настройки

Для начала разберемся с самым простым - разделом настроек. Это обычная страница админки, с табами и таблицами. Окно редактирования настроек вызывается через контекстное меню правой кнопкой мыши. Также можно редактировать основные поля двойным кликом по ним.
По умолчанию в настройках следующие разделы. #### Варианты доставки
Здесь вы создаёте варианты доставки товаров, по умолчанию идёт один - самовывоз. У каждой доставки есть несколько свойств: - Дополнительная стоимость - просто сумма, которая добавляется к заказу. Напишите 500, будет +500 к заказу при выборе этого метода.
  • Стоимость за единицу веса - а это уже сумма, которая добавляется за каждый килограмм веса.
  • Стоимость за единицу расстояния - это поле по умолчанию не используется, но вы можете прописать для него свою логику в классе этого метода доставки.
  • Логотип - просто картинка, которая будет выводиться в списке способов доставки.
  • Описание - ну тут понятно и так.
  • Обязательные поля - это то, что будет требоваться для обязательного заполнения покупателем при создании заказа. Здесь можно использовать любые поля формы заказа.
  • Способы оплаты - привязка оплаты к доставке. Выберите, какие способоы оплаты будут открываться при выборе этой доставки.
  • Класс-обработчик - это необязательное поле, в котором можно указать имя собственного класса для обработки логики доставки. По умолчанию используется msOrderHandler, но вы можете положить свой файл в /core/components/minishop2/custom/delivery/любоеимя.class.php
<?php
class myDelivery extends msDeliveryHandler {
}
Потом укажите в настройке **myDelivery** - и он будет использоваться для расчета стоимости доставки.

Способы оплаты

Разные способы оплаты, которые можно назначать доставкам. Обратите внимание, что в магазине есть куча готовых способов за разумные деньги. Настройки следующие: - Дополнительная стоимость - сколько прибавить просто при выборе этой оплаты.
  • Логотип и описание - понятно
  • Класс-обработчик работает аналогично доставке, только класс должен расширять msPaymentHandler., а файл нужно класть в /core/components/minishop2/custom/payment/
<?php
class myPayment extends msPaymentHandler {
}

Статусы заказа

Вы можете создать любое количество произвольных статусов заказа и указать, кого и как нужно уведомлять о переключении на них.
Обязательными статусами (которые нельзя удалить) являются: Новый, Оплачен, Отправлен и Отменён. Свойства статусов: - Цвет - просто цвет статуса, который будет отображаться в админке.
  • Письмо покупателю - нужно ли отправлять письмо покупателю о переключении заказа на этот статус? Если да - то укажите тему и чанк оформления. По умолчанию в теме используются записи из лексикона MS2.
  • Письмо менеджеру - то же самое, только письма уходят на email менеджеров, указанных в системной настройке ms2_email_manager. Если там пусто, то менеджером считается адрес в настройке emailsender.
  • Включен - если статус не включен, то на него нельзя переключить заказ.
  • Итоговый - если заказ переключен на этот статус, то больше статус поменять нельзя. По умолчанию итоговыми статусами являются Отправлен и Отменён.
  • Фиксирует - если заказ переключен на фиксирующий, то его нельзя переключить на предыдущий статус. То есть, если заказ Оплачен, то вы не можете переключить его в Новый.
Вы моежет добавлять сколько угодно статусов и переключить заказы на них в админке. Например: "Проверен", "Ожидает сборки" и т.п. Пользователь будет автоматически получать уведомления об этих изменения (если включено), а также видеть свой статус в личном кабинете Office, если вы его установите. Там и цвет статуса показывается.

Производители товаров

Это справочник производителей. Всё, что вы в него внесёте, можно будет выбрать в поле "Производитель" у товара. Причем, там будет работать автоподсказка по имеющимся записям. Я думаю, свойства описывать бессмысленно, кроме разве что "Ресурс" - это возможная связь со страницей описания бренда. Учитывая, что все поля производителя доступны на странице товара через плейсхолдеры [[+vendor.name]], [[+vendor.description]] и т.п., вы можете вывести ссылку на описание производителя вот так:
Производитель: <a href="[[~[[+vendor.resource]]]]">[[+vendor.name]]</a>
Довольно удобно, как мне кажется.

Связи товаров

А вот этот раздел - очень интересная особенность miniShop2. Вы можете создать определенные виды связей товаров, а потом в настройках товаров связать их друг с другом. Подробности вы можете прочитать в отдельной заметке.

Категория товара

miniShop2 устанавливает 2 особых типа ресурса в систему MODX: категории и товары. Отличаются они от обычных ресурсов собственным интерфейсом и логикой работы.
Например, у категории поле content вынесено на вторую вкладку, а на его месте красуется таблица с дочерними товарами категории. -
Какие же есть особенности у категорий miniShop2?
Улучшенная панель кнопок: добавлены иконки Font Awesome, индикация цветом и быстрая навигация по соседним категориям. Для быстрой навигации можно использовать быстрые клавиши: Alt + стрелочки вверх, вправо и влево. Если соседних категорий нет, то кнопки неактивны. Кнопка вверх отправляет вас именно в вышестоящий документ, а не на экран Home, как у других ресурсов.
Вы можете указать content по умолчанию для новой категории товаров в настройке ms2_category_content_default. По умолчанию там:
[[!pdoPage?
    &element=`msProducts`
]]

[[!+page.nav]]
Запоминается состояние вкладок - откройте "Настройки" и нажмите F5 - вкладка будет активной. Отключить можно настройкой ms2_category_remember_tabs.
Если на сайте установлен компонент Tickets, то у категории появится дополнительная вкладка с комментариями ко всем товарам этой категории. Отключить можно настройкой ms2_category_show_comments.
Таблица товаров ресурсов показывает все товары, во всех дочерних категориях. Если это не прямые потомки, то они отображаются серым цветом и подписывается имя категории. Отключить можно ms2_category_show_nested_products.
В таблице есть поиск, сортировка нажатием на столбцы и она запоминает своё состояние. Если вы искали какой-то товар, затем перешли на него, вернулись - то таблица так и будет показывать найденный результат. Это поведение можно отключить настройкой ms2_category_remember_grid.
Родные товары категории (не от дочерних категорий) можно сортировать перетаскиванием.
Самое интересное: вы можете указать, какие поля товара нужно выводить в таблице через системную настройку ms2_category_grid_fields. Более того, вы можете быстро редактировать основные поля двойным кликом! По умолчанию выводятся
pagetitle,article,price,weight,thumb,new,favorite,popular
Таким образом, на мой взгляд, таблица товаров категории представляет собой максимально удобный способ управления товарами.

Страница товара

Товар miniShop2 не является обычным ресурсом, не только потому, что у него собственная страница, но и потому, что к нему присоединена специальная таблица с дополнительными свойствами.
Таблица эта называется msProductData и по умолчанию в ней хранятся свойства цена, вес, артикул, картинка и т.д. Естественно, что все эти поля вы можете редактировать на странице товара.
На главной панели товара вы видите основные свойства, картинку, 4 вкладки слева и дополнительные поля чуть ниже названия.
По умолчанию вы находитесь на первой вкладке "Веб-страница". Что именно выводить на ней указывается в системной настройке ms2_product_main_fields. По умолчанию там:
pagetitle,longtitle,introtext,price,old_price,article,weight,content,publishedon,pub_date,unpub_date,template,parent,alias,menutitle,searchable,cacheable,richtext,uri_override,uri,hidemenu,show_in_tree
Вся панель разбита на блоки, и в каждом выводятся определенные поля. Подробности здесь.
Обратите внимание, что вы можете указывать и свойства из msProductData, все они будут выведены в отдельном блоке:
Остальные свойства товара, которые не выведены на первой вкладке, выводятся на второй. Её содержимое указывается в настройке ms2_product_extra_fields. По умолчанию там
color,size,vendor,new,popular,favorite,made_in,tags
Естественно, преимущество у первой вкладки, поэтому, если вы указали одно и то же поле для двух панелей, оно будет выведено только на первой. Также имейте в виду, что вы можете добавлять свои собственные поля товарам miniShop2, настраивать их внешний вид и даже перезагружать стандартные! Вот подробное руководство, для продвинутых.
Затем у нас идёт галерея с мультизагрузкой и сортировкой перетаскиванием. Первая картинка из неё копируется в свойства товара image и thumb, чтобы их можно было выводить в каталоге без лишних join.
Если вы хотите использовать более мощную версию этой галереи для обычных страниц, а не товаров - то можете приобрести её вот здесь. В вот здесь можно прочитать про работу с галерей подробнее.
Ну и последняя вкладка - это связи товаров, которые мы создаём в настройках, а здесь выбираем с кем и как связать текущий товар.
В принципе, все довольно интуитивно, и уже не раз описано в документации, но я хочу рассказать еще о некоторых скрытых возможностях.
Вы можете отключить показ вертикальных табов слева настройкой ms2_product_vertical_tabs. Это будет полезно для небольших мониторов.
Состояние табов панели товара тоже запоминается - можно отключить ms2_product_remember_tabs.
Вы можете отключить каждую из дополнительных вкладок товара, если вам они не нужны. За это отвечают три настройки: ms2_product_tab_extra, ms2_product_tab_gallery и ms2_product_tab_links.
Если у вас установлен компонент Tickets, то на панеле товара появится вкладка с комментариями к нему. Выключить можно настройкой ms2_product_show_comments.
Настройка ms2_product_source_default указывает источник медиа по умолчанию для галереи товаров, а ms2_template_product_default - умолчательный шаблон.
По умолчанию товары miniShop2 не показываются в дереве ресурсов, чтобы не нагружать его лишний раз, но вы можете изменить это поведение настройкой ms2_product_show_in_tree_default. Она действует только на вновь создаваемые товары, у уже существующих нужно будет отметить чекбокс при редактировании.
Вы можете выбрать превью какого размера показывать в галерее товара - за это отвечает настройка ms2_product_thumbnail_size. По умолчанию там 120х90, но если вы изменили настройки источника файлов, и убрали такой размер - то укажите здесь новый.
При выводе товара на сайте у него автоматически форматируются цена и вес. Вы можете настроить формат в параметрах ms2_price_format и ms2_weight_format.
Вообще, цена и вес форматируются с нулями после запятой, но по умолчанию эти нули убираются, когда не нужны. То есть, цифры выходят такие:
Цена: 500.5
Вес: 15.5
Вы можете отключить обрезание нулей в настройках ms2_price_format_no_zeros и ms2_weight_format_no_zeros, тогда цифры будут:
Цена: 500.50
Вес: 15.500
Ну и наконец вы можете именовать товары по их id, вместо дружественных url - за это отвечает настройка ms2_product_id_as_alias.

Заключение

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