【转】Magento2目录结构
目錄結構
可以看到,M2的目錄挺多的。
我們依次來講解下,
我這里截取的是github里的源代碼,核心代碼跟composer和官網下載的源碼包的存放路徑不一樣。
如果是github下載的,那么m2的核心源代碼就在app/code/Magento里。
如果是composer安裝或者官網下載的源碼包,那么m2的核心源代碼就在vendor/magento里。
其他的都是一樣的
app
毫無疑問,app目錄就是存放的網站源代碼。
我們的插件/主題/js/css/等等都放在這個目錄里。
bin
這是M2提供的命令行工具,比如最常用的
我們之前就用這個工具來自動安裝m2了。
dev
M2的單元測試代碼,這個我們普通用戶一般用不到。
m2的官方開發(fā)者會用到。
一般用不到,不管他就行。
generated
這個比較特殊,在M2里可以定義一些虛擬類。
這些類是自動生成的,會放在generated目錄里。
相當于php代碼緩存。
如果你有修改php的構造函數function __construct()里的代碼,就要rm generated/* -rf,不然會出現找不到類或者其他奇怪的錯誤。
lib
這里放的是m2自帶的公用js/jquery插件和字體。
一般用不到,不管他就行。
phpserver
這里放的是php內置的web服務器。
用來代替瀏覽器,直接命令行里打開網站。
一般用不到,不管他就行。
pub
這里存放的是圖片文件(比如產品圖片)
以及生成的靜態(tài)緩存文件.
我們會經常用到
setup
一看就知道是安裝目錄,沒什么好說的。
var
這里存放的是cache以及page cahce緩存文件。
以及l(fā)og,report,export文件等。
我們會經常用到
vendor
這里存放的是第三方php組件。
也就是composer install后下載安裝的第三方php組件。
如果是composer安裝或者官網下載的源碼包,那么m2的核心源代碼就在vendor/magento里,
這樣的話我們以后在開發(fā)過程中,會經常調試vendor/magento里的核心代碼。
.htaccess
這個是apache服務器里的配置文件
如果你用的是apache服務的話 會用到這個文件
composer.json
這里就是m2依賴的各種庫文件。
composer install 就是讀取的這個文件。
index.php
毫無疑問,這是入口文件
注意: M2的默認nginx配置的入口文件是在pub/index.php里,是為了安全,不暴露app/文件夾。
nginx.conf.sample
這是nginx下,m2官方推薦的配置文件。
如果你用的是nginx服務的話,會用到這個文件
基本上就這些了。
現在我們重點講解下app,pub這2個目錄下面的內容。
因為我們開發(fā)中 基本上就是跟這2個目錄打交道。
重點
app
code
插件放這個目錄,包括Magento核心代碼。
你安裝后 會發(fā)現已存在code/Magento目錄。
當然以后裝第三方插件或者自己寫的插件 都放在code下面
我們在第四章會手把手教你寫插件。現在就賣個關子。
design
主題放這個目錄,包括前后臺主題。
adminhtml/Magento/backend是默認后臺主題
frontend/Magento 是默認前臺主題
我們一般不需要改后臺主題。
我們主要是改前臺主題,但是不要直接改frontend/Magento默認主題。
你最好自己新建一個主題,在自己的主題里修改。
我們在第三章會手把手教你寫主題,重寫默認主題代碼。現在就賣個關子。
etc
這里是m2系統(tǒng)配置文件,不需要動它。
i18n
這是m2的語言包存放目錄。
你安裝的第三方語言包都會放在這里
pub
這里面有個index.php,這個跟項目根目錄下的index.php是一樣的。
自帶的nginx.conf.sample是把pub/index.php設置成入口路徑。
當然你也可以把入口路徑改成項目根目錄/index.php,也沒問題,不建議這樣做,因為暴露了app/目錄,不安全。
一般是讀取pub/文件夾下deploy生成的文件。保證了app/目錄的安全性。
errors
這里放的是一些404或者503錯誤頁面。
不需要動它
media
這里放的是分類圖片/產品圖片/下載文件/其他后臺上傳的圖片或者文件,
不需要動它
static
這個就非常重要了,你deploy后就會生成網站靜態(tài)文件到這里。
他會生成前后臺的靜態(tài)文件。
包括phtml(模版文件)/js/css等等,也就是把所有插件(code目錄里的)里的代碼都生成靜態(tài)文件。
所以,在開啟緩存的情況下,前臺都是讀取這里的js/css/模版。
因此,在開啟緩存的情況下,調試模版/js/css代碼的時候,要注意下,不能直接改code,design里的源代碼,改了后會不生效,直接改static下面的文件就行。
因為它生成的目錄結構 跟插件的目錄結構是一樣的。
現在非常流行deploy 生成全靜態(tài)文件。比如hexo 是把md文件都deploy成靜態(tài)html。
你也許會覺得這樣的話,調試代碼很麻煩,改個地方 還得deploy下 才能看到效果。
其實不然,你可以建2個版本的網站,一個是開發(fā)版,一個是線上版。
開發(fā)功能的時候 只在開發(fā)版里開發(fā)調試,把緩存都禁用 ,調完測試完后,就把代碼推到線上去。
線上的再接收,然后deploy生成靜態(tài)文件部署。
核心文件介紹
注意:
如果是用composer安裝的話,核心文件在vendor/magento里。
如果是用github下載安裝的話,核心文件在app/code/Magento里。
請自己確認是用哪種方式安裝的,別到時候找不到地方怪教程不對。
app/code/Magento里的:
vendor/magento里的:
可以看到,M2的核心源代碼就這些,相當于是核心擴展。
版本升級的時候 也是自動更新這里的代碼。
看起來很多,因為m2功能太強大了,不多不行。
在這個入門課里 我們不需要那么燒腦 我們只需要掌握常用的幾個就行了。
以前臺為例,常用的主要有:
然后product里的可配置產品和下載產品比較特殊,不在catalog里,是單獨擴展出來的。
好了,掌握這些就足夠了,能解決80%的問題了。我們剛開始不需要一口吃個胖子。
有了這個概念后 你知道哪個頁面改該哪里的代碼了。
必須注意一點:
不能直接改這里的核心源代碼,否則版本升級的時候會自動覆蓋
我們需要重寫這些文件。
php文件的話用plugin/preference/events等方式來重寫
phtml的話直接在自定義主題下面重寫。后面章節(jié)會講
xml的話也直接在自定義主題/插件下面的layout里重寫。后面章節(jié)會講
總結
以上是生活随笔為你收集整理的【转】Magento2目录结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】Microsoft Graph 概
- 下一篇: 【转】ABP源码分析七:Setting