Generally, we strive to adhere to the Symfony directory structure.
Additional directories:
assets- regular location for resources storage with a specific folder structure inside;classes- the core code for code generation (see Modules system);docs- support documentation, changelog;Includes- shared code (legacy);lib- libraries (legacy);modules- add-ons code (see [Modules system);service-tool- internal app for the X-Cart maintenance (add-ons installation and de-installation, updates, etc.);sql- basic data for installation;templates- regular location for templates storage with a specific folder structure inside.
Assets и Templates
Assets and templates are divided into zones and interfaces. Generally, there are three interfaces (web, mail, pdf) and two zones (admin and customer). The common zone is a parent for all other zones. The mail and pdf zones override the web zone.
[todo перенести в отдельный док, это слишком подробная информация для этого раздела]
The general assets and templates folder structure:
{assets,templates}/
web/
admin/
common/
customer/
mail/
admin/
common/
customer/
pdf/
admin/
common/
customer/
If you need to find, e.g., the body.twig template for the webinterface and admin zone, the search order will be as follows:
templates/web/admin/body.twigtemplates/web/common/body.twig
If you need to find the body.twig template for the mailinterface and admin zone, the search order will be as follows:
templates/mail/admin/body.twigtemplates/mail/common/body.twigtemplates/web/common/body.twig
The search will also be done through the resources’ and add-on templates’ paths in the following way. First, it will search through the skin add-ons following the skin inheritance, then through the rest of the add-ons taking dependencies into account, and the last in the core.
Suppose you have two skins (XCExample-SkinChild and XCExample-SkinParent) and two add-ons (XCExample-Module1 and XCExample-Module2). The search for the body.twig template for the mail interface and admin zone, in this case, will be done as follows:
modules/XCExample/SkinChild/templates/mail/admin/body.twigmodules/XCExample/SkinParent/templates/mail/admin/body.twigmodules/XCExample/Module2/templates/mail/admin/body.twigmodules/XCExample/Module1/templates/mail/admin/body.twigtemplates/mail/admin/body.twigmodules/XCExample/SkinChild/templates/mail/common/body.twigmodules/XCExample/SkinParent/templates/mail/common/body.twigmodules/XCExample/Module2/templates/mail/common/body.twigmodules/XCExample/Module1/templates/mail/common/body.twigtemplates/mail/common/body.twigmodules/XCExample/SkinChild/templates/web/common/body.twigmodules/XCExample/SkinParent/templates/web/common/body.twigmodules/XCExample/Module2/templates/web/common/body.twigmodules/XCExample/Module1/templates/web/common/body.twigtemplates/web/common/body.twig