fecshop theme也就是多模板機制,詳細(xì)參看
fecshop 模板
這里不做詳細(xì)的敘述。
這里說一下模板的構(gòu)造,其實就是yii2的模板知識。
打開@fecshop/appfront/theme/base/default
就進入了模板路徑,可以看下面的文件夾:
assets
:是 css js img存放的文件路徑
layouts
:是 頁面主體部分,也就是從<html>標(biāo)簽開始,進入打開main.php
就可以看到,里面設(shè)置了如何添加css js等等。
widgets
:是fecshop的小部件存放的view部分
其他文件夾
:是fecshop的view部分,view部分作為content的一部分,
在上面的layouts/main.php
種你可以看到如下的代碼:
<?= $content; ?>
這個就是view
文件部分內(nèi)容,最終放到layout
的html內(nèi)容的位置。
對于yii2er,對這些并不會太陌生,只要了解了fecshop的模板重寫機制就可以了。
多模板機制,詳細(xì)參看 fecshop 模板 這里不做詳細(xì)的敘述。
對于用戶來說想要二開appfront的模板,需要修改才能滿足自己的需求,
但是對fecshop就比較難辦,因為fecshop升級,難免也要修改view css js也要改動
等文件,這些文件不同于php類文件的重寫機制,無法通過繼承重寫函數(shù)
的方式進行二開模板文件,
因此就帶來了矛盾沖突,fecshop參考了magento的多模板機制,
設(shè)置二開的高優(yōu)先級模板路徑,譬如,fecshop想要找view文件
/category/product/index.php
,首先會在二開模板路徑里面找,如果
找到,就不會使用fecshop的模板路徑下面的/category/product/index.php
因此通過這種方式實現(xiàn)的模板重寫。
fecshop的模板部分,以入口進行區(qū)分(appfront apphtml5等)的同時, 每一個store又是可以單獨選擇模板的。
模板的重寫原理是通過模板路徑優(yōu)先級來,也就是有好幾個 模板路徑,分別為fecshop的模板路徑【低優(yōu)先級】,第三方的模板路徑【中優(yōu)先級】, 用戶二開(二次開發(fā))的模板路徑【高優(yōu)先級】,fecshop的模板路徑的文件最為 全面(優(yōu)先級最低),然后用戶想要重寫某個文件,只需要把這個文件路徑復(fù)制到 二開模板路徑下(包括相對文件夾路徑),即可完成重寫,因為 用戶二開模板路徑優(yōu)先級最高。
下面以appfront(pc端)進行舉例 說明:
appfront入口的模板路徑的配置是在:
@fecshop/app/appfront/config/params.php
'appfrontBaseTheme' => '@fecshop/app/appfront/theme/base/front',
也就是默認(rèn)所有的store都是使用這里的模板,
用戶二開的模板路徑的定義在文件:
appfront/config/fecshop_local_services/Store.php
在每一個store中,您可以看到如下的內(nèi)容:
'localThemeDir' => '@appfront/theme/terry/theme01', # 設(shè)置當(dāng)前store對應(yīng)的模板路徑。關(guān)于多模板的方面的知識,您可以參看fecshop多模板的知識。
'thirdThemeDir' => [], # 第三方模板路徑,數(shù)組,可以多個路徑
@appfront/theme/terry/theme01
: 為本地二開路徑,優(yōu)先級最高
thirdThemeDir
: 第三方插件的模板路徑,如果您安裝了多個第三方
的插件,那么您需要按照順序填寫多個,這里是數(shù)組的方式填寫。
重寫模板詳細(xì)舉例:
fecshop模板路徑為:@fecshop/app/appfront/theme/base/default
,
我想要重寫這個view文件:
@fecshop/app/appfront/theme/base/default/catalog/category/index.php
我本地store設(shè)置的模板路徑為:
appfront/theme/terry/theme01
因此,我創(chuàng)建文件
appfront/theme/terry/theme01/catalog/category/index.php
然后把@fecshop/app/appfront/theme/base/default/catalog/category/index.php
文件的內(nèi)容復(fù)制到@appfront/theme/terry/theme01/catalog/category/index.php
中,然后修改這個文件,就完成了該文件的重寫。
是不是很easy呢?
原理還是有一點小復(fù)雜,有興趣可以參看資料:
更多建議: