A brief reminder of the Magento 1 folder structure:
- app/code followed by either
- /core for core files
- /community for third party extensions
- /local for custom development
- Modules in the above areas were declared via an XML file in app/etc/module
- Layouts and templates were located in app/design/frontend
- Style and JS files were stored in the skin and js subdirectories.
Magento 2 replaces the core/communitys module groupings and everything is now directly stored in app/code or vendor composer modules.
Modules are Declared inside each module in the /etc directory. Layouts and templates are moved a new /view directory.
Style and JS files are moved inside modules.
- All core, third party, custom and theme modules go in either vendor (composer) or app/code.
- Core modules are include in the same way local or community modules are. Each module is listed under a vendor-name/module-name directory inside either vendor or app/code For core modules, the vendor is “magento”.
- Module front-end code is now stored with the module rather than with the front-end theme. For example the Luma theme is stored as a module in vendor/magento/theme-frontend-luma
Magento 2 Modules
Each module, once installed either manually or via composer will create the following inside the app/code directory:
- /etc - the main configuration folder and module xml
- /Setup - database table related file which run in the first instance/during updates
- /Controller - controller classes and implementation
- /Model - model classes/business logic
- /Helper - miscellaneous data
- /Block - view classes
- /view - phtml, CSS and JS required to display the module
- /i18n - internationalisation/languages