【IT168 專稿】在上一篇關於Dwoo的教程中(PHP開發必備 一步步學PHP模版引擎Dwoo),我們討論了Dwoo中的基本用法。在本文中,我們將進一步講解在Dwoo中的一些進階用法,比如外掛程式機制的編寫以及如何跟常見的PHP架構整合。
一、Dwoo中模版的繼承
Dwoo的其中一個強大功能是它可以支援模版的繼承。這實現起來是十分簡單的,只需要定義好一個父模版,然後子模版則可以繼承父模版了,並且可以在子模版中定義多種新的特性。聰明的開發人員會善於利用這個特性,去減少重複的勞動。
Dwoo中繼承模版的關鍵在於“擴充”的外掛程式機制,它允許模版去繼承另外一個模版。為了更好地理解這一特性,我們舉個例子說明如下。假設目前你已經有一個基類的模版,名字叫base.tpl,其中包含了兩個地區,一個是導航區,一個是內容區,如下:
<html> <head></head> <body> {block "nav"} {/block} {block "content"} <div id="content"> This is content for the main page. </div> {/block} </body> </html> |
現在,假設你的一些頁面需要使用水平導航條,你只需要繼承基類模版頁即可,並且可以重新定義導航條的樣式,如下代碼,我們把這個代碼定義為child.tpl:
{extends "base.tpl"} {block "nav"} <div id="nav"> <a href="#">Home</a> <a href="#">News</a> <a href="#">Weather</a> <a href="#">Hotels</a> <a href="#">Dining</a> </tr> </table> </div> {/block} |
這裡使用了{extends “base.tpl”}指出是繼承了父類的模版,並且在這裡的{block “nav”}地區中,重寫了導航條的內容,最後輸出為如下圖:
現在我們考察另外一種情況,假設一些頁面中需要額外的子導覽功能表,比如需要以垂直形式顯示導航條,這時,我們可以採用如下代碼:
extends "child.tpl"} {block "nav"} {$dwoo.parent} <div id="sub-nav"> <h2>{$subtitle}</h2> <ul> {loop $items} <li><a href="#">{$item}</a></li> {/loop} </ul> </div> {/block} {block "content"} <div id="content"> This is content for the Dining page. </div> {/block} |
在這裡,使用了{$dwoo.parent}去調用了父類模版,注意這裡是繼承了child.tpl這個模版,也就是說,調用了父類模版中的導航條中的內容,並且這裡又重新定義了一個垂直的導航條,注意這裡還重寫了content地區的內容,覆蓋了父模版中對應的content地區的內容了,結果如下圖:
可以看到,只要適當使用模版繼承,則可以大大方便開發。