2010年10月9日 星期六

如何開發一個Joomla1.5模組-4

[How to create a Joomla1.5 Module-4]

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入 [我有話要說],並將 [向大家問好]的參數欄位改成 [很高興認識你]。 MyMod_backEnd

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]檔的名稱其實可以自訂,但為了有良好的模組架構,我們還是遵循常用的開發慣例,一來比較不會出錯,二來接手的人也可以在最短的時間上手,便於團體共同開發。

結果如下圖所示
MyMod_Result

終於,一個簡單的模組完成了,是不是很興奮阿!

沒有留言:

張貼留言