元件如何運作的第一課

From Joomla! Documentation

This page is a translated version of the page Absolute Basics of How a Component Functions and the translation is 100% complete.

Other languages:
অসমীয়া • ‎বাংলা • ‎Deutsch • ‎English • ‎español • ‎eesti • ‎فارسی • ‎français • ‎हिन्दी • ‎Bahasa Indonesia • ‎italiano • ‎Nederlands • ‎Nederlands (informeel)‎ • ‎português • ‎português do Brasil • ‎română • ‎русский • ‎українська • ‎中文(台灣)‎

這篇文章是為 joomla! 初學者規劃來解釋 Joomla! 元件是什麼,以及它如何作用。使用一個特定的元件當成範例會很有幫助,這篇文章我們的範例元件名為「Hello World!」。

什麼是 Joomlaǃ 元件

元件是Joomla! 擴充套件 的一種類型。元件是主要的 Joomla! 作用單元;它們可以被視為是一種小型應用。一個簡易的 類比,就是把 Jooml! 當成作業系統,而元件就是安裝的桌面應用程式。Joomla! 內容就是用元件產生,經常會出現在佈景主體頁面上,主要內容的中央(當然要視不同的佈景主題而定)。

大多數的元件有兩個主要部分: Administrator 部分以及 site 部分。Site 部分是用於產生頁面到您的網站上,當網站的訪客提出請求的時候,可以做些一般的網站操作;Administrator 部分提供一個介面讓管理者可以設定以及管理元件的其他面向,可以從Joomla! administrator application來訪問其介面。

Joomla! 自帶一些核心元件,比方說內容管理系統、聯絡人表單以及 Web Links 等等。

延伸閱讀: 模組, 外掛, 佈景主題


在 Joomla! framework 中,可以使用 flat 模式來設計元件 (returns HTML code for the requested page) ,或是使用 Model-View-Controller (在此簡稱為 MVC) 樣式。

MVC 簡介

MVC 是一個軟體設計樣式,其思維是,商業邏輯以及資料庫表現是分開的,基於此基礎來組織程式碼。本樣式的前提是,假如商業邏輯集中在某一個組合中,而圍繞著資料庫的介面以及使用者互動,是可以被更動或是客製化的,不用重新撰寫商業邏輯程式。MVC 最早是用於整合視覺設計到開發傳統的輸入、執行、輸出當中。

Model

Model 是整體元件的一部分,用來封裝應用程式的資料。應用程式經常提供例行工作管理和操作這些資料,以有意義的方式將從 model 獲取的資料呈現出來。一般而言,底層的資料存取技術會被封裝於 model。依此模式,假如一個應用程式要從舊式的扁平式資料儲存flat file,過渡到儲存資訊於資料庫,那麼 model 將會是唯一需要被修改的內容,不需要更動 view 或是 controller。

View

View 是整體元件的一部分,將 model 中的資料轉譯來適合用於互動。以一個網頁型態的應用程式而言,view 一般會是使用者最後看到的 HTML 頁面。View 從 model 取出資料 (資料是由 controller 轉手的),然後將資料填入佈景主題中,呈現給使用者。View 本身並不包含資料,它只是呈現從 model 拿到的資料而已。

Controller

Controller 負責回應使用者的行為。以網站來說,用戶行為一般是頁面請求。Controller 會判斷收到何種使用者請求,適當地觸發 model 來取用資料,並將其送回 view。Controller 並不展示 model當中的資料;它僅是觸發 model 當中的 method (這才會影響資料),回傳給 view 讓它去展示資料。

Joomla! 元件框架詳釋

Model

在 Joomla framework 中,models 負責管理資料。第一個要寫到 model 中的功能是一個get function。他會將資料回傳給呼叫者。在範例中,呼叫者就是HelloWorldViewHelloWorld view。預設情形下,命名為 HelloWorldModelHelloWorld 的model 存放於 site/models/helloworld.php 是主要的關連於此 view 的model。

現在,我們用一個範例,快速地來看一下命名規則。命名規則像是魔法一般,這讓一切運作起來:

class HelloWorldViewHelloWorld 位於 site/views/helloworld/view.html.php ,會使用位於檔案site/models/helloworld.php當中的 class HelloWorldModelHelloWorld

所以我們可以假定,我們打算要使用一個假想的 view fluffy,你要有:

位於site/views/fluffy/view.html.php 路徑的HelloWorldViewFluffy。 他會取用檔案 site/models/fluffy.php 中的 HelloWorldModelFluffy
注意:要讓這個案例能夠運作,真正的 view: site/views/fluffy/tmpl/default.php 也是需要的。

粗體字的部份如果不小心加了空白字元,會導致錯誤頁面或是空白頁面。


取用 Joomlaǃ 元件頁面

首先我們要先訪問到 Joomla! 網站,這是一個單純的入口。使用您偏愛的瀏覽器,訪問以下的 URL:

1 前台訪客頁面 <網站路徑>/joomla/index.php
2 管理員訪問頁面 <您的網站路徑>/joomla/administrator/index.php

Hello World! 範例: localhost/joomla/index.php

您可以使用元件的 URL,或是一個 選單 來訪問元件頁面。在本文中我們使用 URL.

1 前台用戶訪問 <網站路徑>/joomla/index.php?option=com_<component_name>
2 管理員訪問元件頁面 <網站路徑>/joomla/administrator/index.php?option=com_<component_name>

Hello World! 範例: localhost/joomla/index.php?option=com_helloworld

MVC 基本的資料夾結構

元件存放於您的 Joomla! 安裝路徑底下,也就是:

  • htdocs/<path_to_joomla>/components/com_<component_name>/

Hello World! 元件會被存放於 htdocs/<path_to_joomla>/components/com_helloworld/.

基本的元件會包含底下的這些檔案:

  • 一個 html 檔案,這僅僅是帶有被景色的一個安全檔案:index.html
  • 一個 php 檔案,用來包含 controller ː controller.php
  • 一個 php 檔案,載入 controller classː <component_name>.php
  • 一個 php 檔案,包含了 modelː models/<component_name>.php
  • 另一個 html 檔案,用於背景安全控制ː models/index.html
  • 一個 php 檔案,包含了預設的 viewː views/<component_name>/tmpl/default.php
  • 一個 xml 檔案,用來加入選單項目類型: views/<component_name>/tmpl/default.xml
  • 另一個 html 檔案,用來做背景安全控制:views/<component_name>/tmpl/index.html
  • 另一個 html 檔案,作為背景安全控制:views/<component_name>/index.html
  • 一個 php 檔案,用來作為展示 viewː views/<component_name>/view.html.php


JEXEC

以下是 Joomla! PHP 檔案中,常見的開頭內容:

<?php
    defined('_JEXEC') or die('Restricted Access');

這可以確保訪問 Joomla 的安全性。 JEXEC 當中有更詳細的說明。

設計一個 MVC 元件指南

學習如何設計屬於您的 MVC 元件之前,請針對您的 Joomla! 版本,完成以下教學。