9.
新增區塊
- 我們打算加入「已報名名單」在側邊,因此,必須做成區塊形式。
一、 模組區塊(Blocks)設定
- 先在xoops_version.php中加入區塊設定,如:
//---區塊設定---//
$modversion['blocks'] = array();
$i = 1;
$modversion['blocks'][$i]['file'] = "list_signup.php";
$modversion['blocks'][$i]['name'] = _MI_TAD_SIGNUP_LIST;
$modversion['blocks'][$i]['description'] = _MI_TAD_SIGNUP_LIST_DESC;
$modversion['blocks'][$i]['show_func'] = "list_signup";
$modversion['blocks'][$i]['template'] = "list_signup.tpl";
$modversion['blocks'][$i]['edit_func'] = "list_signup_edit";
$modversion['blocks'][$i]['options'] = "1|1";
- 在blocks目錄下依據file 的設定值來建立檔案,如:blocks/list_signup.php,裡面至少要有一個主函數。
<?php
//區塊主函數:列出所報者
function list_signup($options)
{
}
- 主函數的名稱必須和xoops_version.php中的show_func 設定值一樣,例如:list_signup。
- 主函數的目的僅在於從資料庫抓出資料,送到區塊樣板中,故需在template項目設定樣板名稱,樣板放在「templates/blocks」下,如:templates/blocks/list_signup.tpl。
- 編輯函數不一定要有,若想要在區塊中做設定值,可以設個edit_func
- 若設定中有用到語系,請記得加入 language/tchinese_utf8/modinfo.php 中,如:
define("_MI_TAD_SIGNUP_LIST", "報名名單");
define("_MI_TAD_SIGNUP_LIST_DESC", "報名名單");
- 有編輯函數就一定要有$options來設定預設值,請用「|」隔開預設值。
- 區塊中若有連結,需注意必須使用「絕對位置」,網址常數:XOOPS_URL,若是在樣板中則需用<{$xoops_url}>來做成絕對路徑
- 若執行錯誤,不建議用redirect_header轉向,直接die()或忽略之。
- 將最後內容結果return即可,可以是陣列,也可以是單一值,變數名稱不拘。
二、 建立區塊樣版檔
- 在templates/blocks依照xoops_version.php中 template 的值來建立樣板檔案,如:list_signup.tpl
- 區塊的樣版檔一律收到樣板標籤<{$block}>,不管顯示函數傳回的變數名稱為何。
<{$block}>
- 樣板中完整連結,如:<{$xoops_url}>/modules/tad_ebook/index.php?ebook_sn=<{$ebook.honor_sn}>
- 接著更新一下模組,就可以開始使用區塊了!
三、 加入區塊編輯介面函數
- 我們在原先的區塊程式 blocks/list_signup.php 加入一個區塊編輯介面函數。目的是產生區塊設定介面,名稱必須和edit_func 一致。
//區塊編輯函數
function list_signup_edit($options)
{
}
- 編輯介面函數其實就是一個網頁表單而已,只不過不需要<form></form>。
- 表單欄位的預設值即為 xoops_version.php中的 options 設定值。預設值的傳遞及使用均透過 $options 陣列。
四、 修改顯示函數
- 區塊若要使用區塊的設定值,可以直接引入$options參數,如:$options[0]
- xoops_version.php中的options 設定值,根據「|」拆開後,第一個值就是$options[0],第二個值就是$options[1]依此類推。
- 請將$options[0]、$options[1]套用到該用的地方。
- 最後請記得更新模組,編輯區塊,即可看到效果。