如何建立magento佈景主題

Astral WebBy Astral Web 3 years agoNo Comments
首頁  /  Magento  /  Magento開發  /  如何建立magento佈景主題

Magento佈景主題

Magento 設計常用名詞

在開始建立佈景主題之前、我們先來了解一下magento的幾個名詞:

Website, Store, Store View
Interface
Themes
Layouts
Templates
Skins
Blocks
Structural Blocks
Content Blocks

website, store, store-view

magento是一個很強大的購物網站架站系統,不僅可以支援多商店,每個商店又可以有多個不同的store-view。舉例來說:歐斯瑞購物是一個購物網站,在這個網站上有B2C的商店也有B2B的商店,二個商店又各有英文、中文等不同語言版本。Magento佈景主題

Interface

Interface(界面)是由一組或多組theme(佈景主題)所組成。他決定了網站的外觀和前台的功能。您可以從後台設定整站(website)的界面或是商店(store-view)的界面。

Magento佈景主題

Themes

Theme(佈景主題)由layout, template, locale, skin 所組成。這些元素決定了商店的外觀和前台的功能。Magento 可以同時加載多個佈景。

預設佈景

每一個界面都必須要有一個預設的佈景,當您在後台指定一個界面給商店時,Magento會自動載入這個界面的預設佈景。預設佈景必須包含所有必要的layouts, templates and skins,才能讓網站正常運作。當您需要調整佈景時,您可以直接修改預設佈景的檔案或是使用非預設佈景來覆蓋預設佈景。

非預設佈景

非預設佈景通常只需要包含您所需要的檔案即可。當您因為母親節來臨,需要製作一個母親節的佈景時,非預設佈景就是一個很好的選擇。

Blocks

magento 的頁面是由許多的區塊(block)所組成,這些區塊可分成結構區塊(Structural Blocks)和內容區塊(content block)。結構區塊是頁面的主要結構,如:header, left column, main column and footer。內容區塊則是組成基本區塊的實際的內容,如:購物車、產品列表、輪播圖片等。

Magento佈景主題Magento佈景主題

開始建立 Magento 佈景主題

建立一個佈景主題

每新建立一個佈景主題,你都需要建立二個資料夾

1.app/design/frontend/my_interface/my_theme/

這個資料夾包含layout、templates 還有翻譯的語言文件

2.skin/frontend/default/my_interface/my_theme/

這個資料夾包含css, javascript還有圖片。

 

建立介面底下的預設佈景

預設佈景必須包含所有必須的layouts, templates, skins,網站才能正常的運作。因此建議您複製MAGENTO原本的預設佈景來修改以免有所遺漏。

建立介面底下的非預設佈景

非預設佈景不需要包含所有的檔案,一般依佈景的設計只需要包含和預設佈景不同的設定檔即可。唯一需要特別注意的便是:必須遵循MAGENTO佈景的檔案結構,不得任意更改。

 

參考下圖,將我們準備好的佈景檔案上傳到伺服器上

Magento佈景主題Magento佈景主題

為商店指定佈景

接著進到後台,遵循下面圖文步驟開始設定:

Step1:

進入System>Configuration

在左上角Current Configuration Scope 的下拉選單,選擇您要設定的層級( website-level 或 store view-level )

 

Magento佈景主題

Step2:

選擇Design標籤,在Current package name欄位中輸入新的佈景主題所在的介面名稱。在這裡我們使用my_interface

Magento佈景主題

Step3:

展開 THEME 標籤,在Default欄位輸入佈景主題的名稱。在這裡我們使用my_theme

Magento佈景主題

Step4: 按下右上角的 Save Config 按鈕至此,您已經完成了佈景主題的設定。

 

MAGENTO 佈景主題的讀取順序

以我們上面的例子來說,magento共讀取三個主題,並且以my_theme為最先優先。

  1. my_interface/my_theme
  2. my_interface/default
  3. base/default/

開始套用佈景主題

關閉快取

Step1:

進入管理介面,System > Configuration

Magento佈景主題

Step2: 全選所有的核取方塊(1),並設定為 Disable(2)

Magento佈景主題

 

確定頁面的結構

例如: home page → 3欄式,product page →2欄左側邊欄,customer page → 2欄右側邊欄

設定頁面結構的檔案是phtml格式,位於底下路徑內:app/design/frontend/my_interface/my_theme/template/page/

<html>
<head></head>
<body>
<div class="wrapper">
    <div class="header"><?php echo $this->getChildHtml('header') ?></div>
    <div class="middle">
        <div class="col-left"><?php echo $this->getChildHtml('left') ?></div>
        <div class="col-main"><?php echo $this->getChildHtml('content') ?></div>
    </div>
    <div class="footer"><?php echo $this->getChildHtml('footer') ?></div>
</body>
</html>

 

上面是一個2欄左側邊欄的範例。在這個範例中,每個<?=$this->getChildHtml()?> 都代表了一個區塊。

<div class=”header”><?=$this->getChildHtml(‘header’)?></div>在這段程式碼中,header就是這個區塊的名稱。

 

建立內容區塊。建議依功能建立不同區塊。

 

建立好結構模版之後,我們要開始建立區塊的模板。我們建議依功能來切割區塊,例如:product tags, newsletter, sign up area…

如果您不確定區塊模板存放的位置,可以開啟magento的提示功能。

Step1:進到管理後台: System>Configuration

Magento佈景主題

Step2:點選左側 Developer

Magento佈景主題

Step3:選擇商店。

Step4:在Template Path Hints.的下拉選單中選擇Yes。

Magento佈景主題

存檔之後到商店前台去重整畫面,我們會發現商店外觀變成底下的樣子。其中紅色虛線就是每個區塊的範圍,紅底白字的部份就是每個區塊的路徑和模板的檔案名稱

Magento佈景主題

以minicart為例,設定minicart的模組文件就放在底下路徑中:app/design/frontend/my_interface/default/template/checkout/cart/minicart.phtml

我們必須修改minicart.phtml以符合我們的設計需求

 

依設定調整佈局

尋找相對應的layout檔案

以minicart為例,app/design/frontend/my_interface/default/template/checkout/cart/minicart.phtml

找到在佈景主題 > template >之下的第一個資料夾名稱(checkout),並到app/design/frontend/my_interface/default/layout/ 資料夾內尋找相同名稱的xml檔。

 

預設佈局及更新佈局

預設佈局(例如page.xml)是幾乎適用於商店每一個頁面的佈局。更新佈局則是適用於某些與多數頁面不同的特定網頁。例如您在page.xml設定多數頁面為三欄式頁面、但是結果產品目錄頁面希望是二欄式頁面、那麼您必須另外建立一個catalog.xml並設定為二欄式的頁面。又或者您在每個頁面都需要一個訂閱電子報的功能、但在會員頁面則不需要顯示訂閱電子報功能、那麼您就必須在page.xml設定訂閱電子報功能、並建立一個不含訂閱電子報功能的customer.xml

 

Magento的佈局(Layouts)

magento 的layout文件是建立在模組(module)的基礎上的xml檔案,每一個模組(module)都有屬於自己的layout文件。您可以借由layout來設定每個頁面要包含哪些block。這些layout文件位於底下路徑app/design/frontend/your_interface/your_theme/layout/。

一個layout文件會包含<default>標籤,當解析頁面的時候magento會抓<default>的佈局,然後再解析特定頁面的更新資訊,最後才呈現出頁面最終的樣子。

 

Handle

Handle是layout的識別符號,magento藉由辦識Handle來確定如何處理當前的頁面。

例如<default>,magento知道必須要先載入<default>的設定,再去加載其他特定的更新。

如果magento發現不是<default>的Handle,將會依照Handle裡的資訊決定更新哪些佈局。

例如<catalog_product_view>包含了Product View page的更新,<catalog_product_compare_index> 含含了 Compare Product page 的更新。Handle幾乎不需要修改,如果沒有相當了解magento建議您不要輕易修改Handle。

<block>

type 定義<block>的功能不得任何修改

name 可供其他<block>參考。

before (and) after 在結構區塊裡定位內容區塊,before=”-” and after=”-” 表示在結構區塊的最頂部或是最底部。

template 指定區塊使用的模板

例如:<block type=”catalog/category_view” name=”category.products” template=”catalog/category/view.phtml”>

模版的實際位置app/design/frontend/template/catalog/category/view.phtml

action 用來控制前端功能,例如加載或缷載某個javascript

例如:<action method=”addJs”><script>prototype/prototype.js</script></action>

as 與template 文件裡所用到的getChildHtml(‘block_name’)相對應。

例如template文件裡的<?php echo $this->getChildHtml(‘header’) ?>對應到layout文件裡的<block type=”page/html_header” name=”header” as=”header”/>

<reference> 參考另一個<block>。

<reference>標籤裡的更新資訊將適用於同名的<block>

例如:<reference name=”right”>的目標是 <block name=” right “>.

Magento佈景主題

注意:每個xml標籤都必須要有結束標籤或是自結束標籤

實做:在網頁下方新增一個迷你購物車

  1. 開啟Template Path Hint功能。找到相對應的layout文件。

如下圖,Template Path Hint功能提示模板的路徑為frontend/my_interface/default/template/checkout/cart/minicart.phtml

因為緊臨/template/之後checkout就是迷你購物車所在的模組名稱,所以我們要到frontend/my_interface/default/layoutl 去找 checkout.xml

Magento佈景主題

2. 修改layout文件,在footer新增搜尋框區塊

開啟 checkout.xml,搜尋checkout/cart/minicart.phtml,找到底下的程式碼:

 <reference name="header">
            <block type="checkout/cart_minicart" name="minicart_head" template="checkout/cart/minicart.phtml" before="-">
                <block type="checkout/cart_sidebar" name="minicart_content" template="checkout/cart/minicart/items.phtml">
                    <action method="addItemRender"><type>default</type><block>checkout/cart_item_renderer</block><template>checkout/cart/minicart/default.phtml</template></action>
                    <action method="addItemRender"><type>simple</type><block>checkout/cart_item_renderer</block><template>checkout/cart/minicart/default.phtml</template></action>
                    <action method="addItemRender"><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>checkout/cart/minicart/default.phtml</template></action>
                    <action method="addItemRender"><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>checkout/cart/minicart/default.phtml</template></action>

                    <block type="core/text_list" name="cart_sidebar.cart_promotion" as="cart_promotion" translate="label" module="checkout">
                        <label>Mini-cart promotion block</label>
                    </block>
                    <block type="core/text_list" name="cart_sidebar.extra_actions" as="extra_actions" translate="label" module="checkout">
                        <label>Shopping Cart Sidebar Extra Actions</label>
                    </block>
                </block>
            </block>
        </reference>

 

在原來的程式碼底下複製這段程式碼,並將<reference name=”header”> 改成<reference name=”footer”>

到這裡迷你購物車已經出現在footer裡了

 

接下來我們只要再調整css及關閉Template Path Hints功能即可。

 

下圖就是完成的樣子囉。

 

 

Magento佈景主題

歐斯瑞有限公司編寫製作

 

 

 

以上內容由Astralweb 歐斯瑞編寫製作

 000

推薦文章

Category:
  Magento開發

留下回應

你的電子郵件地址不會被公開.

取得獨家電子商務祕技

建立更好的策略靈感

跟上全球的網路趨勢

絕佳的電商解決方案

電子商務戰略全指南

每月發送電商戰略指南,只要填寫E-mail即可訂閱!

請到您的信箱確認,即可完成訂閱。