Toggle main menu visibility
新聞
下載
教材
影音
討論
其他選單
好站連結
行事曆
電子相簿
常見問題
萬用表單
即時留言簿
友站消息
社大學員
:::
登入
登入
帳號
密碼
登入
重整畫面
:::
所有書籍
「[1071]XOOPS模組開發」目錄
MarkDown
5-11 include/search.php
1. XOOPS模組基礎架構
1-1 xoops_version.php
1-2 sql/mysql.sql
1-3 admin/menu.php
1-4 language/tchinese_utf8
1-5 admin/main.php
1-6 templates/snews_adm_main.tpl
1-7 admin/topic.php
1-8 templates/snews_adm_topic.tpl
2. 表單、資料庫、使用者物件
2-1 admin/main.php
2-2 templates/snews_adm_main.tpl
2-3 templates/op_snews_list.tpl
2-4 templates/op_snews_form.tpl
2-5 sql/mysql.php
2-6 xoops_version.php
2-7 function.php
3. 前台顯示、編輯、刪除
3-1 index.php
3-2 xoops_version.php
3-3 menu.php
3-4 header.php
3-5 templates/snews_index.tpl
3-6 templates/op_snews_show.tpl
3-7 templates/op_snews_list.tpl
3-8 admin/main.php
4. 首頁精選文章輪播
4-1 admin/main.php
4-2 index.php
4-3 templates/op_snews_show.tpl
4-4 templates/op_snews_list.tpl
5. 自動生成群組並做權限判斷
5-1 xoops_version.php
5-2 interface_menu.php
5-3 header.php
5-4 index.php
5-5 admin/main.php
5-6 include/onUpdate.php
5-7 include/onInstall.php
5-8 include/onUninstall.php
5-9 templates/op_snews_list.tpl
5-10 templates/op_snews_show.tpl
5-11 include/search.php
6. json應用與XOOPS區塊
6-1 xoops_version.php
6-2 language/tchinese_utf8/modinfo.php
6-3 index.php
6-4 html.php
6-5 templates/op_snews_show.tpl
6-6 function.php
6-7 blocks/snews_block_focus.php
6-8 blocks/snews_block_focus.tpl
6-9 css/module.css
6-10 interface_menu.php
6-11 language/tchinese_utf8/blocks.php
6-12 templates/op_snews_list.tpl
6-13 function_block.php
7. 產生PDF及拉動排序
7-1 templates/snews_index.tpl
7-2 templates/op_snews_list.tpl
7-3 index.php
7-4 css/module.css
7-5 templates/op_snews_show.tpl
7-6 pdf.php
7-7 interface_menu.php
7-8 pdf_all.php
8. Excel匯出匯入及點擊編輯
8-1 interface_menu.php
8-2 focus.php
8-3 function.php
8-4 templates/op_snews_focus.tpl
8-5 save_sort.php
8-6 excel.php
8-7 excel2.php
8-8 import.php
8-9 templates/op_import_form.tpl
9. 產生word檔、壓縮及解壓
9-1 index.php
9-2 templates/op_snews_show.tpl
9-3 save.php
9-4 interface_menu.php
9-5 word.php
9-6 zip.php
9-7 templates/op_zip_import.tpl
6-1 xoops_version.php
\[1071\]XOOPS模組開發 ================= ### 一、 輸出靜態HTML檔 1. 匯出功能主要是靠 `header `來定義文件的檔頭,進而憑空生出檔案(匯出記得關除錯)。 ``` header("Content-type: text/html"); header("Content-Disposition: attachment; filename=檔名"); echo 主要內容; exit; ``` 2. 利用mime-type即可將文件偽裝成各種檔案(特別是文字檔):
3. 可利用 `tadtools/tad_function.php `中的 `html5() `來套入HTML5頁面: ``` html5($content = "", $ui = false, $bootstrap = true, $bootstrap_version = 3, $use_jquery = true, $container='container') ``` 4. 下載時,IE可能會變成亂碼檔名,可用 `iconv("UTF-8","Big5",$檔名) `,將檔名轉成Big5編碼即可。(但若遇到檔名有特殊字的,就會變成缺字了) 5. 若是要把檔案存在主機上,做成靜態頁面,可用 `file_put_contents ($檔名, $檔案內容); ` ``` file_put_contents(XOOPS_ROOT_PATH . "/uploads/snews/snews_{$sn}.html", $html); ``` 6. 若是要讀出存在主機上的檔案,可用`file_get_contents ($檔名);` ``` $html=file_get_contents(XOOPS_ROOT_PATH . "/uploads/snews/snews_{$sn}.html"); ``` ### 二、 輸出成json 1. 同HTML,將mime-type改為`application/json` 即可 2. 如果是要給其他程式線上介接,一般不需要用`header()`來指定格式,直接`echo`即可。 3. 以PHP而言,利用`json_encode($陣列, JSON_UNESCAPED_UNICODE);` 就可把陣列轉換為json格式(`JSON_UNESCAPED_UNICODE`亦可用256取代,讓中文不被編碼) ``` $json = json_encode($all, JSON_UNESCAPED_UNICODE); file_put_contents(XOOPS_ROOT_PATH . "/uploads/snews/focus.json", $json); ``` ### 三、 讀入json 1. 利用`json_decode($json,true)`就可以把json轉換為PHP陣列。 2. 擷取遠端的json檔案可以利用`file_get_contents ($檔名) `來抓取! ``` $json = file_get_contents(XOOPS_URL . "/uploads/snews/focus.json"); $focus = json_decode($json, true); ``` ### 四、 模組區塊(Blocks)設定 1. 先將`xoops_version.php`中的區塊設定取消註解,並依序填入資料。 ``` $modversion['blocks'] = array(); $i = 1; $modversion['blocks'][$i]['file'] = "snews_focus.php"; $modversion['blocks'][$i]['name'] = _MI_SNEWS_FOCUS; $modversion['blocks'][$i]['description'] = _MI_SNEWS_FOCUS_DESC; $modversion['blocks'][$i]['show_func'] = "snews_focus"; $modversion['blocks'][$i]['template'] = "snews_focus.tpl"; $modversion['blocks'][$i]['edit_func'] = "snews_focus_edit"; $modversion['blocks'][$i]['options'] = "1"; ``` 2. 若需要第二組區塊設定,在`$i++`下方,將七個設定陣列再複製一份來修改即可。 3. 接著依據file 的設定值在blocks目錄下建立區塊檔案,如:`blocks/snews_focus.php` 4. 裡面至少要有一個區塊主函數。主函數的名稱必須和`show_func` 設定值一樣,例如: ``` `。 ``` function snews_focus_edit($options = "") { $form = "顯示文章數:
"; return $form; } ``` 11. 主函數的目的僅在於從資料庫抓出資料,送到區塊樣板中,故需在template項目設定樣板名稱,如:`snews_focus.tpl`,樣板放在「`templates/blocks`」下。 12. 區塊的樣版檔一律收到樣板標籤`<{$block}>`,不管顯示函數傳回的變數名稱為何。 ```
<{foreach from=$block item=focus}>
<{$focus.title}>
<{$focus.content2}>
<{/foreach}>
[閱讀更多]
``` 13. 區塊中若有連結,需注意必須使用「絕對位置」,如`<{$xoops_url}>` ### 五、微調中文文字數的裁切函數 ``` function word_cut($string, $limit, $pad = "...") { $len = mb_strlen($string, 'UTF-8'); if ($len <= $limit) { return $string; } //先找出裁切後的字串有多少英文字 $tmp_content = mb_substr($string, 0, $limit, 'UTF-8'); preg_match_all('/(\w)/', $tmp_content, $match); $eng = count($match[1]); $add = round($eng / 2, 0); $limit += $add; $string = mb_substr($string, 0, $limit, 'UTF-8'); return $string . $pad; } ``` [本週範例](https://www.tad0616.net/uploads/tad_book3/file/44/snews_6.zip)
:::
搜尋
search
進階搜尋
QR Code 區塊
快速登入
所有討論區
「PHP全端開發」線上課程討論區
XOOPS使用討論區
一般研習學員
社大學員專用
路過哈啦區
XOOPS佈景設計
XOOPS模組開發
Tad書籍區
即時留言簿
書籍目錄
展開
|
闔起
線上使用者
87
人線上 (
30
人在瀏覽
線上書籍
)
會員: 0
訪客: 87
更多…