線上書籍

Home

1041 XOOPS模組開發

一、 加入評論功能
  1. 若是想要在模組中套用評論功能,必須先在xoops_version.php中加入評論設定: $modversion['hasComments'] = 1; $modversion['comments']['pageName'] = 'index.php'; $modversion['comments']['itemName'] = 'page_sn';
  2. pageName就是要加入評論的頁面檔案名稱,itemName一般是流水號欄位。
  3. 把「評論檔」中的五個php檔案複製到「模組根目錄」即tad_ebook下。
  4. 在index.php最下方引入footer.php頁尾檔之前,加入引入評論資料檔的語法: include_once XOOPS_ROOT_PATH.'/include/comment_view.php';
  5. 開啟「評論樣板檔語法.txt」,複製語法到index.php套用的樣版檔中,放入顯示單一文章部份的下方就大功告成!至後台更新模組後即可使用評論功能。
二、 修改評論畫面
  1. 修改comment_new.php,替評論加上「$com_replytitle」回覆標題,及「$com_replytext」被回覆的內容。
  2. 這兩個變數的值,我們利用該文章編號「$com_itemid」直接撈出該文章的標題和內容即可。
  3. 開啟「強化comment_new.php的語法.txt」依照指示修改即可,改好後,將內容複製到comment_new.php中,取代原有內容即可。
三、 加入通知的步驟與流程
  1. 在xoops_version.php中設定好通知的「類別」以及「事件」這兩種設定。
  2. 修改 include/notification.inc.php這個檔,好讓通知功能可以取得正確的資料。
  3. 在模組樣版中加入一行引入「通知」畫面的樣版語法,讓會員可以在模組或區塊裡看到「通知」的設定畫面。
  4. 製作通知內容的樣版,也就是要來設計寄給會員的通知內容。
  5. 修改程式,在各個需觸發通知的地方加入觸發事件,例如當有新文章發佈時,那麼就觸發一個通知事件,好讓系統去發出通知給會員。
四、 在xoops_version.php中加入通知「類別」設定(索引從1開始) $modversion['hasNotification'] = 1;
  1. 「全局通知」類別,使用者在模組任何地方,都可進行設定的通知項目。
  2. 「指定」的類別,例如:有心期刊發布時,就通知。使用者在該功能頁面時才能設定的項目。
  3. 類別格式為:$modversion['notification']['category'][1]['xxx']
    • (1)  ['name'] = '類別名稱'; //「name」用來設定類別的名稱,名稱可自訂,請用英文。如果要設定成「全局」類別,則請填入「global」。
    • (2)  ['title'] = _標題語系常數; ['description'] =  _描述語系常數;
    • (3)  ['subscribe_from'] = array('頁面1.php','頁面2.php',...); //用來設定模組中的哪些頁面會出現此通知「類別」,它的值是一個陣列,例如:「global」類別會出現在index.php及view.php中,其值為:array('index.php','view.php')。
    • (4)  ['item_name'] = '唯一編號欄位'; //填入「唯一編號欄位」的名稱,例如流水號sn。只有屬於「global」的類別可以不用設定此項,其餘自訂的都要!
    • (5)  ['allow_bookmark'] = 1; //用來設定該類別是否可使用「書籤」功能。使用者可以從使用者選單中的「通知」裡面看到自己設定的書籤。
五、 在xoops_version.php中加入通知「事件」設定(索引從1開始)
  1. 每個類別下至少要有一個「事件」,格式為:$modversion['notification']['event'][1]['xxx']
    • (1)  ['name'] = '事件名稱'; //設定該通知事件名稱,用以辨識不同的事件,請用英文來命名之。
    • (2)  ['category'] = '所屬類別';
    • (3)  ['title'] = '事件標題';
    • (4)  ['caption'] = '事件內容'; //會出現在通知設定選單中
    • (5)  ['description'] = '事件描述';
    • (6)  ['mail_template'] = '通知信的樣版名稱'; //不需寫入副檔名,需放在「language/語系/mail_template」目錄中,副檔名為.tpl,如:new_ebook.tpl。
    • (7)  ['mail_subject'] = '郵件主題';
    • (8)  ['admin_only'] = '1'; //設定該事件只有管理者可用
    • (9)  ['invisible'] = '0'; //設定該事件是否為隱藏事件
六、 產生 include/notification.inc.php這個檔
  1. 這個檔主要的用途就是依據「通知類別」以及「唯一編號」來擷取寄發通知時所需要的一些訊息,包括「name」和「url」。 $modversion['notification']['lookup_file'] = 'include/notification.inc.php'; $modversion['notification']['lookup_func'] = '通知函數名稱';
  2. 主要的處理函數會接收到兩個參數,包括$category(類別名稱)、 $item_id(唯一編號值)
  3. 在欲加入通知的檔案對應樣版檔中加入一行引入「通知」畫面的樣版語法: <{include file='db:system_notification_select.html'}>
  4. 複製notification_update.php到模組根目錄中,使通知功能得以設定。
七、 程式中加入觸發事件
  1. 讓程式達到通知的條件後(通常是儲存時觸發),就可以自動寄出通知信,前四個參數是必要的: $notification_handler =& xoops_gethandler('notification'); $notification_handler->triggerEvent ($類別名稱, $項目編號, $事件名稱, $額外標籤陣列, $僅發佈通知的使用者編號陣列, $模組編號, $觸發事件的當事人編號);  
    • (1)  $類別名稱:即xoops_version.php中設定的通知「類別」中的name。
    • (2)  $項目編號:唯一編號欄位的編號,假如「類別」是全域類別,那麼輸入0即可。
    • (3)  $事件名稱:即xoops_version.php中所設定事件,請輸入字串。
    • (4)  $額外標籤陣列:請輸入陣列。此參數是讓您加入自訂的標籤,這些標籤將會用在mail的樣版中,「標籤名稱」當做陣列索引,「標籤內容」則是陣列值,例如我們想自己做一個可以顯示觸發事件時當下的時間之標籤,如{ADD_TIME},那麼可以這麼寫:$extra_tags['EBOOK_TITLE'] = $_POST['ebook_title'];
    • (5)  $僅發佈通知的使用者編號陣列:請輸入陣列。假如您希望只有特定使用者可以使用此通知事件,那麼,請將這些使用者的編號放入此陣列中。
    • (6)  $模組編號:請輸入模組編號,預設就是目前的模組。
    • (7)  $觸發事件的當事人編號:將不寄通知給他,預設為目前的使用者。
八、 通知內容的樣版檔
  1. 通知信樣版放在模組的「language/語系/mail_template」目錄中,副檔名均為.tpl
    • (1)  {X_SITEURL}:網站的網址
    • (2)  {X_SITENAME}:網站的名稱
    • (3)  {X_ADMINMAIL}:管理者的 Email位址
    • (4)  {X_UNAME}:收信者名稱
    • (5)  {X_UID}:收信者的編號
    • (6)  {X_UACTLINK}:使用者的帳號啟動連結(只有註冊時通知信才會用到而已)
    • (7)  {X_MODULE} :模組名稱
    • (8)  {X_MODULE_URL}:模組首頁的連結
    • (9)  {X_NOTIFY_EVENT}:被觸發的事件
    • (10)  {X_NOTIFY_CATEGORY}:事件所屬的類別
    • (11)  {X_UNSUBSCRIBE_URL}:使用者的「通知」管理頁面連結
  2. 測試時,建議您使用另一個身份登入,因為通知訊息預設是不會通知當事者的,所以,您自己發的新聞,自己可能會收不到通知信。
九、  刪除通知
  1. 刪除文章時,也要順便刪除通知: xoops_notification_deletebyitem ($模組編號,$類別名稱, $項目編號);