ch02插件的基本組成部分——Joomla插件開發

開始

編寫一個內容插件,名字叫 Chapter 02 Test 01(插件文件名ch02test01)。先不考慮功能,先把框架安裝上。不是創建安裝包然後安裝,這次直接在Joomla中創建文件,然後通過Discove來安裝。
首先創建目錄:plugins/content/ch02test01
添加兩個文件:ch02test01.phpch02test01.xml

命名規則

插件名:ch02test01,包名:plg_content_ch02test01,類名:plgContentCh02test01
類名有嚴格的定義:Plg開頭,跟着插件類型名,然後是插件名。

插件類和方法

創建一個插件就聲明一個類。這個類在事件觸發是,被實例化爲對象。比如,你創建了一個內容插件,當系統事件觸發時,什麼都不會發生,當內容事件觸發時,類實例化爲對象,Joomla檢查這個對象事件方法存不存在。細節都在JPluginJPluginHelperJEventDispatcher三個類裏。使用觀察者模式。

類繼承自JPlugin。理論上,可以跳過JPlugin,直接繼承JEvent,因爲JEvent實際保存需要的功能。但是JPlugin包含很多有用的工具,比如初始化插件參數。

因爲父類JPlugin不一定包含在Joomla核心中,所以需要通過jimport函數先自動加載這個類。有時候可以跳過這個步驟,比如內容插件,顯然是在系統插件調用後才調用,所以JPlugin已經包含了。

添加時間方法到類

當一個事件被Joomla拋出後,事件首先指定插件組和事件方法。如果事件方法存在於類中,就會被自動調用。根據不同的方法,需要額外的方法參數。當一個個研究Joomla核心的事件時,就會更明白了。比如,可以添加事件方法用再在顯示內容時添加部分內容。

oncontentbeforedisplay的參數
四個:

  • 一個數組,$context,包含內容類型的meta data,比如com_content.article
  • 對象 , $row,指向實際要顯示的內容
  • 用過的參數,比如,文章參數
  • 目前顯示的 $page。
    $row指向原始內容,意味着我們可以修改這個參數來直接修改內容。不但可以修改文章內容,還可以修改文章標題、作者以及其他屬性。如果只是想修改文章內容,最好使用onContentPrepare這個時間方法。

找到插件參數
注意每個事件方法都有不同的參數和返回值。所以需要查出這些方法和返回值。怎麼辦,一是參考Joomla的文檔docs.joomla.org,二是這本書,三是看Joomla的代碼。最後一種方法最好。讀源代碼,找到事件在哪調用的,能夠更好的理解插件的工作機制。

演示代碼

添加些示例代碼吧,

	public function onContentBeforeDisplay($context, &$row, &$params, $page = 0)
	{
		$row->title = $row->title . ' [test01]';
		$row->text = $row->text . '<p>[test01]</p>';
	}

保留變量和方法

以下變量和方法已經在JPlugin中定義過了,不要重複定義
變量

  • $params,插件的參數
  • $_name,插件的名稱(ch01test01)
  • $_type,插件的類型(content)
  • $_subject,事件對象的名稱
  • $_errors,錯誤

方法

  • loadLanguage()
  • update()
  • def()
  • get()
  • getProperties()
  • getError()
  • getErrors()
  • set()
  • setProperties()
  • setError()

XML配置文件

下一章會詳細的討論如何寫XML配置文件。現在只做一個最基本的。文件名是ch02test01.xml。這樣做通過Discover按鈕就可以安裝插件了。代碼如下

<extension type="plugin" group="content">
	<name>plg_content_ch02test01</name>
</extension>

空index.html文件

用來防止瀏覽目錄的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章