Demo

討論

保持飢餓,保持愚笨 (Stay hungry, stay foolish)。 史蒂夫·賈伯斯

公告

本網站已取消討論區的討論方式,如果您有問題請至LINE群行動條碼圖片網址,或Facebook社團

Mambo簡明開發教學(第二章:入門與檔案結構)

  • 羽城君拉
  • 羽城君拉 的個人頭像 Topic Author
  • Offline
  • 管理員
  • 管理員
More
2005-03-21 10:15 - 2005-03-21 16:17 #157 來自 羽城君拉
羽城君拉 created the topic: Mambo簡明開發教學(第二章:入門與檔案結構)
開發元件?裡面程式碼一堆我看不懂怎麼辦
Mambo的元件開發說難其實很難,如果你學過PHP的語法,保証你剛打開Mambo的其中一個元件的程式碼,一定還是丈二金剛摸不著邊。先看看以下這幾行程式碼:(components/com_contact/contact.php)
require_once( $mainframe->getPath( 'front_html' ) );
require_once( $mainframe->getPath( 'class' ) );

$mainframe->setPageTitle( _CONTACT_TITLE );

if ( !isset( $op ) ) {
	$op = '';
}
這幾行只是最前面的宣告而已,就用了Mambo CMS裡許多全域存取的類別方式(Class Method),我加上註解如下:


//require_once 同名的 .html.php檔案
require_once( $mainframe->getPath( 'front_html' ) );
//require_once 同名的 .class.php檔案
require_once( $mainframe->getPath( 'class' ) );

//設定這一頁的標題
$mainframe->setPageTitle( _CONTACT_TITLE );

//從 同名的.html.php 的form中傳來的值,op是用來判斷是否要寄Email的,對照43行的switch敘敘
if ( !isset( $op ) ) {
$op = '';
}

以上對程式碼的解說,用意只是要讓你了解,其實Mambo元件的開發,用了很多已經實作包裝好的函式和變數。對於這些包裝好的函式和變數,大部份會存在以下幾個檔案中:

  • includes/mambo.php:最核心的mambo類別、函式宣告都在這,核心元件的類別和類別函式也在這。

  • includes/database.php:有關於資料庫連結、存取函式,元件的資料表單的類別宣告和相關函式都在這。
這兩個檔案會在後面把一些常見的函式一一介紹一翻。

元件的開發步驟

每個元件代表的是不同的功能程式,許多人一開始會覺得寫Mambo的元件比用單純的PHP程式來製作同樣的功能還難很多,這是表面上的感覺。深入Mambo的開發方式後,會發覺其實Mambo提供了十分完整的網站架構,能夠讓你在實作許多後台功能時,感覺到方便性。

如果你只是單純的要用個程式展現到前台某些功能時,這樣的作法或許稍嫌多餘。我們在稍後其它的章節會來討論最簡單的元件製作方式,應該是可以符合這樣的需求。

這裡要談到元件開發的步驟和建議,我在後一章會開始製作一個簡單的範例。你會發現範例中會用上這裡的步驟和建議的方式。假設我們現在製作一個稱為XXX的元件。

1.建立所需的目錄與檔案
2.實作資料庫表單結構(xxx.sql)
3.實作Database Class Handles(xxx.class.php)
4.實作選單項目(INSERT TO mos_components)
5.實作Toolbar(後台:toolbar.xxx.php 與 toolbar.xxx.html.php)
6.實作Application Event handler和Application HTML presentation(前台:XXX.php和xxx.html.php,後台:admin.xxx.php和admin.xxx.html.php)
7.實作xxx.xml、install.xxx.php和uninstall.xxx.php
8.實作多國語言化
9.實作多種樣版(theme)化

檔案的結構圖如下(這是在你Mambo的根目錄底下)

註:administrator/components/xxx.class.php這個檔案會在特定的情況出現在這裡。

以上的步驟2~6,有可能會視情況調整不同的作法,或同時間一起作業。我的習慣是先建立一個類似空殼的操作圖形化介面,再開始作前台,後台的實作部份。

首先,還是要談到資料庫的設計和程式的流程,資料庫裡要記錄什麼的資料滿重要的,最好是先畫出ER-model來作為參考。程式裡要有什麼功能,流程也很重要。對於大型的程式,沒有先作這些前期的規劃,後面要來修正就很困難。這是預先準備的工夫。

接下來接著製作好這些需要的檔案名稱,目錄的取名通常都是com_xxx,xxx指的是你的元件的名稱,取個容易認出來的好名字(別太長或加一些有的沒有的符號),也請勿和目前已經有人在開發的元件名字一樣,以避免有其他網站管理員用了同名字的元件造成安裝上的問題。你需要在/administrator/components/和/components/下先建立這個目錄。

第3.個步驟是建立一個xxx.class.php檔案在/components/com_xxx/目錄裡,這個檔案是資料庫類別的宣告檔案,這個有固定的格式可以參考,和你剛建好的資料庫表單有很密切的關係。裡頭除了資料變數名稱要宣告外,還有一個建構式(constructor)宣告是必要的,也常有元件把對資料變數的檢查函式(function check())寫在這裡。

第4步驟是建立Menu item,這是後台選單的部份。

第5步驟是建立Toolbar對應的項目,這是後台工具列的部份。

這兩個步驟是先建一個大概的"後台"操作介面,並沒有說一定要一開始就得精準地建好所有的選單項目和每個功能對應的Toolbar。有的人習慣一個一個慢慢建,但我的建議是先建好所有需要的,再把對應的功能一個一個實作出來。

第6個步驟是程式的核心,Application Event handler和Application HTML presentation是彼此相關的,用每一個功能寫出後,把需要顯示出來的部份放在Application HTML presentation,你要記住承接Event($act或$task)的是Application Event handler,而Application HTML presentation是專為Application Event handler顯示的部份,有些Application Event handler裡的Event處理完後,會直接用mosRedirect(如果處理成功的話)或JavaScript語法的Alert加上windows.history.go(-1)(如果處理失敗的話)的方式來顯示,這在Application HTML presentation中就沒有對應的顯示方法。

第7個步驟是建立安裝敘述檔案,把你的檔案複製對應到所需的目錄裡,以及十分重要的,在資料庫裡建立你的元件所需的資料庫表單。這樣Mambo的其他管理者,可以在他們的網站裡安裝你的元件,當然在往後也可以安全地與簡易地移除它。

第8個步驟是將你的元件介面多國語言化。多國語言化是一個讓其他語言使用者的Mambo網站方便的附加功能。

第9個步驟是製作可套用風格或樣版的功能,通常是使用CSS的方式來達成。這在許多成熟的元件裡可以看到這個功能。例如Simpleboard(論壇)和Docman(檔案管理)這兩個元件。

...
最後修改原因: 2005-03-21 16:17 來自 羽城君拉.

Please 登入 to join the conversation.