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

主站蜘蛛池模板: 2018日日摸夜夜添狠狠躁| 在线中文字幕日韩| 欧美性久久久久| 国产杨幂丝袜av在线播放| 亚洲日本在线免费观看| 日韩a级毛片| 欧美色视频日本| 久久精品只有这里有| 久久国产精品麻豆系列| 亚洲91在线精品| 免费国产在线精品一区| 国产自在自线午夜精品视频| vvvv98国产成人综合青青| 亚洲男女在线| 波多野结衣视频一区二区| 五月天久久婷婷| 国产91透明丝袜美腿在线| 一区二区午夜| 国产视频自拍一区| 免费人成在线观看视频色| a毛片在线| 在线视频亚洲色图| 国产主播在线一区| 亚洲三级电影在线播放| 五月婷婷激情四射| 国产精品欧美亚洲韩国日本不卡| 久久人人97超碰人人澡爱香蕉| 亚洲欧美综合在线观看| 色丁丁毛片在线观看| 国产视频入口| 国产精品免费福利久久播放| 国产一级毛片在线| 国产亚洲精品在天天在线麻豆| 亚洲福利视频一区二区| 色婷婷在线播放| 国内精品小视频福利网址| 国产国产人成免费视频77777| 99热免费在线| 中文字幕乱码二三区免费| 色婷婷在线影院| 色综合成人| 国产精品成人AⅤ在线一二三四| 国产免费一级精品视频| 91精品综合| av大片在线无码免费| 日韩AV手机在线观看蜜芽| 欧美日韩v| 成人小视频在线观看免费| 国产呦精品一区二区三区网站| 日韩欧美国产另类| 青青草国产免费国产| 婷五月综合| 精品久久人人爽人人玩人人妻| 18禁黄无遮挡网站| 亚洲欧美天堂网| 色男人的天堂久久综合| 亚洲成人黄色在线观看| 国产激爽爽爽大片在线观看| 啪啪永久免费av| 高清不卡毛片| 亚洲国产精品一区二区高清无码久久| 香蕉久久永久视频| 欧美一区二区人人喊爽| 亚洲成人精品久久| 色偷偷一区二区三区| 日韩美一区二区| 日韩精品免费一线在线观看| 91午夜福利在线观看精品| 亚洲中文字幕97久久精品少妇| 极品性荡少妇一区二区色欲| 中文字幕66页| 精品人妻无码中字系列| 亚洲熟妇AV日韩熟妇在线| 欧美国产综合视频| 99热这里只有精品免费国产| 第一页亚洲| 人妻无码中文字幕一区二区三区| 欧美不卡视频在线观看| 日韩久久精品无码aV| 免费国产在线精品一区| 国产精品亚洲欧美日韩久久| 久久网欧美|