2011-02-10 72 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');