2011-02-10 75 views
1

我不太瞭解Joomla,但我正嘗試在Joomla網站上使用菜單。在數據庫中,我可以在菜單表中看到一個名爲params的列,它有一些我需要的數據。該PARAMS列有這樣的數據:簡單的方法從Joomla菜單表中獲取「params」

categories=446 
feedLink=1 
fusion_item_subtext= 
fusion_columns=1 
fusion_customimage= 
splitmenu_item_subtext= 
page_title= 
show_page_title=1 
pageclass_sfx= 
menu_image=-1 
secure=0 

我知道我可以做一個MySQL查詢,獲得該列和分析使用字符串操作/正則表達式的值,但這並不聽起來像是正確的方式。

我見過的Joomla一些代碼,看起來像:

$cid = $params->get('secure'); 

的Joomla是否要查詢並返回對象的一種特殊的方式,使這些PARAMS是這種類型的語法的訪問?

回答

2

是的,Joomla確實有特殊的方法來獲取基於JObject的易於訪問的對象中的參數。

就可以得到整個網站的菜單與此

$menu = JFactory::getApplication()->getMenu(); 
$item = $menu->getActive(); // will get active menu item. can use getItem() instead to get specific item 
$item->get('parmName'); 

這是不準確的代碼,更像是僞代碼。這將讓你在正確的軌道上......

有益的東西:

3

正確的方法是使用方法

$app =& JFactory::getApplication(); 
$menu =& $app->getMenu(); 
$params = $menu->getParams($menuItemId); 
$params->get('paramName'); 
+0

的鏈接已被刪除 – 2013-11-11 11:09:56

0

第一你得到一個像這樣的JApplication實例

$app = & JFactory::getApplication(); 

或爲Joomla 1.5用途:

global $mainframe //to get JApplication object 

得到JMenu的情況是這樣的:

$menu = $app->getMenu(); 

你可以得到活動的菜單params中,任何其他菜單PARAMS這樣

$active = $menu->getActive(); //get active menu 
$menuInstance = $menu->getActive($Itemid); // to get Itemid use JRequest::getInt('Itemid', 0); 

這裏你有一個StdClass對象裏面PARAMS場,現在u使用這樣

$menuParams = new JParameter($menuInstance->params); 

在這裏你有它JParameter類,讓任何參數你想:

$someParam = $menuParams->get('some_param', 'default');