PrestaShop это электронный магазин, однако может работать в формате каталога (с версии 1.4, которая вот-вот зарелизится, вчера вышел RC5). Система бесплатная, open source, разрабатывается и поддерживается организацией Prestashop SA. Сообщается более чем о 50 тысячах инсталляций по всему миру, система заняла первое место в номинации Open Source E-Commerce Applications 2010. Хотя мой опыт работы с ней невелик, возможно, кому-нибудь будет полезно нижеследующее краткое резюме (касается версии 1.4).
Достоинства
Конкретный функционал перечислять не буду, лишь наиболее характерное
- Открытый исходный код. Конечно, хорошо документированная система с некривым API может быть закрытой и не вызывать неудобств, однако это идеальная ситуация. В реальности иногда очень хочется взглянуть на исходный код. Тут это возможно.
- Разрабатывает не одиночка, а группа (в отличие от той же OpenCart)
- Обширное комьюнити до некоторой степени может компенсировать слабую документацию
- Быстрая реакция разработчиков. Ответ на мое сообщение о баге пришел вместе с фиксом в течение часа, кажется. Возможна платная поддержка.
- Большое количество модулей. Часть из них платная (как правило достаточно сложные), в том числе разработки Prestashop SA, но можно найти много простых бесплатных. Платежные системы, сервисы доставки -- не могу назвать сверхизобилием (как у osCommerce), но на первое и второе время должно хватить с лихвой.
- "Из коробки" есть практически все, что нужно для быстрого старта стандартного магазина/каталога + рудиментарные возможности CMS (опять-таки, в этом преимущество перед OpenCart).
- Среднепростой администраторский интерфейс, доступный логическому пониманию, роли, права доступа в комплекте.
- Удобный интерфейс для перевода, интернационализация и локализация, поддержка разных валют.
- С версии 1.4 встроенное кэширование.
- Простая инсталяция и апдэйт (в пределах старшего релиза, то есть 1.4.х).
Недостатки
Хочу подчеркнуть, что PrestaShop это именно электронный магазин/каталог. Если нужна CMS или портал с функциями магазина -- ошиблись адресом. Да, есть в наличии (платные) модули новостей, форума и проч., но оптимальнее, на мой взгляд, использовать в данной нише проприетарную HostCMS или даже Drupal+Ubercart.
Кратко об архитектуре
Как ни странно, но PrestaShop построен по MVC-паттерну. Модели представляют собой объекты классов, наследуемых от ObjectModel. Все они лежат в WEBROOT/classes/, фактически, любая сущность в системе - от таба до корзины - реализуется через модель. Общей для всех моделей является функциональность CRUD + интернационализация и валидация полей. Несколько огорчает статичность многих методов моделей, что свидетельствует о формальном их использовании -- то есть, для задания области видимости методов.
Контроллер отвечает за обработку запроса. Существует множество контроллеров для разных страниц системы, все они лежат в папке WEBROOT/controllers/. Контроллеры страниц наследуются от класса FrontController, рабочий цикл в общем после всех инициализаций прямолинеен и прост:
public function run() { $this->preProcess(); $this->setMedia(); $this->displayHeader(); $this->process(); $this->displayContent(); $this->displayFooter(); }
В качестве View выступают шаблоны Smarty, которые хранятся в WEBROOT/themes/название_темы, правда, это относится, главным образом, к фронтэнду, с бэкэкндом ситуация хуже -- вся темизация сводится к замене таблицы стилей и картинок, часть разметки вообще лежит в классах модулей. Впрочем, в админке все немного сложнее, чем в фронтэнде.
Существует несколько способов расширения и модификации функционала системы. Это переопределение классов моделей и контроллеров (новые классы помещаются в WEBROOT/override/classes/ , WEBROOT/override/controllers/ соответственно), а также создание модулей (шаблоны модулей также можно переопределять -- работая с копией в папке WEBROOT/themes/ваша-тема/modules/). Различных модулей на сегодняшний день написано достаточно, правда, многие требуют доработки под конкретные нужды заказчика.
Каким образом осуществляется взаимодействие модулей с ядром? Для этого имеется система хуков. Хук в PrestaShop это метод класса модуля, который выполняется на определенном этапе работы системы. Вызов хука ядром осуществляется посредством метода
Module::hookExec($hook_name, $hookArgs = array(), $id_module = NULL)
Архитектуру модуля в PrestaShop планирую пояснить в следующей статье на наглдном примере.
Comments: 7 RSS
1 Konstantin Fedorov 27-02-2011 14:19
Спасибо за статью, prestashop безусловно очень приятная система.
С одной стороны обладает богатой функциональностью и хорошим набором модулей, но к сожалению пока не решены некоторые банальные вещи: нет добавления и редактирования заказов, нет нормального редактирования инфы в профиле покупателя (нельзя например посмотреть его телефон).
Есть модули, но кажется они просто вставляют куски кода в классы системы, добавляя то функционал то вывод, который трудно назвать правильным решением проблемы.
Модулями можно управлять только из вкладки модули, если без извращений с кодом - что плохо для клиента-менеджера, нельзя ограничить ему доступ "чисто".
В последней версии появилась из коробки оформление заказа на одной странице и установка тем вместе с модулями-зависимостями. Это очень хорошо.
Но одним из определяющих факторов в пользу системы является её достаточная логичность и немонструозность при действительно богатом функционале.
Ещё раз спасибо, с радостью почитаю продолжение!
2 Александр Купреев 27-02-2011 16:34
Спасибо за комментарий, действительно, ситуация именно такая. С одной стороны, достаточно богатый функционал и относительно простой код, с другой -- отсутствие, казалось бы, очевидных и простых вещей. Возможность добавления заказа менеджером простым модулем мне реализовать не удалось -- пришлось переопределять некоторые классы, но хорошо, что хоть не править ядро
3 Alesss 23-04-2011 04:20
Отличная статья жду следующих открытий=)
Например хотелось бы услышать по smarty и оптимизацию.
Prestashop первая CMS выбирал специально под магазин.
И НЕ ОШИБСЯ. Хотелось бы отметить широкие возможности дизайна.
Лучше только у Flesh.
Опыт работы в Prestashop 3 месяца
4 Alesss 21-05-2011 16:49
Не давно перевел книгу руководство для prestashop и полностью руссифицировал prestashop с 1.3 по 1.4 Все желающие могут посмотреть тут. http://ishop-vl.ru
5 User 27 08-07-2011 15:09
Спасибо за старания. С Престой знаком 1,5 года. Но в силу (все таки её тормознутости) перехожу на OpenCart. Дело конечно еще и в том, что его функционала мне вполне достаточно, а на престу все накручиваешь и накручиваешь и в результате тормоз. Несколько жалко, привык к ней уже.
6 User 29 22-10-2011 22:44
Выложил видео уроки по Престе, может кому поможет.
www.coffeedog.ru
7 Saerty 31-08-2013 15:19
2 октября выходит книга prestashop руководство для начинающих посмотреть содержание и оформить предзаказ можно уже сейчас http://prestapro.ru/book-prestashop/rukovodstvo-po-prestashop-15-na-russkom/.