即使不撰寫任何程式碼,我們的部落格應用程式已經是可套用主題的。若要使用主題,我們主要需要透過在主題中撰寫自訂的檢視檔來開發主題。例如,若要使用名為 classic
且使用不同頁面佈局的主題,我們會建立一個佈局檢視檔 /wwwroot/blog/themes/classic/views/layouts/main.php
。我們也需要變更應用程式組態,以指明我們選擇 classic
主題。
return array(
......
'theme'=>'classic',
......
);
我們也可以將我們的部落格應用程式國際化,使其頁面能以不同語言顯示。這主要包含兩個方面的努力。
首先,我們可以建立不同語言的檢視檔。例如,針對 PostController
的 index
頁面,我們可以建立一個檢視檔 /wwwroot/blog/protected/views/post/zh_cn/index.php
。當應用程式設定為使用簡體中文(語言代碼為 zh_cn
)時,Yii 將自動使用這個新的檢視檔,而不是原始的檢視檔。
其次,我們可以為程式碼產生的訊息建立訊息翻譯。訊息翻譯應儲存為 /wwwroot/blog/protected/messages
目錄下的檔案。我們也需要修改我們使用文字字串的程式碼,方法是將它們包在 Yii::t()
方法呼叫中。
有關國際化的更多詳細資訊,請參閱指南。
雖然 Yii 框架本身非常有效率,但使用 Yii 撰寫的應用程式不一定有效率。在我們的部落格應用程式中,有幾個地方可以改善效能。例如,標籤雲 Portlet 可能是效能瓶頸之一,因為它涉及複雜的資料庫查詢和 PHP 邏輯。
我們可以利用 Yii 提供的完善快取功能來改善效能。Yii 中最有用的元件之一是 COutputCache,它可以快取頁面顯示的片段,使產生片段的底層程式碼不需要為每個請求執行。例如,在佈局檔 /wwwroot/blog/protected/views/layouts/column2.php
中,我們可以將標籤雲 Portlet 用 COutputCache 包起來。
if($this->beginCache('tagCloud', array('duration'=>3600))) { $this->widget('TagCloud', array( 'maxTags'=>Yii::app()->params['tagCloudCount'], )); $this->endCache(); }
透過上述程式碼,標籤雲顯示將從快取提供,而不是為每個請求即時產生。快取內容將在快取中保持有效 3600 秒。
我們的部落格應用程式僅具有非常基本的功能。若要成為完整的部落格系統,還需要更多功能,例如,日曆 Portlet、電子郵件通知、文章分類、封存文章 Portlet 等等。我們將把這些功能的實作留給有興趣的讀者。
發現錯字或您認為此頁面需要改進嗎?
在 GitHub 上編輯 !
註冊 或 登入 以進行評論。