Обучение Magento Плагин Разработка

30

Я являюсь разработчиком PHP более 13 лет, обладаю обширными знаниями самого PHP, как и некоторые другие популярные проекты, такие как WordPress. У меня нет опыта работы с Magento.

Теперь у меня есть работа на полную ставку в компании, которая использует Magento, все мои работы по разработке будут в основном на Magento.

Мои первоначальные мысли после того, как я впервые посмотрел на Magento: вау, во что я ввязался? Но потом выходит опытный разработчик и вспоминает, что это просто PHP.

Итак, у меня есть несколько основных вопросов по Magento, на которые я бы очень хотел получить ответы от более опытных разработчиков Magento ...

  1. Как лучше всего узнать о разработке magento рядом с этим сайтом?
  2. Расширения / плагины очень сбивают меня с толку. Другие платформы, такие как WordPress, позволяют размещать плагин в его собственной папке, и все его файлы будут жить в этой папке. Из того, что я видел до сих пор, плагин может быть разбросан по нескольким папкам в Magento, это правильно?
  3. Я узнал о том, как превзойти функциональность Core. Так что, если файл в ядре находится здесь, /app/code/core/Mage/SitemapModel/Resource/Catalogя могу переопределить его, создав файл в этом месте, /app/code/local/Mage/SitemapModel/Resource/Catalogтак как это работает с расширением / плагином? Если я создаю плагин, который должен перекрывать основные функции, то мне нужно, чтобы мои файлы были повсюду, чтобы это расширение работало?
  4. Любая другая информация, которую вы хотели бы знать, начиная с magento?

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

JasonDavis
источник
1
Если бы на стек-обмене была такая штука, то этот вопрос и ответ был бы одним! В какой ресурс это превратилось :)
McNab
@McNab Нет функции Sticky, однако вопросы, которые набирают наибольшее количество голосов, обычно имеют более высокий рейтинг и встречаются чаще. Также эта страница magento.stackexchange.com/?tab=month показывает этот вопрос как номер 2 прямо сейчас, так что это что-то вроде Sticky, но там написано «Месяц», поэтому я не уверен, как долго он сохранит свою липкость. Я согласен с тем, что он превратился в отличный ресурс, и я предпочитаю его использовать и помечать его для легкого доступа в будущем. Кстати, поделитесь этим сообществом со своими друзьями, чтобы оно стало постоянным домом и не умерло после периода бета-
тестирования

Ответы:

24

Я собираюсь сосредоточиться на первой части вашего вопроса - « как мне узнать / с чего мне начать? »

Как бывший разработчик Zend Framework, самой большой помощью для меня в разработке Magento был взрыв в онлайн-обучении, который Magento U принес за последние 2 года. Помимо формального обучения - я учусь в основном на практике , и я «делаю» Magento уже более 5 лет.

Некоторые конкретные учебные ресурсы:

Помимо средств обучения, для меня самым большим инструментом обучения было изучение модулей Magento сторонних производителей. Я прочитал код полностью и учиться на нем. Вы можете сделать то же самое, изучив основные модули.

Некоторые сайты, которые будут вам полезны в процессе обучения:

http://magento-quickies.tumblr.com/

http://alanstorm.com/

http://colin.mollenhour.com/

http://magentotherightway.com/

Некоторые эпические разработчики, чтобы следовать:

Алистер Стед: https://github.com/alistairstead

Фабрицио Бранка: https://github.com/fbrnc/

Винай Копп: https://github.com/Vinai

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

Некоторые списки Twitter:

https://twitter.com/inchoo/magento

https://twitter.com/kkoepke/magento

https://twitter.com/eHubSystem/magento-imagine-2013

https://twitter.com/GingerWarriorX/magento-peeps

Наконец - сделайте поход в следующем году в Magento Imagine в следующем году и нажмите плоть. Отследите нас, задайте нам вопросы. Выйти на местные встречи. Если встреча не существует в вашем районе - начните . Будьте настойчивы. Не позволяйте отсутствию знаний удерживать вас от общения и общения с людьми. Ваши отношения в обществе окупятся в виде дивидендов.

philwinkle
источник
14

Мои 2 цента на блестящий ответ @ philwinkle.

Есть два официальных PDF

1) Руководство разработчика расширений Magento

80 страниц о том, как создать собственное расширение с нуля, шаг за шагом. Модуль «Новости» разработан с нуля - он покажет вам структуру файлов и папок модуля, конфигурационные файлы, контроллеры, модели, блоки.

2) Руководство дизайнера по Magento можно найти здесь http://www.magentocommerce.com/resources/magento-user-guide.

60 страниц о том, как организовать и создать свои собственные темы, пакеты в соответствии с лучшими практиками.

Также есть новая книга, специально предназначенная для тех, кто имеет опыт работы с PHP и начинает с Magento - Руководство разработчика PHP-приложений для Magento от Аллана МакГрегора, и в ней есть очень хорошие отзывы от разработчиков Magento на Amazon и различных блогов.

Видеоканалы: канал Magento Commerce на YouTube

Познакомьтесь с видео конференций Magento

Другие хорошие блоги:

http://magebase.com/
http://inchoo.net/blog/
http://www.kingletas.com/
http://blog.belvg.com/category/magento-news/developer-certification http: / /fbrnc.net/tag:Magento
http://www.demacmedia.com/category/magento-commerce/

Сергей Гук
источник
1
Это здорово - потрясающие ресурсы!
Philwinkle
8

Отличные ответы здесь пока что везде. относительно

Расширения / плагины очень сбивают меня с толку. Другие платформы, такие как WordPress, позволяют размещать плагин в его собственной папке, и все его файлы будут жить в этой папке. Из того, что я видел до сих пор, плагин может быть разбросан по нескольким папкам в Magento, это правильно?

Терминология в Magento становится немного запутанной. Раннее развитие платформы было безжалостно быстрым, и во многих случаях вы будете видеть пересекающиеся концепции с фальстарта и изменений в направлении. Расширения / плагины / модули / я-разработчик-и-хочу-добавить-мой-код-в-систему - одна из этих областей.

Расширение Magento Connect - это просто пакет файлов, которые могут быть установлены в систему Magento. Он полностью отделен от любой другой программной подсистемы Magento.

Ближе к тому, что вы привыкли, являются модули кода Magento . Грубо говоря, модуль кода представляет собой набор файлов PHP, которые Magento видит как единое целое. Модули расположены в одной из трех папок

app/code/core
app/code/community
app/code/local

Если вы хотите настроить Magento или добавить новые функции, вы почти всегда начинаете с модуля кода. Фактически, сам Magento построен на основе около 60 - 70 модулей кода. Например, Mage_Cmsмодуль в

app/code/core/Mage/Cms

содержит код, который заставляет работать функции CMS Magento. Если вы собираетесь создать модуль, который добавляет кошек котенка в Magento, вы можете создать модуль с именем Jasondavis_Kittiesи поместить его в

app/code/community/Jasondavis/Kitties

Re: core, communityи local- первый для разработчиков Magento, поэтому не трогают. Второй - для расширений, которые предназначены для распространения среди сообщества. Последний предназначен для расширений, которые предназначены для локальной разработки, для конкретной системы.

Последнее недоразумение связано с дизайном пакетов . Код, который Magento использует для визуализации и управления своим HTML, представляет собой совершенно отдельную систему. Вот почему phtmlфайлы расположены отдельно от файлов модуля кода . Вы можете найти эти файлы в

app/design

папки.

Наиболее хорошо написанные профессиональные расширения распространяются в виде расширений Magento Connect, которые устанавливают один или несколько модулей кода Magento , и содержат ряд пользовательских phtmlшаблонов и XML-файлов макета, установленных в base пакете разработки .

Конкретные вещи, которые вы можете сделать с модулями кода, бесчисленны и могут охватить более чем любой ответ Stack Exchange. Я написал серию статей, которые, хотя и немного устарели, но все же являются хорошим основанием для введения в концепции кодирования Magento.

Наконец, Re:

Любая другая информация, которую вы хотели бы знать, начиная с magento?

Я немного предвзят, но я продаю расширение для отладки Magento под названием Commerce Bug (нажмите на небольшую ссылку отладки). Это собирает и отображает всю информацию, которую разработчик должен знать при работе с Magento. Это огромная помощь, когда вы изучаете систему (я построил ее, чтобы помочь мне изучить систему, когда), и остается полезной, когда вы работаете изо дня в день в системе Magento. Если вы платите почасово за свою работу, вы вернете цену покупки для вашего первого проекта.

Алан Сторм
источник
7

В дополнение к ответу @ philwinkle, я хочу ответить на ваше утверждение относительно переопределения классов с использованием приоритета пути PHP.

Считайте, что это экстренное решение, если нет другого способа выполнить то, что вы хотите. Часто вы можете указать, какой класс использовать, с помощью параметра конфигурации XML или с помощью переписывания класса (также указанного в config XML).
Недостатки хак-пути include :

  • Не работает для контроллеров
  • Не работает ни для чего, кроме классов PHP (например, файлов config.xml )
  • Вам нужно будет объединить изменения в локальные копии при обновлении Magento
  • Смущает отладка, так как большинство разработчиков Magento просто предполагают, что Модули из пространства имен Mage живут в основном пуле кода.
Vinai
источник
1
Абсолютно правильно. Я не был уверен, как это сделать без отдельного ответа.
Philwinkle
Я думаю, что это было хорошей идеей, чтобы держать это отдельно.
Vinai
Приятно знать, я знал, что это не выглядело «правильно», но я не был уверен, есть ли другой способ, поэтому я еще многому научился, спасибо
JasonDavis
4

Прежде всего, вы не должны думать о переписывании или расширении основных модулей или классов. Вы должны изучить архитектуру Magento, написать собственный тестовый модуль / расширение с небольшими функциональными возможностями, которые не имеют чистоты Magento, концепции EAV, иерархии макетов, темы Magento и потока разработки. Я ссылаюсь на эту ссылку: Modern Magento 1.X Workflow и инструменты разработки . Удачи

mageUz
источник