Dlaczego Magento ma 3 pule kodów?

26

Magento ma trzy pule kodów:

  1. społeczność
  2. rdzeń
  3. lokalny

Rdzeń: Zawiera wszystkie domyślne moduły Magento

Społeczność i lokalne: Używamy tych pul kodów do opracowywania niestandardowych modułów.

Teraz mam co do tego wątpliwości:

  • dlaczego Magento korzysta z dwóch pul kodów w celu dostosowania?
  • dlaczego Magento nie używa jednej puli kodów do dostosowywania?

Czy ktoś mógłby to wyjaśnić?

MeenakshiSundaram R.
źródło

Odpowiedzi:

34

app / code / core - Przechowuje moduły dystrybuowane wraz z podstawowym Magento i tworzą podstawową funkcjonalność.

app / code / community - Przechowuje moduły opracowane przez strony trzecie

app / code / local - Przechowuje niestandardowe moduły, które opracowałeś, w tym przesłonięcia kodu Maga.

Dlaczego Magento korzysta z dwóch pul kodów w celu dostosowania?

Magento faktycznie używa trzech pul kodów. Załaduje najpierw lokalny , społeczność drugi, a rdzeń trzeci. Używa trzech do celów organizacyjnych i pomaga rozwiązać problemy, gdy dwa + zewnętrzne rozszerzenia próbują przepisać to samo. W przykładzie, w którym masz dwa rozszerzenia w app / code / community próbujące przepisać ten sam model, możesz po prostu zrobić rozszerzenie w app / code / local i połączyć logikę dwóch rozszerzeń razem.

Dlaczego Magento nie używa pojedynczej puli kodów do dostosowywania?

Zrobiono to w ten sposób, aby spróbować uporządkować kod. Ponadto, gdy masz konflikty z osobami trzecimi, lokalny jest świetny, aby pomóc rozwiązać te problemy. Lokalne jest również świetne, aby mieć rozszerzenia, które tylko ta witryna kiedykolwiek będzie miała.

kab8609
źródło
1
Dobra odpowiedź na pytanie dotyczące pojedynczej puli kodów. Biorąc pod uwagę wszystkie konflikty, które napotkasz po zainstalowaniu kilku modułów stron trzecich, bardzo potrzebna jest ta trzecia localpula kodów, aby wyeliminować wszystkie zawieszenia.
Fiasco Labs,
11

wprowadź opis zdjęcia tutaj

core :Ta pula kodów należy do zespołu programistów Core Magento. Dlatego NIE powinieneś dokonywać żadnych modyfikacji w tej puli kodów.

community :Należy do programistów społeczności Magento (w tym programistów, którzy opracowują rozszerzenia stron trzecich). Jeśli tworzysz rozszerzenia stron trzecich, możesz do tego użyć tej puli kodów.

local :Można tego użyć, jeśli chcesz wprowadzić jakiekolwiek modyfikacje (dodać nową funkcjonalność / zastąpienie rozszerzenia / modyfikacje podstawowych funkcji itp.) Specjalnie dla swojego sklepu Magento i nie chcesz udostępniać go społeczności. Jednocześnie możesz zastąpić funkcjonalność puli kodów podstawowych i wspólnotowych

Sukeshini
źródło
5

Opisz Codepools Magento

Pula rdzeni

Przede wszystkim ten folder przechowuje cały kod, dzięki któremu Magento jest tak potężny, elastyczny i piękny. Główną zasadą rozwoju Magento jest to, że nigdy nie powinieneś dokonywać w nim żadnych zmian. Innymi słowy, ten folder należy tylko do głównych deweloperów Magento i jeśli zamierzasz edytować coś w tej puli, ich zły duch może cię ukarać nawet przez wyświetlanie.

Pula wspólnoty

Ten folder należy całkowicie do programistów społeczności. To właściwe miejsce dla setek rozszerzeń innych firm, zarówno darmowych, jak i płatnych, które można znaleźć na MagentoConnect lub dostępnych w sklepie z programami rozszerzeń. Zasadniczo, jeśli masz zainstalowane jakieś rozszerzenie, musi ono znajdować się tylko w app / code / community /.

Lokalny basen

Jeśli masz własny sklep oparty na Magento i chcesz zrobić wszystko sam lub jesteś deweloperem Magento i chcesz zmienić logikę, lokalna pula jest miejscem, w którym wszystko powinno być zrobione. Jeśli chcesz zastąpić rozszerzenia, bloki lub metody Magento, skopiuj niezbędne foldery z puli Core i rób wszystko, co chcesz. Zastosuj tę samą regułę do niestandardowych rozszerzeń tworzonych specjalnie dla witryny - cały kod powinien znajdować się w puli lokalnej.

Keyul Shah
źródło
4

Dodanie wszystkich powyższych w prosty sposób do robienia priorytetów i posiadania modułowości. Możesz to samo sprawdzić w Mage.php.

Ładowanie pul kodów za pomocą

 $paths[] = BP . DS . 'app' . DS . 'code' . DS . 'local';
 $paths[] = BP . DS . 'app' . DS . 'code' . DS . 'community';
 $paths[] = BP . DS . 'app' . DS . 'code' . DS . 'core';
 $paths[] = BP . DS . 'lib';

SO najpierw lokalny zwany wtedy społecznością, a następnie core i magento nie znajdzie żadnych plików podstawowych, a następnie przeszuka folder lib zawierający pliki Core Zend-Framework

Bharath
źródło
1

Najlepszym wyjaśnieniem, jakie mam, jest to, że jeśli zamierzasz rozpowszechniać swoje rozszerzenia wśród szerszej publiczności, na przykład za pośrednictwem Magento Connect, możesz umieścić je w społeczności.

Umożliwiłoby to innemu deweloperowi zastąpienie zachowania przez umieszczenie klasy w folderze lokalnym.

Kristof w Fooman
źródło