線上書籍

Home

1041 XOOPS模組開發

一、 關於本課程
  1. 講義:http://www.tad0616.net/modules/tad_book3/index.php?tbsn=37
  2. 申請 Dropbox,一旦發布講義,您的電腦會馬上收到。
  3. 本課程是系列中的第四個學程,屬進階部份,因此,有任何聽不懂的:拜託您問!
  4. 上課歡迎卯起來走動,互相觀摩交流,盡量別保持安靜。飲食部份請至走廊食用。
  5. 上課時間為週六 9:00~12:00 及 13:30~16:30,共計九次。
  6. 上課歡迎拍照、錄音、錄影,能和同學分享更好。
  7. 座位基本上沒有強制性,但也不建議每次都換來換去。
  8. 記得認識一下助教!開發經驗豐富的郭俊良與李佳玲。
二、 這學期會學到...
  1. XOOPS:要寫XOOPS模組,當然要熟悉XOOPS的操作方式
  2. PHP:XOOPS是用PHP開發的,所以要寫好模組,PHP能力不可或缺。
  3. MySQL:XOOPS資料一律存至資料庫中,也就是SQL資料庫語言。
  4. HTML5:用來撰寫模組外觀架構、表單...等。
  5. CSS3:用來美化模組外觀
  6. BootStrap:快速導入自適應框架,讓您的系統在手機跑看起來也一樣美觀。本學期同時會了解BootStrap2以及BootStrap3
  7. Smarty:XOOPS內建樣板引擎,用來製作模組樣板。
三、 開發工具:以sublime text為主
  1. 只要是自己熟悉的純文字編輯工具都可以。首推 sublime text,其次為 NotePad++,基本上沒有限制,您用得習慣即可。
  2. 可用 Ctrl+/ 或 Ctrl+Shift+/ 來產生註解符號
  3. 用tab鍵縮排,Shift+tab反縮排
  4. 更多進階用法:http://docs.emmet.io/abbreviations/syntax/
四、 開發環境:XOOPS輕鬆架的安裝與設定
  1. 需有XOOPS網站,理所當然的會有網頁伺服器(如:Apache)、資料庫(如:MySQL或MariaDB)、PHP這些基本環境。
  2. 申請學生練習主機空間(http://163.26.52.243
    • (1)  學生練習主機為Linux主機,僅社大學員可以申請(FTP及MySQL帳號)。
    • (2)  使用期限為本學期,學期結束後,可能隨時會清除舊資料,故請自行備份。
    • (3)  申請後,您的網站網址為:「http://163.26.52.243/~帳號」
    • (4)  資料庫和FTP帳號、密碼是一樣的!
    • (5) 資料庫位置:http://163.26.52.243/modules/tad_adm/pma.php
  3. XOOPS:本學期以 XOOPS 2.5.7為主要開發環境。請先裝好最新的 tadtools 模組。
  4. 一般開發環境可在windows底下開發,開發完後,再上傳到Linux主機即可。
  5. 請至 http://120.115.2.90 下載所需的XOOPS輕鬆架版本,並安裝之。
  6. windows版的內含UniformServer伺服器,解壓後,執行 start.bat 即可啟動網站。
  7. 相關安裝請參考線上手冊或上課講解示範,安裝完請將所有內建模組更新到最新版。
五、 幾個您要知道的位置(假設裝在D:)
  1. 網頁目錄的位置:D:\my_xoops\www
  2. 資料庫的存放位置:D:\my_xoops\core\mysql\data
  3. PHP 設定檔 php.ini 的位置:D:\my_xoops\core\php54\php_production.ini
  4. MySQL設定檔 my.ini 的位置:D:\my_xoops\core\mysql\my.ini
  5. 網站連結位置:http://電腦IP或http://localhost或http://127.0.0.1
六、 下載XOOPS250ModuleConversionFiles
  1. OOPS250ModuleConversionFiles是官方提供的基本模組架構,但下載的版本已經有先經過優化,並加入bootstrap各版本支援,所以,會建議用此版(20150321)來開發比較容易上手。
  2. 一個XOOPS模組就是一個目錄,此目錄會放在modules底下。
  3. 底下是新的(2.5之後的)XOOPS的模組目錄建議結構(PHP > 5.2):
    admin
    blocks
    class
    css
    docs
    images
        |--- admin
        |--- icons
    include
    language
        |--- english
            |--- help
    sql
    templates
        |--- blocks
    test
    模組後台目錄
    區塊檔案目錄
    額外的物件庫或函式庫目錄
    模組樣式目錄
    說明文件目錄
    圖檔目錄
        |--- 後台界面用到的圖檔
        |--- 其他圖檔
    引入檔目錄:如搜尋、模組自動檔
    語系目錄
        |--- 英語語系(Big5中文為tchinese、UTF-8為tchinese_utf8)
            |--- 說明文件語系
    資料庫結構目錄:裡面會有.sql檔
    模組樣板目錄:用來放置模組頁面的樣板檔,均為.html檔
        |--- 區塊樣板檔:一樣為.html檔
    測試檔目錄:放置Selenium 測試檔
  4. 粗體底線的目錄(如果有用到該功能的話)則是一定要有的,而且不能亂改目錄名稱!
七、 認識 xoops_version.php
  1. XOOPS的模組目錄下一定有xoops_version.php設定檔,否則就不是標準模組。
  2. 請依照設定檔順序,產生相對檔案出來。
  3. $modversion['version'] 版本號寫法:1.0、2.3...均可,但1.0.1需寫成 1.01。
  4. $modversion['module_status']模組狀態可以是Alpha、Beta、RC、Release
  5. $modversion['adminmenu']後台選單的圖示為32x32,可從這裡下載:
  6. 利用 http://apps.pixlr.com/editor/ 可線上編輯按鈕。文件→打開圖片→上傳按鈕底圖。圖層→打開圖像為圖層→上傳小圖示。利用文字工具輸入名稱,新細明體12級
八、 xoops_version.php 中的語系
  1. xoops_version.php 若有用到中文的部份,建議做成語系檔。
  2. 若只是自用,那直接寫中文亦可(字串一定要加上引號),但偏好設定,一定要用語系。
  3. xoops_version.php 的語系檔一律位於 language/tchinese_utf8/modinfo.php 中(不可自訂檔案或改檔名)
  4. 語系設定方法: define("_MI_語系名稱" , "對應的實際中文");
  5. 「_MI_語系名稱」是PHP常數,_MI 則是XOOPS建議的常數開頭,一般而言建議用底線開頭,並全部大寫,以容易識別(但其實無強制性)。
  6. 一般 _MI 後面會加上模組名稱,以避免常數衝突,例如: _MI_MYMOD_XXX
九、 建構模組所需資料表(mysql.sql檔)
  1. 請利用站長工具箱中的資料庫工具(http://網址/modules/tad_adm/pma.php)
  2. 選好資料庫,點選下方「建立資料表」按鈕,建構模組所需的資料表結構。
  3. 接著,利用左邊匯出工具來匯出成sql檔,輸出選「儲存」,格式選「SQL」即可。
  4. 檔案請存至 sql 資料夾底下,並修改 xoops_version.php 的 $modversion['sqlfile']['mysql'] 設定值。
十、 本學期的模組開發目標
  1. 將以上學期的新聞模組為基礎,將之延伸,成為電子刊物模組。
    • 電子刊物可分期(所以需要一個資料表紀錄期刊資訊,第幾期?出版日、主題、封面、主編...等)
    • 特定群組可投稿(利用內建的權限資料表達成)
    • 可指定由誰來審核(利用偏好設定來簡單達成即可,或者亦可紀錄至期刊資訊表)
    • 可分單元(即原來的分類表)
    • 可編輯圖文(即原來的文章內容表)
  2. 「期刊資訊表」ebook 列 ebook_sn ebook_title ebook_post_date ebook_publish_date ebook_editor
    類型 註解
    smallint(5) unsigned 自動遞增 刊物編號
    varchar(255) 刊物標題
    date 投稿截止日
    date 發行日
    varchar(255) 編輯群
  3. 「單元分類表」ebook_cate 列 cate_sn cate_title ebook_sn
    類型 註解
    smallint(5) unsigned 自動遞增 單元編號
    varchar(255) 單元名稱
    smallint(5) unsigned 刊物編號
  4. 「文章內容表」ebook_content 列 page_sn cate_sn page_title page_content uid author post_time status counter note
    類型 註解
    smallint(5) unsigned 自動遞增 文章編號
    smallint(5) unsigned 單元編號
    varchar(255) 文章標題
    longtext 文章內容
    smallint(5) unsigned 作者編號
    varchar(255) 作者姓名
    datetime 投稿時間
    varchar(255) 文章狀態
    smallint(5) unsigned 計數器
    text 備註