問與答

【JOOMLA教學】 Joomla目錄結構

joomla教學-joomla目錄結構

開發或重寫JOOMLA程式,必須對JOOMLA的目錄結構有所了解,我在這裡做簡單的介紹!


1、componets 所有安裝的元件、前端網頁介面相關程式都在這裏,每個元件都有一個子目錄,通常是com_***


2、plugins 所有的外掛、相關的程檔、範本檔、資源等等


3、modules 模組相關的程式和資源


4、includes 涉及重要的程式、定義等等


5、 languages 語言檔,一種語言一個目錄,比如英文就是en-GB,中文繁體就是zh-TW,目錄下是相應的語言定義檔,命名規則是 語種、組件名字(插件名字).ini ,比如 zh-TW.com_showcase.ini zh-TW.plg-***.ini等等。


6、templates 前端網頁模板檔,一種template一個目錄


7、library 最重要的目錄之一了,子目錄結構對應名稱,比如

jimport( 'joomla.environment.uri' );
那麼對應的是 joomla/environment/uri.php 文件

 documentroot/index.php ,以及 templateindex.php ,可以稱為萬源之源,因為可以說所有的頁面都是這兩個檔的成果。

/index.php 是所有頁面程式的起點,讓我們來看看這個檔到底做了什麼?

define( '_JEXEC', 1 ); //標誌這是一個跟檔
define('JPATH_BASE', dirname(__FILE__) ); //取得Document root,就是 /index.php所在的絕對路徑
define( 'DS', DIRECTORY_SEPARATOR ); // 定義目錄分隔符號
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' ); //defines.php定義了一些目錄變數,以後詳細的寫
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
//framework.php是另一個非常重要的文件,在framework.php讀入了config.php中定義的變數,同時
//framework中引入了一些的基礎類,例如JFactory,JUser等等
//LAYOUT物件,JFactory符合設計模式中的工廠模式,接下來我詳細描述JFactory,JFactory 在/libraries/joomla/factory.php中定義,
$mainframe =& JFactory::getApplication('site');
//取得JApplication 物件,JApplication提供了一些指定物件及一系列的api函數
//application初始化過程,設置語言,
$mainframe->initialise();
//引入system 的外掛
JPluginHelper::importPlugin('system');
// 觸發初始化完畢後定義的pluging回應事件
$mainframe->triggerEvent('onAfterInitialise');
//route()函數,根據url生成進行解析,設置JRequest
$mainframe->route();
// authorization
$Itemid = JRequest::getInt( 'Itemid');
$mainframe->authorize($Itemid);
//觸發route後plugin
JDEBUG ? $_PROFILER->mark('afterRoute') : null;
$mainframe->triggerEvent('onAfterRoute');
//根據JRequest的的option參數,dispatch到那個元件,也就決定頁面的內容部分是那個元件生成
$option = JRequest::getCmd('option');
$mainframe->dispatch($option);
//觸發dispatch後的plugin
JDEBUG ? $_PROFILER->mark('afterDispatch') : null;
$mainframe->triggerEvent('onAfterDispatch');
//頁面的渲染過程,生成整個頁面html
$mainframe->render();
// trigger the onAfterDisplay events
JDEBUG ? $_PROFILER->mark('afterRender') : null;
$mainframe->triggerEvent('onAfterRender');
echo JResponse::toString($mainframe->getCfg('gzip'));
以上是 /index.php的內容,從這個index.php的引出了幾個重要的程式
/includes/defines.php
/includes/framework.php
/libraries/joomla/application.php
/libraries/joomla/factory.php

Joomla 主要目錄結構

├─administrator # 後臺程式部分
├─cache # 用於存放cache,需要保持可寫入
├─components # 元件集
├─images # 圖片資源,上傳的檔都會存放在這裏,所以要保持可寫入
├─language # 語言包目錄,名稱要與components、plugin或module的名稱對應才能生效
│ ├─en-GB
│ └─overrides # 從2.5開始,語言文字可以在後臺重寫,被重寫的語言資訊存在位置
├─libraries # joomla的核心程式庫,需要深入API,可以閱讀裏面的代碼
├─logs # 日誌目錄,要保持可寫入
├─modules # 模組
├─plugins # 外掛
├─templates # 模板
│ ├─atomic # atomic是個典型的網頁模板,適合於初學者
│ │ ├─css # CSS目錄,關於模版的樣式檔都放在這裏
│ │ ├─html # 元件與模組都有默認模板(tmpl目錄),主模板有許可權重寫它們,重寫的模板在這裏
│ │ ├─images
│ │ ├─js
│ │ └─language # 模板在後臺可以擁有配置參數,而參數的語言包會放在這裏
│ │ └─en-GB
│ └─system # 所有template都基於system模板,不要修改它
│ ├─css
│ ├─html
│ └─images
└─tmp # 臨時目錄,需要保持可寫入
configuration.php # 配置檔,裏面含有資料庫與網站設置資訊
.htaccess # 沒有它,在apache就不能實現偽靜態連結
web.config # 沒有它,在IIS7就不能實現偽靜態連結


component目錄結構

├─com_users # user元件,joomla裏非常重要的元件之一
│ │
│ ├─controllers # 控制項器集
│ │
│ ├─helpers # helpers用於存放輔助程式與函數
│ │
│ ├─models # 模型集
│ │ │
│ │ └─forms # Joomla2.5開始,表單可以基於XML來配置,forms是指定配置目錄
│ │
│ └─views # 視圖集
│ │
│ ├─login # 登錄頁面視圖
│ │ │ metadata.xml
│ │ │ view.html.php # 視圖邏輯,作用是model與template的橋樑
│ │ │ view.json.php # 如果URL上有參數format=json,就會使用這個視圖邏輯,如此類推
│ │ │
│ │ └─tmpl # 默認範本,會由視圖引入
│ │ default.php # 其中一個範本
│ │ default.xml # 後臺添加功能表時需要選擇menu type,元件是否出現在menu上靠這檔
│ │ default_login.php # default.php的子範本,由loadTemplate引入
│ │ default_logout.php

最新文章

原創、翻譯及轉貼的資訊都在這裡。

網站是實現夢想的工具! 開始準備建置您的網站了嗎? 加Line好友
益盛科技

我們重視設計質感與行銷價值

。網頁設計。程式設計。Joomla教學。

 

聯絡資訊

ring@des13.com

點此加我們LINE  @igodos 加line好友

406台中市北屯區文心路四段955號11樓之2(需預約諮詢)

04-37072202 /  0919-413187 

thedes13 

 
coupon 1
點此加我們LINE
DMC Firewall is a Joomla Security extension!