999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Joomla系統(tǒng)中模塊運(yùn)行原理研究

2014-12-13 20:10:04陳玉
軟件工程 2014年12期

陳玉

摘? 要:本文主要研究Joomla系統(tǒng)中模塊的工作原理;文章首先分析模塊的結(jié)構(gòu),然后依次分析模塊中XML文件的工作機(jī)理,接著分析模塊中的入口文件,再接著分析模塊中的helper類文件;最后對模塊的一些特點(diǎn)作了總結(jié)。

關(guān)鍵詞:Joomla;內(nèi)容管理系統(tǒng);Joomla模塊結(jié)構(gòu);Joomla工作原理

中圖分類號:TP311.5?????????? 文獻(xiàn)標(biāo)識碼:A

1?? 引言(Introduction)

隨著網(wǎng)絡(luò)應(yīng)用的快速發(fā)展,內(nèi)容管理系統(tǒng)應(yīng)用而生。相比傳統(tǒng)建站模式,內(nèi)容管理系統(tǒng)具有許多基于模板的優(yōu)秀設(shè)計,可以加快網(wǎng)站的開發(fā)速度及減少開發(fā)成本。內(nèi)容管理系統(tǒng)的基本思想是分離內(nèi)容的管理和設(shè)計,頁面存儲在模板里,而內(nèi)容存儲在獨(dú)立的文件中或數(shù)據(jù)庫中[1]。

2? 國內(nèi)外發(fā)展概況(Developments at home and

abroad)

國外的內(nèi)容管理系統(tǒng)有WordPress、Joomla及Drupal等,這些系統(tǒng)應(yīng)用了非常多的建站新技術(shù),同時每個系統(tǒng)都留有第三方開發(fā)接口,可供二次開發(fā),具有較大的靈活性。國內(nèi)比較有名的內(nèi)容管理系統(tǒng),如Discuz、DedeCMS和PHPWind等,這幾種系統(tǒng)的優(yōu)點(diǎn)是訪問速度快,缺點(diǎn)是系統(tǒng)集成度高,不能完全實現(xiàn)模塊化,不便于二次開發(fā),擴(kuò)展能力不夠強(qiáng)大。

3? Joomla系統(tǒng)中模塊具體研究分析(The concrete

study of modules)

本文主要對Joomla系統(tǒng)的模塊進(jìn)行分析研究;在Joomla系統(tǒng)中,模塊的典型特點(diǎn)是簡潔、輕量級的,模塊主要是為用戶提供消息和導(dǎo)航選項。針對具體研究實例,文中以Joomla系統(tǒng)中的最新用戶模塊(Latest user module)進(jìn)行分析研究,最新用戶模塊主要功能是顯示網(wǎng)站新注冊的用戶;同時通過調(diào)節(jié)模塊參數(shù)可以控制顯示的用戶數(shù),也可以顯示用戶相關(guān)介紹及聯(lián)系信息。

模塊的具體文件和文件夾結(jié)構(gòu)見表1。

表1 模塊結(jié)構(gòu)

Tab.1 The structure of modules

文件?描述

tmpl/default.php?布局文件

helper.php?功能文件

mod_users_latest.php?入口文件

mod_users_latest.xml?安裝文件及選項

根據(jù)表中模塊里的各類文件,下面進(jìn)行具體分析。

3.1?? 模塊中的XML文件

模塊里的xml文件主要包括模塊安裝和卸載時所用到的文件及文件夾信息,同時也包括模塊中一些參數(shù)的定義。

<;filename

module="mod_users_latest">;mod_users_latest.php<;/filename>;

<;folder>;tmpl<;/folder>;

<;filename>;helper.php<;/filename>;

<;filename>;index.html<;/filename>;

<;language tag="en- GB">;en- GB.mod_users_latest.ini<;/language>;

<;language tag="en- GB">;en- GB.mod_users_latest.sys.ini<;/language>;

上述代碼主要定義模塊中所用到的相關(guān)文件,而文件夾tmpl下的文件只須定義該文件夾即可;代碼中還定義了兩個語言文件,這兩個語言文件將被安裝到Joomla系統(tǒng)的核心語言文件夾下,而不是安裝到擴(kuò)展語言文件夾下;同時在xml文件中還定義了模塊中參數(shù)的屬性,即三個基本屬性和五個高級屬性,限于篇幅這里在代碼中做了省略[2]。

3.2?? 模塊主入口文件

模塊在運(yùn)行時,需要裝載一個和該模塊文件夾同名的PHP文件,如最新用戶模塊就會裝載modules/mod_users_latest/mod_users_latest.php位置的PHP文件;主入口文件代碼片斷如下:

require_oncedirname(__FILE__).'/helper.php';

$shownumber=$params->;get('shownumber', 5);

$name=moduserslatestHelper::getUsers($params);

$linknames=$params->;get('linknames', 0);

$moduleclass_sfx=htmlspecialchars($params->;

get('moduleclass_sfx'));

requireJModuleHelper::getLayoutPath('mod_users_latest', $params->;get('layout', 'default'));

上述代碼中,require_oncedirname(__FILE__).'/helper.php'語句主要是模塊中需要用到helper類,helper類文件主要是為模塊提供各類方法,模塊的主要處理事宜都集中在helper類中。接下來語句調(diào)用getUsers()方法,并將結(jié)果存儲到變量$linknames中;在這個方法中利用了一個很重要的$params中間變量,該變量在文件中沒有聲明,到底來自哪里?經(jīng)過分析后得知結(jié)果如此:首先在系統(tǒng)JModuleHelper類的renderModule()方法中,有require $path語句,$path變量中存放模塊入口文件的全名(即mod_users_latest.php);其次在PHP中require命令會將所包含文件“粘貼”般的插入當(dāng)前文件,由于mod_users_latest.php是一般腳本,不包含類文件,所以require命令包含的文件內(nèi)容也會被立即執(zhí)行;最后發(fā)現(xiàn),$params在renderModule()里的早些時候已被定義,所以也就找到了$params變量的出處[2]。endprint

再回到上述代碼片斷的$linknames變量,該變量是在執(zhí)行模塊布局的時候用到。下面語句行是取得模塊類后綴選項,模塊類后綴允許開發(fā)者微調(diào)模塊中的CSS文件。最后一行語句是從模塊的參數(shù)中取得布局選項。在上述代碼開始,也可以用Joomla自帶的方法JLoader::register()代替require_once,從而取得更快的執(zhí)行速度。

3.3?? 模塊中的helper類文件

helper類是模塊信息的來源,如下是類中g(shù)etUsers()方法的代碼片斷:

static function getUsers($params)

{

$db=JFactory::getDbo();

$query=$db->;getQuery(true);

$result=$db->;loadObjectList();

return (array) $result;

}

上述代碼中將方法聲明為靜態(tài),這樣可以通過類名調(diào)用。代碼首行定義JDatabase對象$db,在Joomla中可以通過JDatabase對象提取數(shù)據(jù)庫中的數(shù)據(jù),接下來的語句是定義JDatabaseQuery查詢對象,loadObjectList()以數(shù)組形式將各行返回。此外,JDatabaseQuery基本上是SQL聲明形式的一個鏡像,不同于SQL聲明,JDatabaseQuery可以以我們想要的任何順序來書寫,而SQL聲明則必須以正確的順序來書寫。JDatabaseQuery可以很好的支持Microsoft SQL Server和MySQL數(shù)據(jù)庫;當(dāng)使用JDatabaseQuery建立所有的數(shù)據(jù)查詢時,查詢都會在這些數(shù)據(jù)庫中完美運(yùn)行;這些功能主要得益于在各種數(shù)據(jù)庫使用SQL命令時,系統(tǒng)的查詢類具有很好的差異適應(yīng)能力。

3.4?? 模塊中的默認(rèn)布局文件

默認(rèn)布局文件代碼片斷如下:

<;?php if (!empty($names)) : ?>;<;ul class="latestusers<;?php echo $moduleclass_sfx ?>;" >;

<;?phpforeach($names as $name) : ?>;

<;li>;<;?php echo $name->;username; ?>;<;/li>;<;?phpendforeach; ?>;<;/ul>;<;?phpendif; ?>;

代碼片斷中if聲明使用了替換性PHP語法,這種用法一般使用在PHP和HTML混合的布局文件中;在這里if聲明主要來判斷$names是否為空,這樣可以避免在頁面上輸出空元素。

上述代碼中用到了$names變量,$names來自于mod_users_latest.php文件中的$names=moduserslatestHelper::getUsers($params)語句。接下來的部分用到了foreach循環(huán),該循環(huán)是遍歷數(shù)組元素比較方便的方法,$name變量是數(shù)組中的當(dāng)前元素;假如數(shù)組為空,程序?qū)氐滋D(zhuǎn)循環(huán)。同時在代碼中使用echo命令在屬性中插入變量,在插入變量時需要注意空格的重要性,即在latestusers和echo命令返回的變量之間是不能有空格的,否則會出錯。

4?? 結(jié)論(Conclusion)

最后再對上述各部分做一下總結(jié)。首先,模塊和Joomla站點(diǎn)的其余部分是無縫接合的;其次,模塊完全支持多種語言,模塊將根據(jù)所建立的兩個相應(yīng)語言文件自動進(jìn)行顯示;第三,模塊支持替換式布局和模板布局覆蓋,通過使用getLayoutPath()方法來獲得布局文件;第四,模塊允許用戶輸入各類參數(shù)選項來控制模塊的運(yùn)行[3];第五,模塊可以安全防護(hù)各類SQL注入和其他站點(diǎn)攻擊行為;最后,模塊可以做到很好的安裝和卸載,更方便站點(diǎn)的維護(hù)。

參考文獻(xiàn)(References)

[1] 邊霞,等.基于MVC的文件備份后臺管理系統(tǒng)的設(shè)計與實現(xiàn)

[J].計算機(jī)工程與設(shè)計,2011,32:3195-3198.

[2] 胡建強(qiáng),馬櫻,朱順痣.基于本體的網(wǎng)絡(luò)化軟件需求內(nèi)容管理

系統(tǒng)的研究與實現(xiàn)[J].計算機(jī)應(yīng)用與軟件,2013,30(12):31-34.

[3] 盛安元,黃存東,張前進(jìn).基于開源軟件Drupal工程實踐[J].武

漢工業(yè)學(xué)院學(xué)報,2013,31(2):65-67.

作者簡介:

陳? 玉(1975-),男,碩士,中級實驗師.研究領(lǐng)域:計算機(jī)應(yīng)

用,信息檢索.endprint

再回到上述代碼片斷的$linknames變量,該變量是在執(zhí)行模塊布局的時候用到。下面語句行是取得模塊類后綴選項,模塊類后綴允許開發(fā)者微調(diào)模塊中的CSS文件。最后一行語句是從模塊的參數(shù)中取得布局選項。在上述代碼開始,也可以用Joomla自帶的方法JLoader::register()代替require_once,從而取得更快的執(zhí)行速度。

3.3?? 模塊中的helper類文件

helper類是模塊信息的來源,如下是類中g(shù)etUsers()方法的代碼片斷:

static function getUsers($params)

{

$db=JFactory::getDbo();

$query=$db->;getQuery(true);

$result=$db->;loadObjectList();

return (array) $result;

}

上述代碼中將方法聲明為靜態(tài),這樣可以通過類名調(diào)用。代碼首行定義JDatabase對象$db,在Joomla中可以通過JDatabase對象提取數(shù)據(jù)庫中的數(shù)據(jù),接下來的語句是定義JDatabaseQuery查詢對象,loadObjectList()以數(shù)組形式將各行返回。此外,JDatabaseQuery基本上是SQL聲明形式的一個鏡像,不同于SQL聲明,JDatabaseQuery可以以我們想要的任何順序來書寫,而SQL聲明則必須以正確的順序來書寫。JDatabaseQuery可以很好的支持Microsoft SQL Server和MySQL數(shù)據(jù)庫;當(dāng)使用JDatabaseQuery建立所有的數(shù)據(jù)查詢時,查詢都會在這些數(shù)據(jù)庫中完美運(yùn)行;這些功能主要得益于在各種數(shù)據(jù)庫使用SQL命令時,系統(tǒng)的查詢類具有很好的差異適應(yīng)能力。

3.4?? 模塊中的默認(rèn)布局文件

默認(rèn)布局文件代碼片斷如下:

<;?php if (!empty($names)) : ?>;<;ul class="latestusers<;?php echo $moduleclass_sfx ?>;" >;

<;?phpforeach($names as $name) : ?>;

<;li>;<;?php echo $name->;username; ?>;<;/li>;<;?phpendforeach; ?>;<;/ul>;<;?phpendif; ?>;

代碼片斷中if聲明使用了替換性PHP語法,這種用法一般使用在PHP和HTML混合的布局文件中;在這里if聲明主要來判斷$names是否為空,這樣可以避免在頁面上輸出空元素。

上述代碼中用到了$names變量,$names來自于mod_users_latest.php文件中的$names=moduserslatestHelper::getUsers($params)語句。接下來的部分用到了foreach循環(huán),該循環(huán)是遍歷數(shù)組元素比較方便的方法,$name變量是數(shù)組中的當(dāng)前元素;假如數(shù)組為空,程序?qū)氐滋D(zhuǎn)循環(huán)。同時在代碼中使用echo命令在屬性中插入變量,在插入變量時需要注意空格的重要性,即在latestusers和echo命令返回的變量之間是不能有空格的,否則會出錯。

4?? 結(jié)論(Conclusion)

最后再對上述各部分做一下總結(jié)。首先,模塊和Joomla站點(diǎn)的其余部分是無縫接合的;其次,模塊完全支持多種語言,模塊將根據(jù)所建立的兩個相應(yīng)語言文件自動進(jìn)行顯示;第三,模塊支持替換式布局和模板布局覆蓋,通過使用getLayoutPath()方法來獲得布局文件;第四,模塊允許用戶輸入各類參數(shù)選項來控制模塊的運(yùn)行[3];第五,模塊可以安全防護(hù)各類SQL注入和其他站點(diǎn)攻擊行為;最后,模塊可以做到很好的安裝和卸載,更方便站點(diǎn)的維護(hù)。

參考文獻(xiàn)(References)

[1] 邊霞,等.基于MVC的文件備份后臺管理系統(tǒng)的設(shè)計與實現(xiàn)

[J].計算機(jī)工程與設(shè)計,2011,32:3195-3198.

[2] 胡建強(qiáng),馬櫻,朱順痣.基于本體的網(wǎng)絡(luò)化軟件需求內(nèi)容管理

系統(tǒng)的研究與實現(xiàn)[J].計算機(jī)應(yīng)用與軟件,2013,30(12):31-34.

[3] 盛安元,黃存東,張前進(jìn).基于開源軟件Drupal工程實踐[J].武

漢工業(yè)學(xué)院學(xué)報,2013,31(2):65-67.

作者簡介:

陳? 玉(1975-),男,碩士,中級實驗師.研究領(lǐng)域:計算機(jī)應(yīng)

用,信息檢索.endprint

再回到上述代碼片斷的$linknames變量,該變量是在執(zhí)行模塊布局的時候用到。下面語句行是取得模塊類后綴選項,模塊類后綴允許開發(fā)者微調(diào)模塊中的CSS文件。最后一行語句是從模塊的參數(shù)中取得布局選項。在上述代碼開始,也可以用Joomla自帶的方法JLoader::register()代替require_once,從而取得更快的執(zhí)行速度。

3.3?? 模塊中的helper類文件

helper類是模塊信息的來源,如下是類中g(shù)etUsers()方法的代碼片斷:

static function getUsers($params)

{

$db=JFactory::getDbo();

$query=$db->;getQuery(true);

$result=$db->;loadObjectList();

return (array) $result;

}

上述代碼中將方法聲明為靜態(tài),這樣可以通過類名調(diào)用。代碼首行定義JDatabase對象$db,在Joomla中可以通過JDatabase對象提取數(shù)據(jù)庫中的數(shù)據(jù),接下來的語句是定義JDatabaseQuery查詢對象,loadObjectList()以數(shù)組形式將各行返回。此外,JDatabaseQuery基本上是SQL聲明形式的一個鏡像,不同于SQL聲明,JDatabaseQuery可以以我們想要的任何順序來書寫,而SQL聲明則必須以正確的順序來書寫。JDatabaseQuery可以很好的支持Microsoft SQL Server和MySQL數(shù)據(jù)庫;當(dāng)使用JDatabaseQuery建立所有的數(shù)據(jù)查詢時,查詢都會在這些數(shù)據(jù)庫中完美運(yùn)行;這些功能主要得益于在各種數(shù)據(jù)庫使用SQL命令時,系統(tǒng)的查詢類具有很好的差異適應(yīng)能力。

3.4?? 模塊中的默認(rèn)布局文件

默認(rèn)布局文件代碼片斷如下:

<;?php if (!empty($names)) : ?>;<;ul class="latestusers<;?php echo $moduleclass_sfx ?>;" >;

<;?phpforeach($names as $name) : ?>;

<;li>;<;?php echo $name->;username; ?>;<;/li>;<;?phpendforeach; ?>;<;/ul>;<;?phpendif; ?>;

代碼片斷中if聲明使用了替換性PHP語法,這種用法一般使用在PHP和HTML混合的布局文件中;在這里if聲明主要來判斷$names是否為空,這樣可以避免在頁面上輸出空元素。

上述代碼中用到了$names變量,$names來自于mod_users_latest.php文件中的$names=moduserslatestHelper::getUsers($params)語句。接下來的部分用到了foreach循環(huán),該循環(huán)是遍歷數(shù)組元素比較方便的方法,$name變量是數(shù)組中的當(dāng)前元素;假如數(shù)組為空,程序?qū)氐滋D(zhuǎn)循環(huán)。同時在代碼中使用echo命令在屬性中插入變量,在插入變量時需要注意空格的重要性,即在latestusers和echo命令返回的變量之間是不能有空格的,否則會出錯。

4?? 結(jié)論(Conclusion)

最后再對上述各部分做一下總結(jié)。首先,模塊和Joomla站點(diǎn)的其余部分是無縫接合的;其次,模塊完全支持多種語言,模塊將根據(jù)所建立的兩個相應(yīng)語言文件自動進(jìn)行顯示;第三,模塊支持替換式布局和模板布局覆蓋,通過使用getLayoutPath()方法來獲得布局文件;第四,模塊允許用戶輸入各類參數(shù)選項來控制模塊的運(yùn)行[3];第五,模塊可以安全防護(hù)各類SQL注入和其他站點(diǎn)攻擊行為;最后,模塊可以做到很好的安裝和卸載,更方便站點(diǎn)的維護(hù)。

參考文獻(xiàn)(References)

[1] 邊霞,等.基于MVC的文件備份后臺管理系統(tǒng)的設(shè)計與實現(xiàn)

[J].計算機(jī)工程與設(shè)計,2011,32:3195-3198.

[2] 胡建強(qiáng),馬櫻,朱順痣.基于本體的網(wǎng)絡(luò)化軟件需求內(nèi)容管理

系統(tǒng)的研究與實現(xiàn)[J].計算機(jī)應(yīng)用與軟件,2013,30(12):31-34.

[3] 盛安元,黃存東,張前進(jìn).基于開源軟件Drupal工程實踐[J].武

漢工業(yè)學(xué)院學(xué)報,2013,31(2):65-67.

作者簡介:

陳? 玉(1975-),男,碩士,中級實驗師.研究領(lǐng)域:計算機(jī)應(yīng)

用,信息檢索.endprint

主站蜘蛛池模板: 免费三A级毛片视频| 久久久久国产精品熟女影院| 亚洲国产成人麻豆精品| 老司机久久99久久精品播放| 亚洲成人高清在线观看| 国产成人在线无码免费视频| 999国产精品永久免费视频精品久久| 亚洲第一色视频| 国产欧美日韩专区发布| 午夜毛片免费看| 2021国产在线视频| 一级成人a做片免费| 日本亚洲最大的色成网站www| 91亚瑟视频| 伊人色在线视频| 老司机精品一区在线视频| 亚洲一级毛片在线观播放| 成人午夜视频网站| 99999久久久久久亚洲| 国产欧美在线视频免费| 久久综合结合久久狠狠狠97色| 国产精品粉嫩| 久久精品亚洲热综合一区二区| 免费一级毛片在线观看| 日韩无码视频播放| 丁香五月婷婷激情基地| 日本人妻一区二区三区不卡影院| 无码日韩人妻精品久久蜜桃| 国产经典免费播放视频| 欧美特黄一级大黄录像| 国产中文一区a级毛片视频| 久草中文网| 亚洲精品无码成人片在线观看| 亚洲免费黄色网| 午夜不卡视频| 亚洲国产高清精品线久久| 成人韩免费网站| 怡红院美国分院一区二区| 人与鲁专区| 无码一区二区波多野结衣播放搜索| 亚洲一道AV无码午夜福利| 欧美自慰一级看片免费| 国产午夜在线观看视频| 久久人搡人人玩人妻精品一| 狠狠亚洲婷婷综合色香| 国产全黄a一级毛片| 中文精品久久久久国产网址| 刘亦菲一区二区在线观看| 毛片久久久| 狠狠色狠狠色综合久久第一次| 999国内精品久久免费视频| 99视频免费观看| 国内精品视频在线| 国产精品免费入口视频| 中国黄色一级视频| 少妇极品熟妇人妻专区视频| WWW丫丫国产成人精品| 国产99视频精品免费视频7| 国产女主播一区| 亚洲最新在线| 午夜啪啪网| 五月激情综合网| 免费a级毛片视频| 国产欧美日韩视频一区二区三区| 亚洲天堂日本| 福利在线不卡一区| 99在线国产| 精品国产欧美精品v| 91视频青青草| 欧美日韩国产在线播放| 国产精品专区第一页在线观看| 亚洲成人黄色在线| 国产电话自拍伊人| 国产真实乱人视频| 中文字幕人妻无码系列第三区| 精品人妻无码中字系列| 国产精品免费电影| 亚洲成人播放| 亚洲天堂久久久| 日本午夜网站| 好吊妞欧美视频免费| 久久青草热|