php – Joomla – 自訂編寫的模組 (module) 的安裝方式

參考官方教學

Joomla 模組架構

  • mod_helloworld/ 官網案例命名為「mod_自訂模板名稱」
    • sql/ 放置安裝/移除套件所需要的 SQL
      • mysql/ 範例使用 MySQL
        • updates/ 若要更新套件所要修改的 SQL 放置處
      • index.mysql.utf8.sql 新增模組會用到的 SQL
      • uninstall.mysql.utf8.sql 移除模組會用到的 SQL
    • tmpl/ 模板的路徑
      • default.php 顯示的 View
      • index.html 避免直接讀取的阻擋警告
    • helper.php 也就是 Library,提供給 mod_helloworld.php 呼叫,也就是 Model
    • index.html 避免直接讀取的阻擋警告
    • mod_helloworld.php 模組進入點,也就是 Controller 的部分
    • mod_helloworld.xml 關於模組的資訊,例如模組名稱、版本、安裝的檔案路徑……

 

依序建立新模板

要注意模組的後臺顯示與前台顯示的方式不同

  • 後台:使用 mod_helloworld.xml 中的 <config> 作為設定,取得 SQL 的編碼寫在 XML 的屬性中。
  • 前台:顯示結果的部分則是靠 tmpl/default.php 顯示,取得 SQL 的編碼寫在 helper.php 中。

modules/mod_helloworld/mod_helloworld.xml

這個 xml 是基本資料與對應的路徑名稱,還有提供給後台設定的欄位方式,可以觀察註解。關於 <field type=””> 的屬性甚至是其他的屬性,可以查閱文件,不同的值可以直接產出不同的功能。

 

modules/mod_helloworld/sql/mysql/install.mysql.utf8.sql

安裝時的 SQL

 

modules/mod_helloworld/sql/mysql/uninstall.mysql.utf8.sql

反安裝時要移除的 SQL

 

modules/mod_helloworld/mod_helloworld.php

控制器的部分,也就是進入點。當前台網址取得 lang=X 的時候,將參數帶入 getHello() 。

 

 

modules/mod_helloworld/helper.php

這裡呼叫資料表中的資料,準備提供給前台使用。

 

modules/mod_helloworld/tmpl/default.php

View 的部分,也是顯示給前台使用

 

進入後台安裝套件

上方的程式碼放在「你的專案資料夾/modules/mod_helloworld」以後,我們先從後台 探索 並點擊安裝

接著前往新增模組

點選 Hello, World! 就會開始新增這個模組提供給我們使用。記得這個程序是 「安裝 > 新增」。接著會看到我們要設定的語言。這個下拉選單,就是由 mod_helloworld.php 中的 <field> 屬性寫入。

我們可以在右側的部分,設定在想要顯示的前台位置,例如我們顯示在頁尾,接著按下儲存。記得標題要填寫。

 

這樣就把紀錄寫在資料表 #__modules 中儲存了。可以前往資料庫查看紀錄。若要取出儲存在後台的欄位值,就要在 Helper 的部分用 SQL 取出 #__modules 的欄位 params 並解碼 JSON 格式。因為後台儲存管理者填寫的資料,都是被 Joomla! 製成 JSON 後才存放到欄位 params。

-接下來我前往前台的 Footer 頁尾,就能看到這個模組顯示在我們要的位置上

 

Comments

  1. 感謝您的分享,很詳細的教學,不過我有點想換 laravel了XD

    • 哈哈我是因為新公司使用 Joomla! 套版開發的關係,所以現在才接觸XD
      如果可以的話還是 Framework 開發比較好掌握跟維護。

發表迴響