Fecshop 模板開發(fā)

2018-05-24 14:22 更新

Fecshop 模板(theme)

fecshop theme也就是多模板機(jī)制,詳細(xì)參看
fecshop 模板
這里不做詳細(xì)的敘述。

模板文件的結(jié)構(gòu)

這里說一下模板的構(gòu)造,其實(shí)就是yii2的模板知識(shí)。

打開@fecshop/appfront/theme/base/default就進(jìn)入了模板路徑,可以看下面的文件夾:

assets :是 css js img存放的文件路徑

layouts :是 頁面主體部分,也就是從<html>標(biāo)簽開始,進(jìn)入打開main.php 就可以看到,里面設(shè)置了如何添加css js等等。

widgets :是fecshop的小部件存放的view部分

其他文件夾:是fecshop的view部分,view部分作為content的一部分, 在上面的layouts/main.php種你可以看到如下的代碼:

  1. <?= $content; ?>

這個(gè)就是view文件部分內(nèi)容,最終放到layout的html內(nèi)容的位置。

對(duì)于yii2er,對(duì)這些并不會(huì)太陌生,只要了解了fecshop的模板重寫機(jī)制就可以了。

多模板機(jī)制,詳細(xì)參看 fecshop 模板 這里不做詳細(xì)的敘述。

開發(fā)fecshop的模板(view js css等)

對(duì)于用戶來說想要二開appfront的模板,需要修改才能滿足自己的需求, 但是對(duì)fecshop就比較難辦,因?yàn)閒ecshop升級(jí),難免也要修改view css js也要改動(dòng) 等文件,這些文件不同于php類文件的重寫機(jī)制,無法通過繼承重寫函數(shù) 的方式進(jìn)行二開模板文件, 因此就帶來了矛盾沖突,fecshop參考了magento的多模板機(jī)制, 設(shè)置二開的高優(yōu)先級(jí)模板路徑,譬如,fecshop想要找view文件 /category/product/index.php,首先會(huì)在二開模板路徑里面找,如果 找到,就不會(huì)使用fecshop的模板路徑下面的/category/product/index.php 因此通過這種方式實(shí)現(xiàn)的模板重寫。

fecshop的模板部分,以入口進(jìn)行區(qū)分(appfront apphtml5等)的同時(shí), 每一個(gè)store又是可以單獨(dú)選擇模板的。

模板的重寫原理是通過模板路徑優(yōu)先級(jí)來,也就是有好幾個(gè) 模板路徑,分別為fecshop的模板路徑【低優(yōu)先級(jí)】,第三方的模板路徑【中優(yōu)先級(jí)】, 用戶二開(二次開發(fā))的模板路徑【高優(yōu)先級(jí)】,fecshop的模板路徑的文件最為 全面(優(yōu)先級(jí)最低),然后用戶想要重寫某個(gè)文件,只需要把這個(gè)文件路徑復(fù)制到 二開模板路徑下(包括相對(duì)文件夾路徑),即可完成重寫,因?yàn)?用戶二開模板路徑優(yōu)先級(jí)最高。

下面以appfront(pc端)進(jìn)行舉例 說明:

appfront入口的模板路徑的配置是在:

@fecshop/app/appfront/config/params.php

  1. 'appfrontBaseTheme' => '@fecshop/app/appfront/theme/base/front',

也就是默認(rèn)所有的store都是使用這里的模板,

用戶二開的模板路徑的定義在文件: appfront/config/fecshop_local_services/Store.php

在每一個(gè)store中,您可以看到如下的內(nèi)容:

  1. 'localThemeDir' => '@appfront/theme/terry/theme01', # 設(shè)置當(dāng)前store對(duì)應(yīng)的模板路徑。關(guān)于多模板的方面的知識(shí),您可以參看fecshop多模板的知識(shí)。
  2. 'thirdThemeDir' => [], # 第三方模板路徑,數(shù)組,可以多個(gè)路徑

@appfront/theme/terry/theme01 : 為本地二開路徑,優(yōu)先級(jí)最高

thirdThemeDir : 第三方插件的模板路徑,如果您安裝了多個(gè)第三方 的插件,那么您需要按照順序填寫多個(gè),這里是數(shù)組的方式填寫。

重寫模板詳細(xì)舉例: fecshop模板路徑為:@fecshop/app/appfront/theme/base/default, 我想要重寫這個(gè)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 中,然后修改這個(gè)文件,就完成了該文件的重寫。

是不是很easy呢?

原理還是有一點(diǎn)小復(fù)雜,有興趣可以參看資料:

yii2 多模板路徑優(yōu)先級(jí)加載view方式下- js和css 的解決

yii2 fecshop 多模板的介紹

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)