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

Joomla系統中模塊運行原理研究

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

陳玉

摘? 要:本文主要研究Joomla系統中模塊的工作原理;文章首先分析模塊的結構,然后依次分析模塊中XML文件的工作機理,接著分析模塊中的入口文件,再接著分析模塊中的helper類文件;最后對模塊的一些特點作了總結。

關鍵詞:Joomla;內容管理系統;Joomla模塊結構;Joomla工作原理

中圖分類號:TP311.5?????????? 文獻標識碼:A

1?? 引言(Introduction)

隨著網絡應用的快速發展,內容管理系統應用而生。相比傳統建站模式,內容管理系統具有許多基于模板的優秀設計,可以加快網站的開發速度及減少開發成本。內容管理系統的基本思想是分離內容的管理和設計,頁面存儲在模板里,而內容存儲在獨立的文件中或數據庫中[1]。

2? 國內外發展概況(Developments at home and

abroad)

國外的內容管理系統有WordPress、Joomla及Drupal等,這些系統應用了非常多的建站新技術,同時每個系統都留有第三方開發接口,可供二次開發,具有較大的靈活性。國內比較有名的內容管理系統,如Discuz、DedeCMS和PHPWind等,這幾種系統的優點是訪問速度快,缺點是系統集成度高,不能完全實現模塊化,不便于二次開發,擴展能力不夠強大。

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

study of modules)

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

模塊的具體文件和文件夾結構見表1。

表1 模塊結構

Tab.1 The structure of modules

文件?描述

tmpl/default.php?布局文件

helper.php?功能文件

mod_users_latest.php?入口文件

mod_users_latest.xml?安裝文件及選項

根據表中模塊里的各類文件,下面進行具體分析。

3.1?? 模塊中的XML文件

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

<;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>;

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

3.2?? 模塊主入口文件

模塊在運行時,需要裝載一個和該模塊文件夾同名的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類中。接下來語句調用getUsers()方法,并將結果存儲到變量$linknames中;在這個方法中利用了一個很重要的$params中間變量,該變量在文件中沒有聲明,到底來自哪里?經過分析后得知結果如此:首先在系統JModuleHelper類的renderModule()方法中,有require $path語句,$path變量中存放模塊入口文件的全名(即mod_users_latest.php);其次在PHP中require命令會將所包含文件“粘貼”般的插入當前文件,由于mod_users_latest.php是一般腳本,不包含類文件,所以require命令包含的文件內容也會被立即執行;最后發現,$params在renderModule()里的早些時候已被定義,所以也就找到了$params變量的出處[2]。endprint

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

3.3?? 模塊中的helper類文件

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

static function getUsers($params)

{

$db=JFactory::getDbo();

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

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

return (array) $result;

}

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

3.4?? 模塊中的默認布局文件

默認布局文件代碼片斷如下:

<;?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循環,該循環是遍歷數組元素比較方便的方法,$name變量是數組中的當前元素;假如數組為空,程序將徹底跳轉循環。同時在代碼中使用echo命令在屬性中插入變量,在插入變量時需要注意空格的重要性,即在latestusers和echo命令返回的變量之間是不能有空格的,否則會出錯。

4?? 結論(Conclusion)

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

參考文獻(References)

[1] 邊霞,等.基于MVC的文件備份后臺管理系統的設計與實現

[J].計算機工程與設計,2011,32:3195-3198.

[2] 胡建強,馬櫻,朱順痣.基于本體的網絡化軟件需求內容管理

系統的研究與實現[J].計算機應用與軟件,2013,30(12):31-34.

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

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

作者簡介:

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

用,信息檢索.endprint

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

3.3?? 模塊中的helper類文件

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

static function getUsers($params)

{

$db=JFactory::getDbo();

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

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

return (array) $result;

}

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

3.4?? 模塊中的默認布局文件

默認布局文件代碼片斷如下:

<;?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循環,該循環是遍歷數組元素比較方便的方法,$name變量是數組中的當前元素;假如數組為空,程序將徹底跳轉循環。同時在代碼中使用echo命令在屬性中插入變量,在插入變量時需要注意空格的重要性,即在latestusers和echo命令返回的變量之間是不能有空格的,否則會出錯。

4?? 結論(Conclusion)

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

參考文獻(References)

[1] 邊霞,等.基于MVC的文件備份后臺管理系統的設計與實現

[J].計算機工程與設計,2011,32:3195-3198.

[2] 胡建強,馬櫻,朱順痣.基于本體的網絡化軟件需求內容管理

系統的研究與實現[J].計算機應用與軟件,2013,30(12):31-34.

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

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

作者簡介:

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

用,信息檢索.endprint

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

3.3?? 模塊中的helper類文件

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

static function getUsers($params)

{

$db=JFactory::getDbo();

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

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

return (array) $result;

}

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

3.4?? 模塊中的默認布局文件

默認布局文件代碼片斷如下:

<;?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循環,該循環是遍歷數組元素比較方便的方法,$name變量是數組中的當前元素;假如數組為空,程序將徹底跳轉循環。同時在代碼中使用echo命令在屬性中插入變量,在插入變量時需要注意空格的重要性,即在latestusers和echo命令返回的變量之間是不能有空格的,否則會出錯。

4?? 結論(Conclusion)

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

參考文獻(References)

[1] 邊霞,等.基于MVC的文件備份后臺管理系統的設計與實現

[J].計算機工程與設計,2011,32:3195-3198.

[2] 胡建強,馬櫻,朱順痣.基于本體的網絡化軟件需求內容管理

系統的研究與實現[J].計算機應用與軟件,2013,30(12):31-34.

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

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

作者簡介:

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

用,信息檢索.endprint

主站蜘蛛池模板: 天天操天天噜| 亚洲无码四虎黄色网站| 一级全黄毛片| 久久精品国产电影| 亚洲国产中文综合专区在| 成人国产精品网站在线看| 免费看一级毛片波多结衣| 中文字幕日韩久久综合影院| 精品少妇人妻av无码久久| 99久久精品国产自免费| 国产日本欧美亚洲精品视| 爆乳熟妇一区二区三区| 亚洲人成色在线观看| 久热re国产手机在线观看| 国产精品无码翘臀在线看纯欲| 国产亚洲精品自在线| 国产乱人乱偷精品视频a人人澡| 久久综合一个色综合网| 国产毛片基地| 日韩欧美国产区| 久久77777| 日韩在线播放中文字幕| 成人国产精品一级毛片天堂| 色综合国产| 久久综合AV免费观看| 91精品啪在线观看国产91| 玩两个丰满老熟女久久网| 热re99久久精品国99热| 91久久夜色精品国产网站| 成人韩免费网站| 六月婷婷精品视频在线观看| 在线观看91香蕉国产免费| 亚洲天堂视频在线免费观看| 久久综合丝袜长腿丝袜| 婷婷久久综合九色综合88| 精品精品国产高清A毛片| 欧美精品成人| 国产乱肥老妇精品视频| 中文字幕在线观看日本| 久久99国产视频| 国产高清色视频免费看的网址| 欧美日韩一区二区在线免费观看 | 五月天丁香婷婷综合久久| 狠狠做深爱婷婷久久一区| 污网站在线观看视频| 99在线观看国产| 粗大猛烈进出高潮视频无码| 中文字幕在线看| 色综合久久无码网| 国产精品欧美亚洲韩国日本不卡| 成年女人a毛片免费视频| 日本在线国产| 最新精品久久精品| 欧美日韩激情在线| 国产流白浆视频| 国产网友愉拍精品| 天堂亚洲网| 久久精品日日躁夜夜躁欧美| 亚洲精品麻豆| 亚洲av色吊丝无码| 亚洲a级毛片| 伊人大杳蕉中文无码| 乱人伦中文视频在线观看免费| 免费看的一级毛片| 999国内精品久久免费视频| 国内丰满少妇猛烈精品播 | 久久青草精品一区二区三区 | 欧美一区二区自偷自拍视频| 成人免费一级片| 国产免费看久久久| 91麻豆久久久| 一本二本三本不卡无码| 成人福利在线视频免费观看| 伊人久久婷婷五月综合97色 | 狠狠操夜夜爽| 亚洲欧洲日产国产无码AV| 精品99在线观看| 国产精品污污在线观看网站| 伊人久久久久久久| 波多野结衣国产精品| 在线观看视频99| 国产真实乱人视频|