前言
今天,HamZone 社區已被阮一峰老師收錄於… 第 239 期週刊 當中,迅速帶來了明顯的流量高峰,網站上湧入了來自各界的來訪者,其中包括業餘無線電愛好者和開發人員,並收到大量的「好友」請求。下班後,這篇文章便在腦海中浮現。
一個人的精力實在是有限的。
自 Flarum 於社群中正式運作兩個月以來,我透過多次迭代,嘗試開發了一些插件,以擴展一些更具業餘無線電愛好者風味的功能,並意識到其強大的潛力。目前,我對該框架的插件開發機制及流程已經有了一定的了解。同時,鑑於國內對於相關開發資料較少的情況,我計畫及時發布文件,讓更多人可以參與其中,實現更多更有趣的功能。本文以及相關文件將會同時發佈到 FlarumCN 社群。
我主要負責後端 Go 開發,對於其他方面也有一些了解,接下來,我會盡可能詳細地介紹一些流程,如果發現有任何不妥或遺漏的地方,請多多指教。
首先
假設您已經對 PHP 語言有一定程度的了解,並且曾嘗試使用像是 Composer、Laravel 等工具。
假設您對後續興起的前端開發方式有一定程度的了解,例如但不限於 Vue、React、Node.js、Webpack 等相關的使用,以及插件的開發也會貫穿前後端的相關知識。
假設您已經具備基礎的運維知識,例如 MySQL、Nginx 等相關套件的使用。
同時,你還需要具備一定的故障排除能力、相對良好的編碼習慣,以及能夠有效搜尋相關文件或知識的能力。
如果沒有上述基礎,以下工作可能會對您造成一定程度的困難。
如果您對 PHP 語言感興趣,我強烈建議您透過… php.net 透過官方網站學習,或是透過 B 站等平台的影片課程,其他技能的學習也一樣,這都需要投入一定的心力與時間。
接下來
讓我們來了解「Flarum」是什麼。
這是一個非常時髦的社群/論壇架構,目前擁有一個非常活躍的開源社群的支持,官方網站對它的介紹如下:現代、快速且免費!
他基於 PHP Laravel 框架進行二次開發,介面採用高性能且輕巧的 JavaScript 框架。 Mithril。
他採用 MIT 授權方式發布。
關於他的更多介紹或預覽資訊,請參閱: 關於 Flarum 或參考以下連結:
如果您想了解哪些人正在使用 Flarum 框架建立社群,FlarumCN 提供… 社區活動 在入口處進行展示,這看起來非常好。
推薦原始碼
推薦幾個具有代表性的擴充功能,在開發過程中,或許能為您帶來不少幫助與參考。
外部擴充功能
在後續的開發中,如果你對於某個功能的實現方式有疑問,通常可以在 Flarum 社群或開源專案原始碼中找到答案。
內建插件
每個 Flarum 網站都有其獨特的社群和特色,HamZone 社區也不例外。以下列舉一些常用的內建插件,以便後續的開發:
其中:
二次開發:基於已有的插件,進行修改和調整。
公開:倉庫檔案的公開存取
私用:考量內部安全因素,不會開放外部訪問。若有需求,可與我聯繫(如果我是個業餘無線電愛好者,那就更好了)。
開始運動
Flarum 的環境
將 Flarum 框架運行在你自己的開發環境中,是必須的。
在 安裝 | Flarum 其中包含非常詳細的說明,您可以先有一個大致的概念。
不過,我想在這裡介紹一種由當地開發的運作方式。
對於 PHP、Composer、MySQL、Node.js、Webpack 等本地環境的部署,這裡就不再贅述了。
鑑於前後端環境共存的專案,我個人強烈建議使用。 VSCode 開發編碼工具,並進行一些簡單的修改:
- Git Bash 終端環境 (Windows)
- VS Code 擴充功能: PHP Intelephense
取得 Flarum 的原始碼檔案,倉庫地址:https://github.com/flarum/flarum
複製 Git 倉庫:git@github.com:flarum/flarum.git,深度為 1。
在專案的根目錄中,開啟 VS Code 終端,首先執行:
Composer 安裝
然後
進入 public/ 資料夾
執行
php -S 127.0.0.1:8888

透過瀏覽器訪問:http://127.0.0.1:8888/
這樣就能看到「安裝 Flarum」的字樣。

填寫完資料庫配置內容後,即可獲得開發插件的基本環境。
空白擴展產生器
接下來,需要在 Flarum 環境中,建立一個屬於您自己的插件開發專案,可以利用社群提供的擴充工具來完成。
在這個貼文中,可以看到更具體的討論:由 FriendsOfFlarum 創建 Flarum 擴充功能
請參考 Flarum 插件擴展的開發文件,它提供了在本地開發時載入模組的方式。英語介紹),並約定 Flarum 的本地擴充模組都放在 套件/ 目錄下
為了避免影響剛剛啟動的 php -S 127.0.0.1:8888 服務,我們可以使用 VS Code 開啟多個終端,並在新的終端中執行:
Composer 設定儲存庫的「repositories.0」路徑為「packages/*」。
如果您想了解更多細節,這裡有一個不錯的介紹,您可以前往: Flarum 的二次開發項目設定指南 查看,其中,關於版本控制的階段,個人建議可以將 套件/* 每個資料夾都應視為一個專案的管理。
現在,您可以安裝「插件產生器」,以便後續的多個插件開發。
使用 npm 全局安裝 `@friendsofflarum/create-flarum-extension`。
在先前步驟所建立的擴充套件目錄中,繼續使用以下指令,來產生空白內容以填寫:
建立 Flarum 擴充功能 [目錄]
例如,您可以將以下指令執行在專案的根目錄下:
建立「create-flarum-extension」套件,位於 packages/flarum-ext-hamzone-tools
成功後,你會看到以下畫面,他會引導您創建第一個插件內容。

如果您不確定該選擇哪些選項,以下提供一份預覽:

因此,您的工程專案資料夾可能會像這樣:

關於範例中 flarum-ext-hamzone-tools 插件內容,會在後續章節中說明。
啟用擴充功能
上一步驟中,已成功產生插件範本,此時他已經具備執行的基本檔案,但仍需進行一些簡單的修改,以便他在 Flarum 後台啟用。
專案根目錄 composer.json 文件中,對應 require 欄位新增:
「require」:
「hamzone/flarum-ext-hamzone-tools」:\*@dev
在 Flarum 的設定檔中,請修改以下內容:
「除錯」=> 當然,
在專案的根目錄中執行終端,然後輸入以下指令:
Composer 需要安裝 hamzone/flarum-ext-hamzone-tools 這個套件,版本為 @dev。
在 macOS 上執行上述步驟👆🏻指令,可能導致出現錯誤訊息:zsh:未找到匹配結果,可以嘗試在 ~/.zshrc 中間新增:
設定為「無匹配」

在後台控制面板中,就出現了剛剛建立的擴充功能:

不過,當你點擊開關,準備啟用插件時,出現了一個錯誤訊息:嘗試載入此頁時發生錯誤。
別慌,我們可以去 storage/logs 在檔案夾中,請查看詳細的錯誤訊息:
[2023-01-13 15:48:15] flarum.ERROR:無效的ArgumentException:找不到檔案,路徑為:flarum-ext-template\flarum\packages\flarum-ext-hamzone-tools/js/dist/admin.js……
顯然地,缺少了前端所需。 dist 檔案,只需前往 packages/flarum-ext-hamzone-tools 之中 js 請分別執行以下步驟:
執行 yarn install 命令
編譯 Yarn
再次訪問後台介面,即可啟用插件,並獲得預設輸出。[hamzone/flarum-ext-hamzone-tools] 您好,管理員!

經過以上步驟,已經成功在本地開發環境中運行第一個 Flarum 插件。
我主要參考了以下這些討論串,感謝他們的貢獻:
如果您還有任何疑問,歡迎加入討論社團:HamCQ 社區交流群
(本社主要針對業餘無線電愛好者) && 開發者)