Навчання розробці плагінів Magento


30

Я був розробником PHP протягом 13+ років, маю широкі знання щодо самого PHP до тих пір, як і інші популярні проекти, такі як WordPress. Я не маю досвіду роботи з Magento.

Зараз я працюю на повний робочий день, працюючи в компанії, яка використовує Magento, зараз вся моя робота з розробки буде над Magento.

Мої початкові думки після першого погляду на Magento: ось, що я зараз у себе взяв? Але потім досвідчений розробник у мене виходить і згадує, це просто PHP.

Отож, у мене є кілька основних питань Magento, які я дуже вдячний би на деякі відповіді більш досвідчених розробників Magento ...

  1. Які найкращі корисні місця дізнатися про розвиток магенто поруч із цим сайтом?
  2. Розширення / плагіни для мене зараз дуже заплутані. Інші платформи, такі як WordPress, дозволяють розміщувати плагін у власну папку, і всі його файли будуть жити під цією папкою. З того, що я бачив до цього часу, плагін може бути розкиданий по декількох папках в Magento, це правильно?
  3. Я дізнався про те, як перевантажувати основні функції. Отже, якщо файл в ядрі знаходиться тут, /app/code/core/Mage/SitemapModel/Resource/Catalogто я можу переоцінити його, створивши файл у цьому місці, /app/code/local/Mage/SitemapModel/Resource/Catalogтак як це працює з розширенням / плагіном? Якщо я створю плагін, який потребує надмірного функціонування ядра, то я повинен мати свої файли всюди, щоб це розширення працювало?
  4. Будь-яка інша інформація, яку ви хочете, щоб ви знали, починаючи з magento?

Дякую за будь-яке розуміння, я знаю, що це запитання з декількома частинами, але я вважаю, що будь-яка з відповідей була б корисною мені і іншим, і я опублікую цю публічну вікі, якщо потрібно.


1
Якби на stackexchange існувало таке поняття, як липкий, то це питання було б одним! У який ресурс це перетворилося :)
McNab

@McNab Немає функції Sticky, однак питання, які мають найбільше голосів, як правило, займають вище, і їх частіше бачать. Також ця сторінка magento.stackexchange.com/?tab=month відображає це питання як номер 2 зараз, так що це свого роду Клейке, але на ньому написано "Місяць", тому я не впевнений, як довго він збереже свою липкість. Я погоджуюсь, що це перетворилося на чудовий ресурс, і я вважаю, що він надав перевагу та спростував для легкого доступу в майбутньому. BTW, будь ласка, поділіться цією спільнотою зі своїми друзями, щоб вона впевнено стала постійним домом і не померла після бета-періоду
JasonDavis

Відповіді:


24

Я сфокусуюсь на першій частині вашого запитання - " як я навчаюся / з чого почати? "

Як колишній розробник Zend Framework, найбільшу допомогу мені в розробці Magento став вибух в навчанні в Інтернеті, який Magento U приніс за останні 2 роки. Окрім формального навчання - я вчуся, головним чином, займаючись , і я займаюся "Мадженто" вже більше 5 років.

Деякі конкретні навчальні ресурси:

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

Деякі веб-сайти, які будуть корисні вам у навчальній подорожі:

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

http://alanstorm.com/

http://colin.mollenhour.com/

http://magentotherightway.com/

Деякі розробники епосів, які слід дотримуватися:

Alistair Stead: https://github.com/alistairstead

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

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

Будьте соціально залучені - знайомтесь із деякими розробниками 'rockstar' та почніть слідкувати за ними у 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 Уявіть собі наступного року і натисніть на плоть. Простежте за нами, задайте нам питання. Виходьте на місцеві зустрічі. Якщо зустрічі у вашому регіоні не існує - почніть її . Будьте наполегливі. Не дозволяйте, щоб ваша нестача знань перешкоджала спілкуванню та спілкуванню з людьми. Ваші відносини в громаді окупляться дивідендами.


14

Мої 2 центи на блискучу відповідь @ philwinkle.

Є два офіційні PDF-файли

1) Посібник для розробників Magento Extension

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

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

60 сторінок про те, як організувати та створити власні теми, пакунки відповідно до кращих практик.

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

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

Зустріньте відео з конференцій 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 Connect Extension просто пакет файлів , які можуть бути встановлені в систему Magento. Він повністю відокремлений від будь-якої з інших програмних підсистем Magento.

Ближче до того, до чого ви звикли, хоч це модулі Magento Code . Грубо кажучи, модуль коду - це набір файлів 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 конфігурації або за допомогою переписування класу (також вказано в конфігураційному XML).
Недоліками хак шляху включення є:

  • Не працює для контролерів
  • Не працює для нічого, крім класів PHP (наприклад, файлів config.xml )
  • Під час оновлення Magento вам доведеться об'єднати зміни у ваші локальні копії
  • Заплутана помилка, оскільки більшість розробників Magento просто припускають, що Модулі з простору імен Mage живуть в основному кодовому пулі.

1
Абсолютно правильно. Я не був дуже впевнений, як це зробити без окремої відповіді.
philwinkle

Я думаю, що це було б гарною ідеєю тримати його окремо.
Vinai

Приємно знати, я знав, що це не виглядає "правильно", але я не був впевнений, чи є інший спосіб, тому я маю багато чому навчитися ще дякую
JasonDavis

4

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.