1041 XOOPS模組開發
一、 利用TadTools的TadUpFiles物件來加入上傳功能
八、 讓區塊支援BootStrap3
- TadUpFiles物件提供完整的多檔案上傳界面、儲存、刪除及顯示功能,可外掛進任何模組,並提供模組的各種上傳需求。
- 請直接開啟/tadtools/TadUpFiles.php,裡面有完整用法範例。
- 務必先建立「模組名稱_files_center」資料表。
- 上傳的檔案會放在「uploads/模組名稱/」下,若一個模組有多種東西要上傳,那麼可設定$subdir,上傳檔則會置於「uploads/模組名稱/$subdir」下。
- $col_name及$col_sn用來綁定上傳的檔案和資料之間的關係。以電子校刊為例,若希望每期都有個封面圖,那麼可綁定每期的流水號欄位ebook_sn。$col_name的值就是「ebook_sn」,而$col_sn的值就是實際編號「$ebook_sn」。
- 若是使用XOOPS表單物件,記得在表單加入額外設定: $form->setExtra("enctype='multipart/form-data'");
- 先在xoops_version.php中加入區塊設定,如$modversion['blocks'][1][xxx]。
- 在blocks目錄下依據file 的設定值來建立檔案,如:tad_ebook_list.php,裡面至少要有一個主函數。
- 主函數的名稱必須和xoops_version.php中的show_func 設定值一樣,例如:tad_ebook_list。
- 主函數的目的僅在於從資料庫抓出資料,送到區塊樣板中,故需在template項目設定樣板名稱,如:tad_ebook_list.html,樣板放在「templates/blocks」下。
- 編輯函數不一定要有,若想要在區塊中做設定值,可以設個edit_func
- 有編輯函數就一定要有options來設定預設值,請用「|」隔開預設值。
- 區塊中若有連結,需注意必須使用「絕對位置」,網址常數:XOOPS_URL,若是在樣板中則需用<{$xoops_url}>來做成絕對路徑
- 若執行錯誤,不建議用redirect_header轉向,直接die()或忽略之。
- 將最後內容結果return即可,可以是陣列,也可以是單一值,變數名稱不拘。
- 在templates/blocks依照xoops_version.php中 template 的值來建立樣板檔案,如:tad_ebook_list.html
- 區塊的樣版檔一律收到樣板標籤<{$block}>,不管顯示函數傳回的變數名稱為何。
- 樣板中完整連結,如:<{$xoops_url}>/modules/tad_ebook/index.php?ebook_sn=<{$ebook.honor_sn}>
- 接著更新一下模組,就可以開始使用區塊了!
- 我們在原先的區塊程式tad_ebook_list.php 加入一個區塊編輯介面函數。目的是產生區塊設定介面,名稱必須和edit_func 一致。
- 編輯介面函數其實就是一個網頁表單而已,只不過不需要<form></form>。
- 表單欄位的預設值即為xoops_version.php中的options 設定值。預設值的傳遞及使用均透過$options陣列。
- 區塊若要使用區塊的設定值,可以直接引入$options參數,如:$options[0]
- xoops_version.php中的options 設定值,根據「|」拆開後,第一個值就是$options[0],第二個值就是$options[1]依此類推。
- 請將$options[0]、$options[1]套用到該用的地方。
- 更新模組,編輯區塊,即可看到效果。
- 請先安裝支援BootStrap3的school2015佈景
- 必須載入tad_function.php(在function.php中預設有載入)
- 給bootstrap3用的樣板一律在檔尾加上_b3如:「原樣板檔名_b3.html」
- 到xoops_version.php中加入新樣板設定,記得更新模組
- 前台套用樣板時,在員樣板名稱套入set_bootstrap()函數:
- $xoopsOption['template_main'] = set_bootstrap("bootstrap2樣板.html");
- 該函數會去判斷bootstrap3是否存在,並偵測目前設定,自動套用對應的樣板。
- 修改header.php即可,xoops_cp_header();前加入以下幾行,程式部份不需做任何變動。若使用範例包的已經有預先改好了,亦無須再修改。 if(file_exists(XOOPS_ROOT_PATH."/modules/tadtools/include/beforeheader.php")){ include_once XOOPS_ROOT_PATH."/modules/tadtools/include/beforeheader.php"; $xoopsOption['template_main']=set_bootstrap() ; } xoops_cp_header();
- php部份不用動,但注意引入順序,$xoopsOption['template_main'] 要在引入header.php之前。
- 後台因為本身樣板沒有套BootStrap,所以,最外框得自己加: <div class="container-fluid">後台樣板</div>
八、 讓區塊支援BootStrap3
- 區塊的PHP程式需加上: $block['bootstrap_version']=$_SESSION['bootstrap'];
- 樣板部份不用做兩個檔,直接在樣板檔中分兩部份來做即可: <{if $block.bootstrap_version=='3'}> <!-- for bootstrap3--> <{else}> <!-- for bootstrap2--> <{/if}>
- BootStrap3與BootStrap2的語法大部分一樣,但不一樣的地方一樣不少:
- row-fluid → row
- span6 → col-md-6
- radio inline → radio-inline
- checkbox inline → checkbox-inline
- hero-unit → jumbotron
- btn-mini → btn-xs
- btn-small → btn-sm
- btn-large → btn-lg
- alert-error → alert-danger
- label → label label-default
- 完整升級請看:http://v3.bootcss.com/migration/
後台界面:
前台界面: