Magento jest potężnym silnikiem zorientowanym obiektowo. I jak na taki kombajn przystało ma swoją strukturę:
app // główny folder z modułami, tłumaczeniami i szablonami
--| code // folder z modułami
----| community // moduły zaciągnięte ze stron prywatnych firm
----| core // główne moduły magento
----| local // nasze własne moduły oraz rozszerzenia core
--| design // szablony
--| locale // tłumaczenia
--| etc // pliki konfiguracyjne
js // biblioteki js
media // uploadowane pliki dla produktów, kategorii oraz te wgrywane przez edytor
lib // biblioteki zewnętrzne m.in. Zend Framework i Varien
skin // pliki szablonów takie jak css czy obrazki
var // tutaj znajdziemy cache, raporty i logi błędów, pliki sesji etc.
Każdy moduł również musi posiadać określoną strukturę aby poprawnie działał.
Przestrzeń_Nazw lub Nazwa_dostawcy
--| Nazwa_Modułu
-----| Block // Logika wiążąca kontroler z modelem
-----| Controller // Kontrolery MVC
-----| controllers // klasy abstrakcyjne, interfejsy, kontrollery
-----| etc // konfiguracja modułu
-----| Helper // helpery wspierające poprawne wyświetlenie danych w szablonie
-----| Model // modele
-----| sql // mechanizmy aktualizujące bazę danych
Oprócz tego aby moduł został poprawnie zainstalowany musi posiadać odpowiedni plik instalacyjny w katalogu :
app/etc/modules
Plik ten powinien zawierać informację o:
- nazwie modułu,
- przestrzeni w jakiej się znajduje moduł,
- informacje o tym czy jest aktywny czy nieaktywny
- jakie posiada zależności