2. Плагин miniMarket 0.4.0. Инсайд. Часть вторая
В первой статье, посвященной анонсу плагина miniMarket версии 0.4.0, я постарался рассказать о новом шаблоне и его принципах работы. Во второй части есть желание затронуть сразу несколько аспектов разработки следующей версии плагина, при этом подробно объясняя, почему был произведен выбор в пользу того или иного решения.
Картинка для привлечения внимания
Новое название
Плагин нуждается в новом названии. Проблема старого заключается в том, что довольно сложно использовать название «miniMarket» в самом PHP коде. Например, чтобы обратиться к какой-либо функции, находящейся в плагине, нужно написать следующее:
$oUser = $this->PluginMinimarket_User_GetUserById($iUserId);
Допустим, плагин будет называться просто «Mod»:
$oUser = $this->PluginMod_User_GetUserById($iUserId);
Согласитесь, так будет намного проще, да и меньше опечаток будет совершено при разработке.
Несколько вариантов нового названия, которое будет коротким и легким в написании, у нас уже есть. Так как окончательного решения данного вопроса еще нет — пишите свои варианты в комментариях ниже.
Новый фильтр
С первого взгляда в фильтре ничего не изменилось (если судить по скринам из предыдущей статьи). Все дело в том, что изменился принцип его работы.
Новый принцип работы фильтра #1
Допустим, весь ваш каталог товаров состоит из двух глобальных разделов: велосипеды и мотоциклы. Вы начинаете наполнять свой сайт контентом. Для этого сначала вам нужно создать перечень свойств (добавляются через панель администратора), которыми будут обладать ваши товары. Со временем вы замечаете, что есть свойства, которые могут находиться только у велосипедов. Соответственно, у вас нет ни малейшего желания (ибо это глупо) показывать пользователю доступные для выборки свойства велосипедов в фильтре, когда он будет просматривать мотоциклетный раздел.Именно это и является первым новым принципом работы фильтра товаров: отображение только тех свойств, которые относятся к просматриваемой категории и ее категориям-наследницам в текущий момент времени.
Давайте приведенный выше пример с двумя глобальными категориями в каталоге рассмотрим еще раз, только более наглядно.
Итак, есть у нас две категории:
URL #1: http://www.site.com/catalog/bike/peugeot/
URL #2: http://www.site.com/catalog/motorbike/bmw/
Если мы зашли в категорию товаров по URL #2, то в фильтре будут доступны свойства (для выборки по товарам) только по а) мотоциклам BMW (/catalog/motorbike/bmw/) и б) мотоциклам, вложенным в даную категорию (например, мотоциклы BMW: /catalog/motorbike/bmw/sport/).
Новый принцип работы фильтра #2
Была переработана логика выборки товаров при фильтрации по нескольким свойстам, принадлежащим одному атрибуту.Например, пользователь выбирает два свойства мотоцикла. Выбирает таким образом, чтобы они (свойства) а) были одновременно активны в фильтре и б) относились к одному атрибуту.
К примеру, он выбрал свойства а) «Оппозит» и б) «V-образный» у атрибута «Тип», и свойства а) «600 см3» и б) «1000 см3» у атрибута «Объем».
Итак, на основании какой логики плагин произведет выборку?
В старых версиях плагина (до версии 0.3.0 включительно) пользователь увидит только товары, у которых есть все свойства, выбраные в фильтре.
Теперь же (в новой версии) пользователь увидит список товаров, которые имеют хотя бы по одному свойству из каждого атрибута, участвовавшего в выборке. Таким образом (если судить по примеру выше), пользователь увидит список мотоциклов, которые могут содержать следующие свойства:
1. «Оппозит», «600 см3»
2. «Оппозит», «1000 см3»
3. «Оппозит», «600 см3», «1000 см3»
4. «Оппозит», «V-образный», «600 см3»
5. «Оппозит», «V-образный», «600 см3», «1000 см3»
6. «V-образный», «600 см3»
7. и т.д.
Понятное дело, двигатель мотоцикла одновременно не может быть и оппозитным и V-образным, или иметь сразу два объема двигателя. Данная илюстрация является всего лишь примером.
Но если я правильно понимаю, он подойдет не только для создания интернет магазина?
Для примера возьмем «Кинопоиск», мне кажется 90% функционала такого портала есть/будет (судя по анонсу) в miniMarket.
Есть недешевый плагин Psnet catalog.livestreetcms.com/addon/view/424/, который такого там намудрил, что скорее всего сам не понимает, что с ним делать. И minimarket c логичной, легкой и правильной, а самое главное понятной для пользователя структурой.
Кроме того, к версии 0.4.0 планируется довести до стабильного состояния функционал, позволяющий использовать miniMarket не только как магазин, а как некую надстройку. Например, организовать прием средств за что-либо, при этом просто подключив нужное количество дополнительных плагинов оплаты от разных систем оплаты — и все должно работать с минимальным допилом/надстройками.
Если все хорошо будет, то об этой фишке и подобных расскажу либо до публикации 0.4.0 версии, либо сразу после (нужно еще просто самим все до конце оттестировать, ибо есть определенные баги и неудобства).