В предыдущей статье мы коротко познакомились с архитектурой системы электронной коммерции (интернет-магазина) PrestaShop, сегодня поговорим про ее модульную систему. Модули являются частью PrestaShop, позволяя расширять функциональность системы, правда, чтобы сделать нечто более-менее серьезное, зачастую вам придется расширять или переопределять методы классов, иначе сплошные костыли (см. ниже). А иногда хочется сесть и переписать магазин с нуля на Kohana. В оригинальном дистрибутиве значительная часть функций реализуется именно модулями, их там больше сотни (платежные системы, способы доставки, информационные блоки, статистика и многое другое).
CMS
Система электронной коммерции PrestaShop
PrestaShop это электронный магазин, однако может работать в формате каталога (с версии 1.4, которая вот-вот зарелизится, вчера вышел RC5). Система бесплатная, open source, разрабатывается и поддерживается организацией Prestashop SA. Сообщается более чем о 50 тысячах инсталляций по всему миру, система заняла первое место в номинации Open Source E-Commerce Applications 2010. Хотя мой опыт работы с ней невелик, возможно, кому-нибудь будет полезно нижеследующее краткое резюме (касается версии 1.4).
Выбор Open Source электронного магазина
Понадобился сабж для быстрого запуска небольшого, но функционального магазина. Краткие результаты анализа по отдельным вариантам (чисто субъективно, конечно, в код не было времени лазить):
- AlegroCart -- базируется на несколько устаревшей версии OpenCart, простой интерфейс.
- Axis -- написан на ZendFramework, широкие возможности, но и требования к серверу не уступают. Чем-то похож на клон Magento.
- Batavi -- форк OsCommerce 3, еще в альфе, но говорят что можно пробовать. На вид функционал широкий, но вот сайт проекта оставляет печальное впечатление.
- eclime -- форк ОсКоммерц 2, я такие игнорировализ-за тяжелого груза обратной совместимости.
- ECShop -- говорят, отличается скоростью и неприхотливостью. Однако официальный сайт на китайском, что печалит.
- LiteCommerce -- может работать как модуль к Друпалу или самостоятельно. Выглядит приятно, хотя и лаконично. Требует php 5.3. И пока что в альфе.
- Magento -- серьезное, громоздкое решение. С точки зрения разработчика многие хвалят, но и куча критики налицо.
- OpenCart -- компактная и легкая система, обладающая основным необходимым функционалом. К сожалению, мало модулей, расширяющих функционал. Несмотря на некоторые странности разработчика, вполне пригодна для быстрого запуска небольшого магазина.
- osCMax -- форк ОсКоммерц 2
- osCommerce -- весия 3 в глубокой альфе, а двойка морально и технически устарела.
- OXID eShop -- детище сумрачного тевтонского гения. "Из коробки" функционал обширнейший, но существенным недостатком является интуитивно непонятная и неприветливая админка. Да и не совсем понятно, как обстоит ситуация со сторонними модулями.
- PrestaShop -- функционал очень широкий, модулей много самых разных, активный форум. Из минусов тяжеловесность и местами сомнительная архитектура.
- TomatoCart -- интересная современная система, но вот админка очень не понравилась, несмотря на кажущуюся "продвинутость".
- Drupal+UberCart -- во-первых, нужно хорошо знать Друпал, чего про себя пока не могу сказать. Во-вторых, функционал готовых магазинов на этой связке как-то не поразил, хотя они приводились в пример.
- Zen Cart -- возможно, я избалован, но смущает, что текущий релиз 1.3.х актуален с 2006 года, все это время происходили лишь багфиксы, судя по их истории версий.
В итоге сошлись OpenCart и PrestaShop. В данном конкретном случае победил PrestaShop из-за обширного функционала и большого количества модулей. Сыграл свою роль встроенный модуль CMS -- OpenCart позволяет создавать лишь набор страниц без иерархии. В нестабильной ветке 1.4.х Преста внедрена широкая поддержка кэширования, надеюсь, это несколько убыстрит магазин. Программная архитектура не отличается изысканностью, но пока не сталкивался с существенными трудностями при разработке.
Впечатления от HostCMS
Некоторое время назад плотно поработал с HostCMS (делал интернет-магазин) и по результатам сформулировал для себя некоторые плюсы и минусы системы
Форкнул Kohanut CMS
Форк Kohanut CMS для Jelly / Fork of Kohanut CMS core for Jelly
Для тренировки переделал ядро Kohana 3 Kohanut CMS для работы с Jelly. Попутно заточил под традиционный модуль аутентификации. Все вроде как работает, включая инсталляционный скрипт. Правда, расход памяти трошки увеличился, где-то килобайт на 300
Из общих впечатлений -- эта ЦМС для разработчика. В том числе и для пользования разработчиком (ну или по крайней мере квалифицированным пользователем). Потому что все эти сниппеты, конечно, дают гибкость, но менеджеру для заполнения такая гибкость не нужна, а скорее вредна. Ему нужны поля "Название", "Текст" и кнопка "Сохранить", а все эти сниппеты наведут страх. Еще некоторые сомнения вызывает вывод всего дерева страниц JavaScript-ом. На малых деревьях все прекрасно, но что будет в случае пары сотен страниц? Ну и конечно, хранение шаблонов в базе данных...
Googlitics 0.2 для MaxsiteCMS
Думаю, что можно называть релизом.
Что изменилось?
- Пофикшен баг с асинхронной загрузкой статистики. Таки это был баг у меня в скрипте, причем классический -- неинициализация переменной. Иногда срабатывало, видимо, потому, что некоторые браузеры игнорировали. Короче, сейчас это работает. И у меня включено.
- Исправлен баг с автоматической загрузкой, которая не срабатывала вообще из-за перемены мест уменьшаемого и вычитаемого. Сейчас все ОК, и добавил чтобы не обновляло автоматом только в течение дня. Кажется, так удобнее.
- Плагин модифицирован под MaxSite CMS 0.36 (изменился ajax-файл), поэтому всем, кто обновил ЦМС, надо обновить и плагин. Со старыми версиями ЦМС работать тоже будет.
- "Косметические" правки текстов, кода и т.п.
Скачать полную версию 0.2 114 (~110 KiB)
UPD Скачать инструкцию по установке 0.2 115 (~1 KiB)
ЗЫ Всех, празднующих Рождество Христово 25 декабря -- поздравляю с наступающим!
Googlitics 0.2 бета для MaxSite CMS
Несмотря на сомнительные откровенные заявления гендиректора Google насчет приватности, польза от использования Google Analytics пока что превышает потенциальный вред. Поэтому продолжаю работу над плагином для MaxSite, сегодня у нас версия 0.2 бета. По результатам тестирования полет пока нормальный, поэтому решил выложить плагин для желающих попробовать.
Альфа-версия Googlitics 0.2
Я тут устыдился того, что совсем забыл про рожденный мною плагин Googlitics для MaxSite CMS. А между тем, много событий произошло за это время, например, Google открыл API для цивилизованной работы со статистикой. Более того, хорошие люди написали кучу кода для применения туда разных красивостей.
В общем, стыд как дым, выел глаза -- и я принялся за дело. В результате появилась версия 0.2 альфа, в которую добавлен механизм запроса и отображения статистики.
Псевдо-мультиязычность в MaxSite CMS
Понадобилось мне проанглоязычить интерфейс блога. Хотя бы даже не навигацию и виджеты, а всякую служебную информацию типа подсказок и прочая. В общем, по возможности воспользоваться уже имеющимся англоязычным вариантом перевода интерфейса системы. Как лучше всего это сделать?
Я насчитал несколько путей:
MaxSite CMS -- ошибка загрузки файла
При работе с MaxSite CMS меня чрезвычайно выводила из себя невозможность загрузки некоторых вроде бы разрешенных типов файлов, например zip-архивов (посредством браузеров Firefox или Opera). Система выкидывала сообщение
Ошибка загрузки файла.
Вы пытаетесь загрузить запрещенный тип файла.
К тому же на некоторых компьютерах этим самым Firefox все загружалось нормально.