Magento 2可以被认为是Magento的最新版本,Magento是一个领先的企业级电子商务平台。继承了Magento之前版本的众多成功因素,Magento 2还展示了现代技术和结构,并修改了目录结构,但将其提升到了一个全新的水平,更加简化了定制。目前,有超过20万名在线零售商使用Magento 2平台。
Magento 2文件样本模块的结构包含块,控制器,帮助器,模型等。这些都与特定的业务功能相关。管理员ACL,管理员菜单和配置都包含在etc文件夹中。如果您想知道创建简单hello world模块的方法,可以访问我们的Simple Hello World模块。
1. Magento 2文件结构
你可以看到Magento 2文件结构包含app,bin,setup,phpserver,var,generated,lib,pub,dev。请参见下图。
为了帮助您理解结构,我将浏览每个文件夹包含的内容和文件内容。
应用( app )
此文件夹中有三个主要子目录design
,i18n
和etc
。您拥有的所有模块都应包含在app/code/<CompanyName>/<ModuleName>
目录中。此外,此处还推荐您的所有第三方模块。
您应该将自定义商店主题存储在app/design/frontend
子目录下,并且所有管理主题都应存储在app/design/adminhtml
子目录中。
app/i18n
directory是语言包存储的文件夹。如果您想创建一个可以更好地满足您的客户需求的多语言商店,您可以使用此文件夹。
干净安装后,code
子目录将丢失。此外,为避免自定义模块与Magento的核心模块混合,您需要在vendor
目录中添加所有Magento核心模块。这是因为,与Magento 1版本不同,Magento 1版本的所有Magento核心模块都必须提交给他们的Git存储库,而Magento 2这两个版本是分开的。
通过包含Magento核心模块的Composer,您可以存储所有已安装的软件包。您可以扩展模块,而不是直接从此文件夹中工作,这可以在升级供应商文件后覆盖所有更改app/code/<CompanyName> or app/design
。
phpserver
这个Router.php
文件可以用来实现PHP内置服务器。但是,不建议您使用此文件,因为它可能会对您的站点造成许多潜在的大安全漏洞。
bin
Magento CLI可执行脚本存储在此目录中。使用此脚本,将激活Magento命令,这有助于清除缓存或重建索引。
setup
这包含与Magento安装设置相关的所有文件
generated
这是Magento生成的代码存储的地方。在默认设置中,如果在构造函数中注入类,则Magento将生成代码以创建不存在的工厂类。
VAR
这包括生成的类,会话,缓存,数据库备份和缓存的错误报告。在此文件夹中,您可以生成许多子目录的内容,包括var/di
何时php bin/magento setup:di:compile
运行。
var/log
存储Magento日志文件主要是exception.log和system.log文件。
var/cache
包含Magento的所有缓存。建议您使用php bin/magento cache:clean
命令清除缓存,以查看开发更改。
dev
存储由Magento测试框架运行的自动功能测试。
LIB
它包含所有Magento和供应商库文件。它还包括所有基于非模块的Magento代码。
pub
一个index.php
文件将被存储在这个目录下。您可以使用此文件在生产模式下运行应用程序。此目录为您提供了一个安全措施,可以限制对根目录资产的公共访问。此外,此文件夹还包括您的Magento主题生成的静态文件
vendor
这是一个包含框架核心的目录。这里也是您可以安装其他模块的地方。使用composer.json文件创建供应商文件夹的所有操作。如果查看此文件夹,您将看到没有文件或文件夹。这只是因为composer.json将创建这些文件和文件夹。您将能够看到在composer.json文件下定义的众多包。
2.组件文件结构
在提供了关于定义和结构的几个基本知识之后,在这一部分中,我将介绍组件类型的不同文件结构。Magento的应用程序将查找创建组件的文件,包括组件文件结构内特定位置的配置文件。为了确保组件类型正常工作,您需要遵循预定义的文件结构。
根目录( Root directory )
组件的根目录与其名称匹配,并且还包括其所有子目录和文件。根据您安装Magento的方式,您的组件的根目录可以放在以下两个位置之一:
<Magento install directory>/app
:这是组件开发的可取位置。通过使用克隆Magento 2 GitHub存储库,您可以设置此环境。- 申请
app/code
模块 - 申请
app/design/frontend
店面主题 - 申请
app/design/adminhtml
管理主题 - 申请
app/i18n
语言包
- 申请
<Magento install directory>/vendor
:此位置可以在composer create-project用于安装Magento 2元数据包的安装中找到,该元数据包是下载CE或EE代码的。如果您提取压缩的Magento 2存档以安装Magento,也可以找到此位置。
所需文件( Required files )
所有组件都需要以下文件:
registration.php
:这是将使用Magento注册您的组件的文件。在此文件中,组件的根目录名称用作组件名称。因此,默认情况下,组件安装在<Magento root dir>/vendor directory
。etc/module.xml
:这是定义组件基本信息的文件,例如,组件依赖性和版本号。版本号将用于确定执行时要更新的架构和数据bin/magento setup:upgrade
。composer.json
:这是定义组件在运行时所需的依赖项的文件。
3.模块文件结构
在下图中,您将看到典型的文件结构如何:
了解更多:如何为Magento 2创建自定义模块
常用目录
以下是一些常见的模块目录:
Block
:包括PHP视图类作为模块逻辑模型视图控制器(MVC)垂直实现的一部分。Controller
:包括PHP控制器类作为模块逻辑MVC垂直实现的一部分。etc
:包括配置文件; 特别是module.xml
,这是必需的。Model
:包括PHP模型类作为模块逻辑MVC垂直实现的一部分。Setup
:包括模块数据库结构和数据设置的类。安装或升级时会调用这些数据。
其他目录
可以添加这些文件夹以用于配置或其他项目辅助功能,例如本地化,插件和布局文件。
Api
:包括任何暴露给API的PHP类。Console
:包括CLI命令。Cron
:包括cron作业定义。CustomerData
:包括部分文件。Helper
:包括聚合功能。i18n
:包括本地化文件。Observer
:包括用于执行来自侦听器的命令的文件。Plugin
:包括任何所需的插件。UI
:包括数据生成文件。view
:包括视图文件,包含静态视图文件,电子邮件模板,设计模板和布局文件。
4.主题文件结构
以下是典型主题文件结构的外观:
了解更多:如何为Magento 2创建自定义主题
常用目录
以下是典型的主题目录:
etc
:包括配置文件,例如view.xml文件,其中包含所有图像和缩略图的图像配置。i18n
:翻译词典,如果有的话。media
:主题预览图像可以放在此目录中。web
:可选目录,其中包含组织到以下文件中的静态文件:css/source
:包含一个主题较少的配置文件,它调用Magento UI库中全局元素的mixins,以及覆盖默认变量值的theme.less文件。css/source/lib
:包括覆盖存储在其中的UI库文件的视图文件lib/web/css/source/lib
。fonts
:您可以在此文件夹中放置主题的不同字体。images
:静态图像文件夹。js
:用于JavaScript文件的文件夹。
5.语言包文件结构
下面是法语的典型目录结构如何:
语言包所需的唯一目录是顶级目录。为了获得更好的性能,我建议您使用与ISO代码匹配的目录名来标识区域设置。
结论
总之,文件结构在自定义Magento 2网站方面起着至关重要的作用。通过了解文件结构中每个文件夹的功能,您可以确保在创建组件文件结构时,组件文件结构将完美运行。