:::

16. 通知功能(上)

一、 替列表加入分類

  1. 我們讓使用者可以點選分類名稱,就列出該分類記事文章。
  2. $sql="select a.* , b.`cate_title` from ".$xoopsDB->prefix("tad_notes")." as a left join ".$xoopsDB->prefix("tad_note_cate")." as b on a.cate_sn=b.cate_sn where a.`note_public`='1' order by a.note_sort";
  3. 多送出二組樣板標籤cate_sn、cate_title,樣板也記得修改!
  4. <td><a href='index.php?cate_sn=<{$page.cate_sn}>'><{$page.cate_title}></a></td>
  5. 列出函數也要多一組參數,並修改其內容:
  6. $and_cate_sn=empty($cate_sn)?"":" and a.cate_sn='$cate_sn'";
    $sql="select a.*, b.cate_title from ".$xoopsDB->prefix("tad_notes")." as a left join ".$xoopsDB->prefix("tad_note_cate")." as b on a.cate_sn=b.cate_sn where a.`note_public`='1'  $and_cate_sn order by a.note_sort";

二、 加入通知的步驟與流程

  1. 在xoops_version.php中設定好通知的「類別」以及「事件」這兩種設定。
  2. 修改 include/notification.inc.php這個檔,好讓通知功能可以取得正確的資料。
  3. 在模組樣版中加入一行引入「通知」畫面的樣版語法,讓會員可以在模組或區塊裡看到「通知」的設定畫面。
  4. 製作通知內容的樣版,也就是要來設計寄給會員的通知內容。
  5. 修改程式,在各個需觸發通知的地方加入觸發事件,例如當有新文章發佈時,那麼就觸發一個通知事件,好讓系統去發出通知給會員。

三、 在xoops_version.php中加入通知「類別」設定(索引從1開始)。

  1. $modversion['hasNotification'] = 1;
  2. 「全局通知」類別(使用者觀看文章列表時可設定的通知項目):
    • (1)  當有新文章時, 就通知我。
  3. 「新文章」的類別(使用者觀看某文章內容時可設定的通知項目):
    • (1)  當有針對這個項目的新評論張貼時通知我
    • (2)  將這個項目加入書籤中(沒有通知)
  4. 類別格式為:$modversion['notification']['category'][1]['xxx']
    • (1)  ['name'] = '類別名稱'; //「name」用來設定類別的名稱,名稱可自訂,請用英文。如果要設定成「全局」類別,則請填入「global」。
    • (2)  ['title'] = _標題語系常數;
    • (3)  ['description'] =  _描述語系常數;
    • (4)  ['subscribe_from'] = array('頁面1.php','頁面2.php',...); //用來設定模組中的哪些頁面會出現此通知「類別」,它的值是一個陣列,例如:「global」類別會出現在index.php及view.php中,其值為:array('index.php','view.php')。
    • (5)  ['item_name'] = '唯一編號欄位'; //填入「唯一編號欄位」的名稱,例如流水號sn。只有屬於「global」的類別可以不用設定此項,其餘自訂的都要!
    • (6)  ['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_doc.tpl。
    • (7)  ['mail_subject'] = '郵件主題';
    • (8)  ['admin_only'] = '1'; //設定該事件只有管理者可用
    • (9)  ['invisible'] = '0'; //設定該事件是否為隱藏事件

五、 若模組有用到「評論功能」或有使用書籤功能需要再加入以下設定:

$modversion['notification']['lookup_file'] = 'include/notification.inc.php';
$modversion['notification']['lookup_func'] = '通知函數名稱';

六、 產生 include/notification.inc.php這個檔

  1. 這個檔主要的用途就是依據「通知類別」以及「唯一編號」來擷取寄發通知時所需要的一些訊息,包括「name」和「url」。
  2. 主要的處理函數會接收到兩個參數,包括$category(類別名稱)、 $item_id(唯一編號值)
  3. function get_note_notification($category, $item_id){
      if ($category=='global') {
        $item['name'] = '';
        $item['url'] = '';
        return $item;
      }
      global $xoopsDB;
      if ($category=='cate') {
        $sql = 'SELECT cate_title FROM ' . $xoopsDB->prefix('tad_note_cate') . ' WHERE cate_sn = '.$item_id;
        $result = $xoopsDB->query($sql); // TODO: error check
        $result_array = $xoopsDB->fetchArray($result);
        $item['name'] = $result_array['cate_title'];
        $item['url'] = XOOPS_URL . '/modules/tad_note/index.php?cate_sn=' . $item_id;
        return $item;
        }
    }
  4. 在樣版中加入一行引入「通知」畫面的樣版語法:<{include file='db:system_notification_select.html'}>

 


:::

搜尋

QR Code 區塊

https%3A%2F%2Fwww.tad0616.net%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbsn%3D22%26tbdsn%3D653

書籍目錄

展開 | 闔起

線上使用者

21人線上 (5人在瀏覽線上書籍)

會員: 0

訪客: 21

更多…