module, helper.php, default.php
[上一篇]M-V-C合作
筆者一再的強調,Joomla!1.5是一個很成功的以MVC模型開發的CMS,除了作為核心系統的Control層,其他都是可以由開發者自行擴展的,以下我們就來看看究竟是怎麼運作。
再繼續以前,希望讀者能夠有一點點基本的php物件語法概念,或者可以拿一本相關書籍放在手邊,隨時查閱。
module/mod_MyMod/mod_MyMod.xml
我們稍微修改一下上一篇的註冊安裝檔中參數的部分,修改如下:
<params> <param name="@spacer" type="spacer" default="" label="" description="" /> <param name="myParam" type="text" default="哈囉!我是一個新開發的模組" label="向大家問好" description="請輸入要說的話" /> </params>
修改後MyMod模組的後台管理介面如下圖,我們在模組標題的欄位key入 [我有話要說],並將 [向大家問好]的參數欄位改成 [很高興認識你]。
module/mod_MyMod/helper.php
這是一個協助用的檔案,我們把此模組會用到的物件都寫在裡邊,讓這個檔案很單純的就只有功能而不考慮排版。
<?php
// no direct access defined('_JEXEC') or die('Restricted access'); class modMyModHelper{ //建立一個涵式,讀取參數 myParam。 function sayWords($params) { return $params->get('myParam'); } }?>
module/mod_MyMod/mod_MyMod.php
這個檔案命名的方式是有原則的,除了與該模組同樣的名稱外,前面還要加上 (mod_)的前綴字樣,我們在裡邊運用helper.php檔中物件產生的結果,並儲存到一些變數內。
require_once (dirname(__FILE__).DS.'helper.php');
這行是必須的,一次性的引入helper.php檔來協助模組運作。
<?php
// no direct access defined('_JEXEC') or die('Restricted access'); // Include the syndicate functions only once require_once (dirname(__FILE__).DS.'helper.php'); // 定義 show 變數的內容為 modMyModHelper物件處理好的句子 $show = modMyModHelper::sayWords($params); require(JModuleHelper::getLayoutPath('mod_MyMod'));?>
require(JModuleHelper::getLayoutPath('mod_MyMod'));
這行也是必須的,目的是使用Joomla系統的JModuleHelper物件來告訴系統Layout檔的路徑
module/mod_MyMod/tmpl/default.php
最後這個檔案則是整個模組的版面輸出(layout),也只有到了撰寫這個檔案時,我們才開始加入HTML代碼。
<?php // no direct access defined('_JEXEC') or die('Restricted access'); ?> <div style="background-color:#ccccff;display:block;height:100px;"> <?php echo $show;?> </div>
讀者若是熟悉php,其實可以發現,[helper.php]檔的名稱其實可以自訂,但為了有良好的模組架構,我們還是遵循常用的開發慣例,一來比較不會出錯,二來接手的人也可以在最短的時間上手,便於團體共同開發。
結果如下圖所示
終於,一個簡單的模組完成了,是不是很興奮阿!
沒有留言:
張貼留言