1041 XOOPS模組開發
一、 加入評論功能
- 若是想要在模組中套用評論功能,必須先在xoops_version.php中加入評論設定: $modversion['hasComments'] = 1; $modversion['comments']['pageName'] = 'index.php'; $modversion['comments']['itemName'] = 'page_sn';
- pageName就是要加入評論的頁面檔案名稱,itemName一般是流水號欄位。
- 把「評論檔」中的五個php檔案複製到「模組根目錄」即tad_ebook下。
- 在index.php最下方引入footer.php頁尾檔之前,加入引入評論資料檔的語法: include_once XOOPS_ROOT_PATH.'/include/comment_view.php';
- 開啟「評論樣板檔語法.txt」,複製語法到index.php套用的樣版檔中,放入顯示單一文章部份的下方就大功告成!至後台更新模組後即可使用評論功能。
- 修改comment_new.php,替評論加上「$com_replytitle」回覆標題,及「$com_replytext」被回覆的內容。
- 這兩個變數的值,我們利用該文章編號「$com_itemid」直接撈出該文章的標題和內容即可。
- 開啟「強化comment_new.php的語法.txt」依照指示修改即可,改好後,將內容複製到comment_new.php中,取代原有內容即可。
- 在xoops_version.php中設定好通知的「類別」以及「事件」這兩種設定。
- 修改 include/notification.inc.php這個檔,好讓通知功能可以取得正確的資料。
- 在模組樣版中加入一行引入「通知」畫面的樣版語法,讓會員可以在模組或區塊裡看到「通知」的設定畫面。
- 製作通知內容的樣版,也就是要來設計寄給會員的通知內容。
- 修改程式,在各個需觸發通知的地方加入觸發事件,例如當有新文章發佈時,那麼就觸發一個通知事件,好讓系統去發出通知給會員。
- 「全局通知」類別,使用者在模組任何地方,都可進行設定的通知項目。
- 「指定」的類別,例如:有心期刊發布時,就通知。使用者在該功能頁面時才能設定的項目。
- 類別格式為:$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; //用來設定該類別是否可使用「書籤」功能。使用者可以從使用者選單中的「通知」裡面看到自己設定的書籤。
- 每個類別下至少要有一個「事件」,格式為:$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'; //設定該事件是否為隱藏事件
- 這個檔主要的用途就是依據「通知類別」以及「唯一編號」來擷取寄發通知時所需要的一些訊息,包括「name」和「url」。 $modversion['notification']['lookup_file'] = 'include/notification.inc.php'; $modversion['notification']['lookup_func'] = '通知函數名稱';
- 主要的處理函數會接收到兩個參數,包括$category(類別名稱)、 $item_id(唯一編號值)
- 在欲加入通知的檔案對應樣版檔中加入一行引入「通知」畫面的樣版語法: <{include file='db:system_notification_select.html'}>
- 複製notification_update.php到模組根目錄中,使通知功能得以設定。
- 讓程式達到通知的條件後(通常是儲存時觸發),就可以自動寄出通知信,前四個參數是必要的:
$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) $觸發事件的當事人編號:將不寄通知給他,預設為目前的使用者。
- 通知信樣版放在模組的「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}:使用者的「通知」管理頁面連結
- 測試時,建議您使用另一個身份登入,因為通知訊息預設是不會通知當事者的,所以,您自己發的新聞,自己可能會收不到通知信。
- 刪除文章時,也要順便刪除通知: xoops_notification_deletebyitem ($模組編號,$類別名稱, $項目編號);