Xoops 區塊-建立區塊選項

日期 2010年09月06日 22:37:30 | 新聞類別: 模組開發

原始出處 http://www.xoops.org/modules/mediawiki/index.php/Xoops_Blocks


 

Step 3 – 建立區塊選項

這是一個比較複雜的主題。作對時可以讓你的區塊相當的有彈性。
編輯tutorial/xoops_version.php 並輸入紅色的兩行程式碼:

// Blocks

$modversion['blocks'][1]['file'] = "tutorial_block.php";

$modversion['blocks'][1]['name'] = 'Block for Tutorial';

$modversion['blocks'][1]['description'] = 'This is a Block for the tutorial module';

$modversion['blocks'][1]['show_func'] = "tut_blockList";

$modversion['blocks'][1]['template'] = 'tutorial_block.html';

$modversion['blocks'][1]['edit_func'] = "tut_blockList_edit";

$modversion['blocks'][1]['options'] = 'Hello|1';

第一行是告訴Xoops 哪個函式控制這個區塊的編輯邏輯。這個編輯函式必須在同一個程式檔案裡面,如本範例中就也要在 tutorial_block.php 檔案內。第二行提供區塊選項的預設值。這個範例中區塊有兩個選項,一個選項的預設值是"Hello"另外一個是"1"。區隔預設值的符號是'|'。

打開tutorial/blocks/tutorial_block.php

內容如下:

<?php

 

function tut_blockList($options){

$block=array();

$block['textOne']=$options[0];

$block['textTwo']=$options[1];

return $block;

}

 

function tut_blockList_edit($options){

$form = "Option 1: <input type='text' size='9' name='options[0]' value='$options[0]' />";

$form .= "";

$form .= "Option 2: <input type='text' size='1' name='options[1]' value='$options[1]' />";

$form .= "";

return $form;

}

 

?>

可以看到多了一個函式(tut_blockList_edit)控制區塊選項。第一個函式tut_blockList會接收從xoops 傳來的選項($options)。
幾個必須注意的事項:

  • 編輯選項的函式(在本範例中是tut_blockList_edit)必須回傳變數$form。
  • $form是字串變數(string)而不是陣列變數(array)。
  • 你可以建立任意數目個選項。
  • Xoops 會將選項的值存在資料庫而不需要你手動新增表格儲存。
  • $form必須有名稱為'options'的表單元件。
  • options索引起始值必須是0,例如:name='options[0]'。

編輯tutorial/templates/blocks/tutorial_block.html並將程式碼改寫成:

<p>My First option is: <{$block.textOne}></p>

 <p>My Second option is: <{$block.textTwo}></p>

好了。我們現在重新安裝tutorial 模組讓Xoops 可以為區塊選項產生需要的改變。
在重新安裝完模組、刪除區塊樣版快取、編輯區塊選項值後,打開區塊管理介面,確定我們可以在網站前端看到tutorial 模組區塊。點選區塊旁邊的編輯連結你會看到兩個選項;一個選項的值是'Hello'另外一個是'1'。將'Hello'改成'I like Xoops'而'1'改成'5',然後到網站前端看看吧。





本篇新聞來自:XOOPS Site
https://www.xoops.org.tw

本篇新聞的連結網址是:
https://www.xoops.org.tw/modules/news/article.php?storyid=61