Nauka programowania wtyczek Magento

30

Jestem programistą PHP od ponad 13 lat, mam rozległą wiedzę na temat samego PHP, o ile inne popularne projekty, takie jak WordPress. Nie mam doświadczenia z Magento.

Mam teraz pełnoetatową pracę w firmie korzystającej z Magento, cała moja praca programistyczna będzie teraz dotyczyła Magento.

Moje pierwsze przemyślenia po pierwszym spojrzeniu na Magento brzmią: wow, w co teraz się wciągnąłem? Ale wtedy doświadczony programista we mnie wychodzi i pamięta, to tylko PHP.

Mam więc kilka podstawowych pytań do Magento, na które naprawdę doceniłbym odpowiedzi od bardziej doświadczonych programistów Magento ...

  1. Jakie są najbardziej przydatne miejsca do nauki o rozwoju Magento obok tej strony?
  2. Rozszerzenia / wtyczki są dla mnie bardzo mylące. Inne platformy, takie jak WordPress, umożliwiają umieszczenie wtyczki we własnym folderze, a wszystkie jego pliki będą znajdować się w tym folderze. Z tego, co widziałem do tej pory, wtyczka może być rozrzucona po kilku folderach w Magento, czy to prawda?
  3. Nauczyłem się, jak przekraczać funkcjonalność Core. Więc jeśli plik w rdzeniu znajduje się tutaj /app/code/core/Mage/SitemapModel/Resource/Catalog, mogę go zastąpić, tworząc plik w tej lokalizacji, /app/code/local/Mage/SitemapModel/Resource/Catalogwięc jak to działa z rozszerzeniem / wtyczką? Jeśli utworzę wtyczkę, która musi prześcignąć podstawową funkcjonalność, to muszę mieć moje pliki wszędzie, aby to rozszerzenie działało?
  4. Jakieś inne informacje, które chciałbyś wiedzieć, zaczynając od magento?

Dzięki za wgląd, wiem, że jest to wieloczęściowe pytanie, ale uważam, że każda z odpowiedzi byłaby pomocna dla mnie i dla innych. Zrobię tę publiczną wiki, jeśli będę musiał.

JasonDavis
źródło
1
Gdyby istniało coś takiego jak lepka wymiana stosów, to te pytania i odpowiedzi byłyby takie! Jakim zasobem to się zmieniło :)
McNab
@McNab Nie ma lepkiej funkcji, jednak pytania, które mają najwięcej głosów, zazwyczaj mają wyższą pozycję i pojawiają się częściej. Również ta strona magento.stackexchange.com/?tab=month pokazuje teraz to pytanie jako numer 2, więc jest to trochę Przyklejony, ale mówi „Miesiąc”, więc nie jestem pewien, jak długo zachowa swoją lepkość. Zgadzam się, że stało się to świetnym zasobem, a ja faworyzowałem go i zaznaczyłem, aby ułatwić dostęp w przyszłości. BTW, proszę podziel się tą społecznością ze swoimi przyjaciółmi, aby na pewno został stałym domem i nie umarł po okresie Beta
JasonDavis

Odpowiedzi:

24

Skoncentruję się na pierwszej części twojego pytania - „ jak się uczyć / od czego zacząć?

Jako były programista Zend Framework, największą pomocą w rozwoju Magento była eksplozja nauki online, którą Magento U przyniósł w ciągu ostatnich 2 lat. Oprócz formalnego uczenia się - uczę się głównie poprzez działanie i „robię” Magento od ponad 5 lat.

Niektóre konkretne zasoby edukacyjne:

Oprócz narzędzi edukacyjnych, moim największym narzędziem do nauki było badanie zewnętrznych modułów Magento. Dokładnie czytam kod i uczę się z niego. Możesz zrobić to samo, ucząc się z modułów podstawowych.

Niektóre witryny, które będą pomocne w podróży edukacyjnej:

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

http://alanstorm.com/

http://colin.mollenhour.com/

http://magentotherightway.com/

Niektórzy epiccy programiści do naśladowania:

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

Fabrizio Branca: https://github.com/fbrnc/

Vinai Kopp: https://github.com/Vinai

Zaangażuj się społecznie - poznaj programistów rockstar i zacznij śledzić ich na Twitterze. Dotrzyj do określonych osób, gdy potrzebujesz pomocy; ta społeczność jest niezwykle dostępna. Wykorzystaj społeczność na swoją korzyść.

Niektóre listy na Twitterze:

https://twitter.com/inchoo/magento

https://twitter.com/kkoepke/magento

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

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

Wreszcie - w przyszłym roku wybierz się na wędrówkę do Magento Wyobraź sobie w przyszłym roku i naciśnij ciało. Namierz nas, zadaj nam pytania. Wyjdź na lokalne spotkania. Jeśli spotkanie nie istnieje w Twojej okolicy - rozpocznij je . Bądź wytrwały. Nie pozwól, aby twój brak wiedzy powstrzymywał cię od nawiązywania kontaktów i poznawania ludzi. Twoje relacje w społeczności opłaci się dywidendami.

philwinkle
źródło
14

Moje 2 centy za genialną odpowiedź @ philwinkle.

Istnieją dwa oficjalne pliki PDF

1) Przewodnik dla programistów rozszerzeń Magento

80 stron na temat tworzenia niestandardowego rozszerzenia od zera krok po kroku. Moduł „Nowości” został opracowany od podstaw - pokaże Ci strukturę i strukturę folderów, pliki konfiguracyjne, kontrolery, modele, bloki.

2) Przewodnik projektanta po Magento można znaleźć tutaj http://www.magentocommerce.com/resources/magento-user-guide

60 stron na temat sposobu organizacji i tworzenia własnych motywów, pakietów zgodnie z najlepszymi praktykami.

Jest też nowa książka dla tych, którzy mają doświadczenie w PHP i zaczynają od Magento - Magento PHP Developer's Guide autorstwa Allana McGregora i ma bardzo dobre recenzje od deweloperów Magento na Amazon i różnych blogach

Kanały wideo: kanał YouTube Magento Commerce

Poznaj filmy z konferencji Magento

Inne dobre blogi:

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/

Siergiej Guk
źródło
1
To jest świetne - niesamowite zasoby!
philwinkle
8

Świetne odpowiedzi tutaj do tej pory dookoła. Jeżeli chodzi o

Rozszerzenia / wtyczki są dla mnie bardzo mylące. Inne platformy, takie jak WordPress, umożliwiają umieszczenie wtyczki we własnym folderze, a wszystkie jego pliki będą znajdować się w tym folderze. Z tego, co widziałem do tej pory, wtyczka może być rozrzucona po kilku folderach w Magento, czy to prawda?

Terminologia w Magento staje się trochę myląca. Wczesny rozwój platformy był bezwzględnie szybki i wiele razy zobaczysz nakładające się koncepcje fałszywych startów i zmian kierunku. Rozszerzenia / wtyczki / moduły / Jestem programistą i chcę dodać mój kod do systemu to jeden z tych obszarów.

Magento Połącz Rozszerzenie to po prostu pakiet plików, które mogą zostać zainstalowane w systemie Magento. Jest całkowicie oddzielony od innych programowych podsystemów Magento.

Jednak bliżej tego, do czego jesteś przyzwyczajony, są moduły kodów Magento . Z grubsza mówiąc, moduł kodu to zbiór plików PHP, które Magento postrzega jako pojedynczą jednostkę. Moduły znajdują się w jednym z trzech folderów

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

Jeśli chcesz dostosować Magento lub dodać nowe funkcje, prawie zawsze zaczniesz od modułu kodu. W rzeczywistości sam Magento jest zbudowany na około 60 - 70 modułach kodu. Na przykład Mage_Cmsmoduł w

app/code/core/Mage/Cms

zawiera kod, który sprawia, że ​​funkcje CMS Magento działają. Jeśli masz zamiar stworzyć moduł, który doda kotki do Magento, możesz utworzyć moduł o nazwie Jasondavis_Kittiesi umieścić go w

app/code/community/Jasondavis/Kitties

Re: core, communityoraz local- pierwszy jest dla programistów Magento, więc nie dotykać. Drugi dotyczy rozszerzeń, które mają być rozpowszechniane wśród społeczności. Ostatni dotyczy rozszerzeń, które mają być opracowywane lokalnie dla określonego systemu.

Ostatnie zamieszanie dotyczy pakietów projektowych . Kod, którego Magento używa do renderowania i zarządzania swoim HTML, jest całkowicie odrębnym systemem. Właśnie dlatego phtmlpliki są oddzielone od plików modułów kodu . Możesz znaleźć te pliki w

app/design

teczka.

Najbardziej dobrze napisane, profesjonalne rozszerzenia są dystrybuowane jako rozszerzenia Magento Connect, które instalują jeden lub wiele modułów kodu Magento i zawierają szereg niestandardowych phtmlszablonów i plików XML układu zainstalowanych w base pakiecie projektowym .

Specyficzne rzeczy, które możesz zrobić z modułami kodu, są niezliczone i mogą obejmować więcej niż jedną odpowiedź Stack Exchange. Napisałem serię artykułów, które, choć trochę przestarzałe, wciąż stanowią solidne wprowadzenie do koncepcji kodowania Magento.

Wreszcie Re:

Jakieś inne informacje, które chciałbyś wiedzieć, zaczynając od magento?

Jestem trochę stronniczy w tej kwestii, ale sprzedaję rozszerzenie debugowania Magento o nazwie Commerce Bug (kliknij link małego debugowania). Gromadzi i wyświetla wszystkie informacje, które deweloper powinien znać podczas pracy z Magento. Jest to ogromna pomoc, gdy uczysz się systemu (zbudowałem go, aby pomóc mi nauczyć się systemu dawno temu) i pozostaje pomocna, gdy pracujesz na co dzień w systemie Magento. Jeśli naliczasz opłatę za godzinę pracy, zwrócisz cenę zakupu przy pierwszym projekcie.

Alan Storm
źródło
7

Oprócz odpowiedzi @ philwinkle, chcę odpowiedzieć na twoje oświadczenie dotyczące zastępowania klas za pomocą PHP priorytetu ścieżki włączenia.

Rozważ to rozwiązanie awaryjne, jeśli nie ma innego sposobu na osiągnięcie tego, co chcesz. Często można określić, której klasy użyć, poprzez ustawienie XML konfiguracji lub przepisanie klasy (określone również w config XML).
Wady hackowania ścieżki obejmują :

  • Nie działa dla kontrolerów
  • Nie działa na nic poza klasami PHP (na przykład pliki config.xml )
  • Podczas aktualizacji Magento będziesz musiał scalić zmiany w swoich lokalnych kopiach
  • Mylące w debugowaniu, ponieważ większość programistów Magento po prostu zakłada, że ​​moduły z przestrzeni nazw Mag znajdują się w podstawowej puli kodów.
Vinai
źródło
1
Absolutnie poprawne. Nie byłem do końca pewien, jak to zrobić bez osobnej odpowiedzi.
philwinkle
Myślę, że dobrym pomysłem było oddzielenie tego.
Vinai
Dobrze wiedzieć, wiedziałem, że to nie wygląda „dobrze”, ale nie byłem pewien, czy istnieje inny sposób, więc wiele się jeszcze nauczyłem dzięki
JasonDavis
4

Przede wszystkim nie powinieneś myśleć o przepisywaniu lub rozszerzaniu podstawowych modułów lub klasy. Musisz nauczyć się architektury Magento, napisać własny moduł testowy / rozszerzenie z niewielką funkcjonalnością, która nie wyczyściła Magento, koncepcji EAV, hierarchii układu, motywu Magento i przepływu projektu. Odsyłam ten link: Modern Magento 1.X Workflow and Development Tools . Powodzenia

magUz
źródło