Аналитические статьи

Ksenmart - новый компонент Интернет-магазина на Joomla (обзор)

Joomla
  1. Вступление
  2. Установка Ksenmart
  3. Бэк-энд часть компонента (админ.панель)
  4. Фронт-энд часть
  5. Чего не хватает Интернет-магазинам на Joomla
  6. Что хотелось бы видеть в Ksenmart

1. Вступление

Итак, ниже предлагается обзор компонента Интернет-магазина на Joomla под названием  Ksenmart - разработка московской веб-студии LDM & Co. Прежде всего, давайте скачаем компонент с официального сайта Ksenmart.

Дистрибутив компонента весит порядка 4.3Мб. и включает в себя кучу всевозможных модулей и плагинов. Будет неплохо, если разработчики подготовят несколько версий дистрибутива: минимальный (компонент, модуль корзины и авторизации) и all-in-one (все модули и плагины в одном дистрибутиве), либо организуют нормальный файловый архив с разделениями по категориям и пользователи смогут скачать ровно то, что и нужно.

2. Установка Ksenmart

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

Модули Ksenmart

  • Модуль скидок KsenMart 3.1.4
  • Модуль подписки KsenMart 2.0
  • Простой поиск KsenMart 2.0
  • Список продуктов KsenMart 2.0
  • Модуль контактов KsenMart
  • Миникорзина KsenMart 2.0
  • Отзывы о магазине
  • Способы доставки и оплаты KsenMart 2.0
  • Информация аккаунта KsenMart 2.0
  • Поиск Ksenmart
  • Категории Ksenmart

Плагины доставки

Доставка курьером по Москве и области
Плагин добавляет способ оплаты курьеру.
Фиксированная цена по регионам
Плагин добавляет возможность создавать доставку с фиксированной ценой по регионам.

Системные плагины

Вывод скидок
Вывод скидок рассчитанных плагинами.
Плагин подготовки компонента к кешированию
Этот плагин заполняет хлебные крошки , обновляет счетчики и делает другие вещи до кеширования компонента.

Плагины платежных систем

Оплата курьеру
Плагин добавляет способ оплаты курьеру.
Оплата квитанцией
Плагин добавляет способ оплаты квитанцией Сберкабанка.
Robokassa
Плагин добавляет способ оплаты Robokassa.
YesCredit
Плагин добавляет способ оплаты в кредит с помощью сервиса YesCredit.

Плагины статистики

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

Плагины скидок

Обратный отсчет
Плагин добавляет возможность назначать скидки покупателям магазина с обратным отсчетом.
Купоны
Плагин добавляет возможность создавать купоны на скидку.
Накопительная скидка
Плагин добавляет возможность назначать скидки покупателям магазина в зависимости от общего объема покупок.
Фиксированная скидка
Плагин добавляет возможность назначать фиксированные скидки покупателям магазина.
Скидка на заказ
Плагин добавляет возможность назначать скидки покупателям магазина в зависимости от суммы текущего заказа.

Важный момент - устанавливается также шаблон Joomla на базе Bootstrap и модули с предустановленными позициями. После установки назначается шаблон KMTEMPLATE по умолчанию с предустановленными, включенными модулями и вы получаете на фронте функционал Ksenmart во всей красе. Новичкам это должно понравиться. Однако только им. Если вы ставите магазин на чистый полигон - нет проблем. Но дело в том, что магазин при каждом ручном обновлении из админки автоматически назначает свой шаблон и включает модули. Если вы уже делаете сайт на базе своего шаблона с другой модульной сеткой, то принудительный возрат к дефолтному шаблону выглядит скверно. Например, готовя этот обзор, я решил обновить компонент до свежей версии, благо, админка показала наличие обновлений. Каково же было удивление, что вместо предыдущего шаблона я получил на фронте снова KMTEMPLATE. Второй неприятный момент: если удалить компонент и все его расширения и попробовать поставить компонент заново, получаю на фронте: 

Table 'db_joom3.r2ghv_ksenmart_products' doesn't exist SQL=ALTER TABLE `r2ghv_ksenmart_products` ADD `purchase_price` DOUBLE NOT NULL AFTER `old_price`;

Хммм. Компонент невозможно удалить из системы. При попытке удалить Ksenmart повторно, получаю:

Unknown table 'db_joom3.r2ghv_ksen_seo_config,db_joom3.r2ghv_ksen_seo_texts, db_joom3.r2ghv_ksen_s' SQL=DROP TABLE `r2ghv_ksen_seo_config`, `r2ghv_ksen_seo_texts`, `r2ghv_ksen_seo_types`, `r2ghv_ksen_users`, `r2ghv_ksen_user_addresses`, `r2ghv_ksen_user_fields`, `r2ghv_ksen_user_fields_values`, `r2ghv_ksen_widgets`, `r2ghv_ksen_widgets_types`, `r2ghv_ksen_widgets_types_values`, `r2ghv_ksen_widgets_users_config`, `r2ghv_ksen_billing_data`, `r2ghv_ksen_files`;

Правда, отмечу, что у меня на сервере MariaDB, есть ли такая ошибка на классическом MySQL, не знаю. Однако ошибка неприятная - нужно или чистить БД путем танцев с бубнами в Phpmyadmin или сносить полигон и ставить заново...

3. Бэк-энд часть компонента (панель управления)

Итак, после установки попадаем в панель администрирования компонента. Интерфейс сперва кажется непривычным (концепция Flat UI), однако через время становится интуитивно понятным. Светло-зеленый и белый цвета смотрятся не очень контрастно.

Главная страница панели управления компонента Ksenmart

Общие настройки - Настройки административной части
Очень здорово, что реализована подготовка мини-эскизов для админ.панели, это делает навигацию быстрой.

3.1. Каталог

Ноу-хау компонента. Интересная концепция, при помощи которой очень удобно управлять содержимым каталога. Категории и производители находятся в доступности одного клика, невероятно удобно и просто! Однако в этом способе есть один недостаток, который может оказаться существенным: в случае роста категорий и увеличения кол-ва производителей, они будут загружаться лентой - визуально некрасиво и дольше время генерации страницы. В случае с товарами такой проблемы нет, поскольку реализовна пагинация. Производители и категории идут в “довесок” из расчета, что их много не будет. Возможно, в большинстве случаев это так, но компонент нужно сделать универсальным и предусмотреть использования большого кол-ва категорий и производителей (если есть “заточка” под изменение цен для регионов, значит допустимо построение большого магазина. Например, сеть Аптек - тысячи наименований лекарств).

3.2. Список товаров и функционал сравнения

Режим изменения цен на лету - замечательная штука! Но нужно внести доработку в UI. Например, есть некая цена. Я нажимаю в окошко для ее изменения и вижу, что стилистически оформление поменялось - элемент в режиме редактирования. Изменил цену и…. По логике, чтобы изменения вступили в силу, я нажимаю в соседнюю область чтобы выйти из режима редактирования элемента и изменения вступили в силу.

3.3. Экспорт / импорт

Тестируем функционал импорта / экспорта.

Импорт из CSV
Видим возможность загрузки файла и выбор кодировки файла windows-1251 и utf-8. Кстати, utf-8 лучше сделать по умолчанию если на винде последней такая кодировка.

Экспорт в Yandex.Market

Подающее надежды решение, позволяющее реализовать интеграцию Ksenmart в Яндекс маркет. Выделяю все категории, указываю название магазина, название компании, нажимаю “сохранить”, далее нажимаю /administrator/components/com_ksenmart/views/exportimport/tmpl/ym-xml.php и XML ленту для выгрузки.  Также возможна выгрузка в некий ROIStat (сервис сквозной бизнес аналитики и увеличения прибыли).

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

3.4. Акции и скидки

Мощный инструментарий и ноу-хау компонента. Итак, вот какие типы скидок можно создать:

  • Обратный отсчет
  • Купоны
  • Накопительная скидка
  • Фиксированная скидка
  • Скидка на заказ

Обычно такие решения идут платными дополнениями к скриптам Интернет-магазинов и они разные (накопительная скидка и скидка на заказ),  здесь же комбинированное решение из коробки. Ни один другой компонент Интернет-магазина на Joomla не может похвастаться подобным в беслатной версии.

3.5. Отчеты

Доступные варианты:

  • Отчет по продуктам
  • Отчет по заказам
  • Товары, за которыми следят
  • Избранные товары

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

Что хотелось бы видеть в следующей версии:

  1. Формирование и выгрузка отчетов в pdf и csv форматах на выбор;
  2. Pie chart (чарт-пирог) - визуальная статистика. можно на jquery + hyml5 +css3, можно и без красоты. сами графики строить в отдельной вкладке чтобы не отвлекали. а кому нужно - зайдут и посмотрят графический график;
  3. Встраивание кода от Google analytics и Яндекс метрика. Позволит собирать статистику продаж и передавать во внешний сервис для оценки общей конверсии.

3.6. Валюты и курсы

Список из трех валют по умолчанию. Евро стоит заменить на значок € В списке валют вывести еще одну колонку “валюта по умолчанию” и сделать иконку “основная валюта” (так короче звучит, чем “назначить по умолчанию” , в англ. set sa default currency)

3.7. Оплата

Оплата квитанцией - нужна валидация полей. Р/с и кор.счет не должны быть меньше или больше положенного кол-ва знаков (12 или 16ти значное число, нужно проверить) В идеале на будущее реализовать механизм поиска названия банка по введенному БИК. Так реализовано в интернет-банкинг системах. Нужно поискать в сети информацию, если такая база общедоступна (как регионы и города), то это будет очень крутое дополнение. С другой стороны, данные заполняются один раз и специально заморачиваться не стоит. Для западных клиентов нужна другая квитанция на SWIFT оплату. Для России нужен также модуль “квитанция оплаты Сбербанком” - это востребовано и люди покупают такой модуль, его суть - квитанция на печать в формате Сбербанка. Можно сделать платным дополением. RoboKassa и Йескредит не сохраняют настройки также. Вероятно конфликт скриптов.

По платежным шлюзам - обязательно внедрить возможность включения тестового шлюза. в PayPal это Sandbox. В Робокассе тоже что-то есть, если для этого нужна галочка “использовать тестовый режим”, ее нужно реализовать. Стоит дописать два модуля - оплата Webmoney и Яндекс деньгами. Возможно, на коммерческой основе.

3.8. Доставка

Модули доставки. В настройках есть параметр:

Цена по области(за км)

Не всегда указывается цена за километр, зачастую указывается фиксированная цена по области. Нужно предусмотреть такой режим. Поля пользователя - если авторы планируют выходить за пределы СНГ, стоит включить поле “Обращение: господин / госпожа” и сделать его необязательным (Title: Mr. (мистер) / Mrs (миссис) / Ms. (мисс)

Pop Up окно с выбором списка регионов. Следует вывести окошко для поиска или без окошка, но при нажатии на букву чтобы позиционировало на нужную строку. Лента регионов большая, хочется набрать Краснодарский край и получить нужную строчку. :-)

3.9. SEO

Реализована возможность управления формированием URL, мета-данных и title. Авторы не зря поставили на этом акцент.

Предложение опционально формировать ЧПУ в виде: category1/product005. Иногда такая опция полезна, когда тысячи товаров (см.ulmart.ru)

3.10. Страны и регионы

Магазин имеет предустановленые регионы России. Можно добавлять новые поля (страны, регионы).

3.11. Пользователи

На фронте есть модуль "Подписки", но такого функционала не нашел в панели администрирования магазина. В списке пользователей будет полезным добавить колонку страна или регион для группировки по этим параметрам.

Классических пользовательских групп нет, есть привязка к стандартным группам пользователей Joomla. В общем-то, интересный ход. Однако в других магазинах пользовательские группы вводятся для того, чтобы назначить скидку на пользовательскую группу. Добавили админа в группу Gold и назначили Gold скидку в 10%. Все покупки осуществляются с учетом скидки.

4. Фронт-энд часть

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

Фронтальная часть Ksenmart

Фронтальная часть Ksenmart (демо)

 

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

Сортировать по цене / популярности. Нужны еще параметры: по дате, по алфавиту и иконка со стрелочкой вверх / вниз, по клику меняется выдача в обратном порядке.

В категории есть переключение способа отображения товаров: сетка, плитка, список. Весьма достойно.

Карточка товара

На фронте три таба:

  • Описание
  • Отзывы
  • Оставить отзыв

Натолкнуло на мысль, что неполохо было бы добавить еще несколько табов опционально. Например, характеристики или инструкция. Сделать по аналогии с CCK - возможность в режиме редактирования товара добавить еще однин textarea элемент (или удалить его)

Комментарии

Нужно для гостя вывести вкладку оставить комментарий (юзабилити), но делать проверку и писать: отзывы доступны только зарегистрированным пользователям.

Оформление заказа

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

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

Личный кабинет

На предыдущем шаге сделал заказ, он ждет подтверждения админа. На странице мои заказы на фронте ничего нет. Вкладка “отзывы” - добавляю отзыв, он куда-то уходит? Снова нажимаю этот таб и вижу снова форму пустую с отзывом. Логично вывести в табе уже оставленный отзыв.

Модуль поиска

Выводится на длинный модуль поиска, в результате выдачи которого видим товары с изображениями. Спасибо за это, ибо тот же Virtuemart или JoomShopping имеют простые плагины поиска без изображений в результате выдачи. 

Фильтр товаров

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

Скорость генерации страниц на фронте приятно радует, а это немаловажный фактор.

5. Чего не хватает Интернет-магазинам на Joomla?

Говоря о российском рынке, это, однозначно, интеграция Joomla магазина с 1С. Даже под Virtuemart нет стабильного решения, которое позволяло бы закрыть вопрос без головной боли. Есть несколько сайтов, предлагающих подобные модули, но о них ходят противоречивые отзывы (плохая поддержка). Соответственно, клиент, заказавший Интернет-магазин на Joomla<, рано или поздно, захочет синхронизировать его с 1С. В этом случае прибегают к услугам фрилансеров, которые пишут на стороне 1С обработчик, выгружающий дампы напрямую в БД Joomla через SSH туннель. Решение половинчатое и не очень красивое. В идеале использовать протокол обмена данными Commerce2ML, специально для этого разработанный. Далее. Кроме Hikashop другие магазины не могут похвастаться функционалом сравнения из коробки, а это полезная фишка. И, как раз, Ksenmart это покрывает, однако над функционалом сравнения нужно работать еще.

6. Что хотелось бы видеть в Ksenmart

  • Многоязычность. Сделать можно по аналогии c JoomShopping - в режиме редактирования товара все настройки будут выводиться табами (Russian / English). Сделать это частью платного функционала. Опционально отключать в админке чтобы не таскать лишние табы если язык один.
  • UIKit / Bootstrap. По умолчанию поддерживается тяжеловесная Bootstrap. Стандарт де факто в Joomla 3. Однако сейчас набирает обороты альтернативный фронтэнд фреймворк UIKit от YOOtheme, который делает то же самое, но весит в разы меньше. Сделать задел под опциональный выбор. Будущее за UIKit.
  • Продавцы. Отсутствует как функционал. В магазинах обычно есть производители (manufacturers) и продавцы (vendors). Это нужно реализовать.
  • Модуль оплаты PayPal. Актуально уже и для России. Советую сделать модуль бесплатным в случае, если компонент планируется продвигать на международный рынок.

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


Полезные ссылки:

Eugene Sivokon
Предприниматель, менеджер проектов, Joomla-энтузиаст. Занимаюсь созданием сайтов с 2002 года. Координатор нескольких Joomla проектов. Обожаю путешествовать, интересуюсь историей и изучаю иностранные языки.
timeweb

Заработок в сети

  • Sape - биржа ссылок