<block>
Magento
通過 <block>
標記決定頁面中的每個區塊的行爲和視覺表現。在 Magento
中我們已經提到了兩種類型的區塊 – 結構區塊(structural blocks)和內容區塊(content
blocks)。區分這兩種區塊最好的方式是通過分配給它的標記屬性來區分。結構區塊通常包含屬性 ‘as’ ,通過這個屬性值程序可以與指定的區域(由
getChildHtml
方法指定)中的模板聯繫。你會發現在默認佈局許多地方出現這個 ‘as’
屬性,因爲默認佈局的一個性質就是建立一個實際的佈局,在各個不同的頁面中的具體佈局上就可以開始增加。例如,在默認佈局中,有像 ‘left’ 、
‘right’ 、 ‘content’ 和 ‘footer’
這些結構區塊。並不是說這些區塊不能存在於正常的佈局更新中,但我們爲什麼不首先在默認佈局中建立這些結構區塊,然後在後面每個具體的頁面基礎上添加內容
呢?讓我們進一步挖掘 <block>
的現有屬性。
- type – 這是模塊類的標識符,它定義了區塊的功能。此屬性不應該被修改。
- name – 這是名稱,其他的區塊可以通過此名稱引用此區塊(看圖1)。
- before (and) after – 這兩種方法決定內容區塊在結構區塊中的位置。 before=”-” 和 after=”-” 這樣的命令標誌此區塊的位置是一個結構區塊的最上方或最下方。
- template – 這個屬性指定的值決定了此區塊的功能是使用哪個模板。例如,如果這個屬性值指定了 ‘catalog/category/view.phtml’ ,程序就會載入 ‘app/design/frontend/template/catalog/category/view.phtml’ 模板文件。
- action – <action> 是用來控制前臺的功能的,如加載或不加載一個 JavaScript 。一套完整的 action 方式將很快推出,但此時的最佳的學習途徑是瞭解現有的佈局更新上面的不同 action 方法。
- as – 此屬性指定模板文件中會調用那個區塊。 當您在模板中看到 getChildHtml(‘ block_name ‘) 的 PHP 方法,可以肯定它指的是引用屬性 ‘as’ 的值爲 ‘block_name’ 的區塊。 (例如:在骨架模板中的方法 <?=$this->getChildHtml(‘header’)?> 是調用 <block as="header"> )
<reference>
<reference>
是用來引用另一個區塊。要引用靈位一個區塊,在內部的更新將應用於與其關聯的 <block>
(見圖1)。
要使用引用,可以通過區塊中的 ‘name’
屬性值引用。此屬性的指向標籤中 ‘name’
屬性。所以,如果你使用 <reference name="right">
,響應的區塊名稱將是 <block name="right">
。
圖1: