Привет!
Буквально месяц назад мне дали проект магазина, в качестве CMS была выбрана Magento. Хотелось бы предостеречь людей работающих с данным продуктом впервые от ошибок сделанных мной.
Основы
Выбор среды разработки
Думаю стоит сказать о том, что простым редактором с подсветкой кода не отвертеться. Первым делом на что стоит обратить внимание при выборе IDE, это плагины. Нужны они в основном чтобы “прыгать” по классам (да, CMS написана так, что средствами среды разработки этого сделать невозможно) и более комфортно работать с шаблонами в блоках. Мне удалось найти только «условно-бесплатный» Magicento для PHP Storm, постоянно спамивший уведомлениями о новой версии. Но заставить PHP Storm прыгать по методам Magento он не смог. Скачать последнюю версию плагина можно с сайта после донейта или отправки жалобного письма разработчику. Старая версия плагина доступна в репозитории.
Отсутствие документации
Magento не дружелюбна к разработчикам и толковой документации под нее нет. Единственное что остается делать — гуглить! Причем зачастую ответы можно найти только на англоязычных блогах, форумах или Stack Overflow, так что без базовых знаний языка у вас явно возникнут затруднения.
Гибкость системы
Несмотря на многочисленную критику в сторону продукта, стоит отметить что Magento достаточно гибкая система. И зачастую большая часть задач решается средствами самой CMS, без вмешательства в код. По этому всегда смотрите функционал и доступные расширения, прежде чем начинать писать код. Это сэкономит вам много времени. В то же время стоит понимать, что при создании к примеру промежуточной страницы на этапе добавления товара в корзину может уйти не мало сил и нервов.
Разработка
Я не буду описывать процесс создания хеллоуворлд, блога или почты для Magento. Таких статей более чем достаточно даже на просторах рунета.
Переопределяйте все что можно и используйте эвенты
Запомните, какими бы не были незначительными изменения в классах или шаблонах — переопределяйте используйте эвенты! Это спасет ваше время и время других разработчиков еще не раз. При этом делайте это обдуманно, переопределенный вами класс может поломать чужой модуль.
Про способ с эвентами уже писалось в другой статье. Блоки и классы стоит переопределять в локальной директории, сделать это достаточно просто. Необходимо продублировать полный путь до класса в директории ./app/code/local/ и скопировать файл из core или community туда. Приоритеты поиска для вызываемых файлов такие:
1. local — всегда используйте эту директорию для переопределения или создания собственных расширений. Наиболее приоритетными считаются файлы расположенные в данной директории.
2. community — в этой директории лежат расширения разработанные сообществом.
3. core — модули ядра. Никогда не вносите изменения в данной директории.
Для переопределения шаблонов идем в админку, System -> Configuration -> Design и меняем значения в полях блока Themes на название директории в которой будут переопределенные шаблоны. Например создаем директорию по такому шаблону ./app/design/frontend/имятемы/override/ и вписываем override все поля.
Включаем показ ошибок и режим дебага
Из коробки Magento умеет отлавливать ошибки и писать их в логи, но работает это далеко не всегда. На хабре уже была статья, о том как отладить непонятные ошибки в Magento, но и этого бывает недостаточно. Для того чтобы включить показ ошибок, необходимо добавить строчку в корневой “.htaccess”:
SetEnv MAGE_IS_DEVELOPER_MODE "1"
Статичные страницы и блоки
Нет необходимости городить расширения для простейших задач. Создавайте статичные страницы и блоки через админку. Это сэкономит не мало времени тем, кто будет работать над сайтом после вас. Так же в статичных страницах и блоках мы можем вызывать другие блоки.
Автор: HiNeX