創建一個最基本的組件需要5個文件
site/hello.php 這個是組件的入口
site/controller.php 控制器
site/views/hello/view.html.php 視圖,它將接受顯示所需要的數據,並把數據傳遞給模板文件
site/views/hello/tmpl/default.php 模板文件
hello.xml 這個文件將告訴 Joomla! 如何安裝這個組件
PS:site在這裏是固定寫法,在組建安裝後,他會被自動替換爲對應的組件名,比如:如果我們的組件叫hello,那麼site在安裝後就會被替換爲com_hello。
我們總是通過一個入口訪問Joomla!——在頁面這邊是index.php,在後臺管理端是administrator/index.php。這裏這個index.php是Joomla!的文件,而不是組件的一部分,我們通過這個文件來訪問我們的組件,形如:
index.php?option=com_hello&view=hello
在地址欄裏輸入這個地址就會訪問我們組件的入口components/com_hello/hello.php
下面是入口文件樣例(代碼來自Joomla!官方網站)
第一句是安全檢查,如果不符合當前安全要求的,比如沒有訪問權限,頁面不能訪問
JPATH_COMPONENT 是當前組件的路徑,在這個例子中是components/com_hello。如果是管理端,則用JPATH_COMPONENT_ADMINISTRATOR。
在controller創建文成後,就要使用它來執行任務了。可以通過在地址欄輸入地址來制定要執行的任務,形如:URL: index.php?option=com_hello&task=sometask,如果並沒有指定任務,那麼將默認執行任務display。
注意:文件結束部分並沒有使用標籤 ?>來結束文件。從Joomla!1.5以後,所有的純php文件都將如此。這樣做的目的是爲了避免生產不必要的空格(希望有一天能明白爲啥會這樣)
創建控制器 site/controller.php
由於這個例子要求的非常簡單,所以只有一個任務——說hello
除非制定了別的任務,JController總是會在構造函數中註冊display任務。display是JController的默認任務。
創建視圖
視圖的任務非常簡單——獲取到要被現實的數據,並把數據傳送給顯示模板。傳送數據的方法是JView::assignRef。(注意:assignRef的第一個參數不能以下劃線開頭,例如:$this->assignRef('_greeting',$greeting),如果這樣做了,那麼assignRef將會返回false或者數據不能被傳送到模板中去。)
示例代碼:(site/views/hello/view.html.php)
創建模板
在Joomla!裏,模板是把從試圖傳送過來的數據按照模板規定的樣式顯示出來。模板就是一個php文件。在模板裏使用$this->{propertyname}來訪問從視圖傳送過來的數據變量。
在本示例中,模板非常簡單
site/views/hello/tmpl/default.php