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