如何建立OpenCart主題/模板

在開始本教程前,須要指出theme主題指主題theme目錄( catalog/view/theme/mytheme) 下的主題,模板指後綴爲.tpl的文件。

第一步 創建最基本的主題模板

    在目錄 catalog/view/theme/下建立新目錄 mytheme, 則此時目錄結構以下:

    catalog/view/theme/
    |-> default
    |-> mytheme
    如今到後臺進行操做: Admin -> System -> Setting - > Edit Store ->Tab Store -> template -> mytheme.
    此時刷新你的網站前臺頁面,或許你的網站有些混亂,但此時你的新主題模板已經開始工做了!(若是你對本帖感興趣,歡迎轉載,但請註明出處來自於 OpenCart中國網站)

第二步. 基本主題模板

    創建目錄並從默認主題 default中複製一些文件,但 不要複製全部的文件。按照以下目錄結構進行操做:

    代碼: 全選catalog/view/theme/
                    |-> [color=#BF0040]default[/color]
                    |-> [color=#BF0040]mytheme[/color]
                        |-> image/*.* - 拷貝全部的圖片
                        |-> stylesheet/*.* - 拷貝全部的css樣式文件
                        |-> template
                            |-> common
                                |-> header.tpl
注意:
    須要複製全部的圖片,由於stylesheet.css文件須要使用這些圖片。
    須要複製IE的樣式文件,由於header.tpl中包含了它(若是你不在header.tpl中包含它,那就去掉它)
    須要複製slideshow.css由於在opencart的模塊中用到它。
    星級圖片被硬編碼進了相關頁面: category, manufacturer_info, product, review, search, special; 模塊: bestseller, featured, latest, special。所以包含這些圖片與否,取決於你是否須要這些頁面,模塊,或者你可使用新的圖片來替換它們。
    如今使用文本編輯器打開header.tpl;
    搜索並替換" default" 爲 " mytheme"。
    刷新你的網站前臺頁面,你會發現一切如默認模板同樣顯示了。
    若是想要不一樣的視覺效果,例如改變顏色等,此時你能夠修改文件 mytheme/stylesheet/stylesheet.css

第三步 定製模板(1):理解控制器

    在第二步中,咱們已經定製了header.tpl這個模板文件。請記住不要修改默認default模板,將你須要的文件複製到你的目錄下mytheme下便可。看以下例子:

    代碼: 全選            catalog/view/theme/
                    |-> default
                    |-> mytheme
                        |-> image
                        |-> stylesheet
                        |-> template
                            |-> common
                                |-> header.tpl
                                |-> footer.tpl|-> information
                                |-> information.tpl|-> product
                                |-> product.tpl
                                |-> category.tpl
                                |-> manufacturer_list.tpl
    你要使用控制器controller來定製模板,你須要知道opencart使用的是MVC-L框架。
    簡單解釋以下:
    當你訪問url路徑爲 route=product/category 時,opencart調用的是控制器 controller/product/category.php 文件。
    這個控制器(如category.php)將決定哪個MV-L被加載(Model, View(tpl), Language)。在category控制器(category.php)控制器中將加載:
    3個數據模型 Model (category, product, image): $this->load->model('...');
    2個視圖 View (category.tpl和 not_found.tpl): $this->template = '...';
    1個語言文件 Language: $this->language->load('...')
    該控制器也決定什麼數據傳輸給模板,而且用戶輸入的數據也在這裏進行預處理。
    $this->$this->data['text_price'] = $this->language->get('text_price'); 將在模板中生成價格: <?php echo $text_price; ?>
    當你想在網站前臺改變產品的顯示 (如從顯示15個改成25個)時,控制器將得到此請求 if (isset($this->request->get['limit'])) { ... } 而後處理它 $this->data['limits'][] = array(... 'value' => 25, ...);
    請記住,控制器方面沒有fallback備用模式,也就是說,你手動修改了相關的控制器,則當升級opencart時,相關的控制器會被覆蓋掉。除了手動修改外,你可使用vQmod對其進行「虛擬改變」。在第五步中將介紹這種方法。

第四步. 定製模板(2): 理解數據模型Model

    在MVC架構中,一個數據模型Model的做用就是針對數據庫提取或保存數據。在控制器controller得到或將數據提交給數據模型Model時,須要先加載此特定的數據模型。
    加載數據模型Model: $this->load->model('catalog/product');
    從數據模型獲取數據: $this->model_catalog_product->getTotalProducts()
    提交數據給數據模型: $this->model_catalog_product->editProduct()
    $this->load->model('catalog/product') 告訴opencart在網站後臺admin或網站前臺catalog中加載該數據模型Model ( model/catalog/product.php)。 getTotalProducts(), editProduct() 是數據模型 model/catalog/product.php 中的兩個函數。
    打開文件 model/catalog/product.php 並找到 public function getProduct.

    問題是,若是 getProduct() 獲取了全部的產品數據,爲什麼不在前臺分類頁面所有顯示呢?這是由於分類控制器決定了是否顯示全部數據。
    打開文件 controller/product/category.php, 找到 $this->data['products'][] = array 就明白了。

第五步. 定製模板 (3): 理解 vQmod

相關文章
相關標籤/搜索