Простой способ получить "params" из таблицы меню Joomla - PullRequest
1 голос
/ 10 февраля 2011

Я не слишком много знаю о Joomla, но я пытаюсь работать с Menu на сайте Joomla. В базе данных я вижу столбец с именем params в таблице меню, и в нем есть некоторые данные, которые мне нужны. Столбец 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 особый способ запрашивать и возвращать объекты, чтобы эти параметры были доступны с синтаксисом этого типа?

Ответы [ 3 ]

3 голосов
/ 12 января 2013

Правильный путь - использовать JMenu :: getParams метод

$app =& JFactory::getApplication();
$menu =& $app->getMenu();
$params = $menu->getParams($menuItemId);
$params->get('paramName');
2 голосов
/ 11 февраля 2011

Да, у 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'); 

Это не точный код, скорее псевдокод. Это приведет вас на правильный путь ...

Полезные материалы:

0 голосов
/ 14 апреля 2016

сначала вы получите экземпляр JApplication, подобный этому

$app = & JFactory::getApplication();

или для использования в Joomla 1.5:

global $mainframe //to get JApplication object

получите экземпляр JMenu следующим образом:

$menu = $app->getMenu();

Вы можете получить активные параметры меню или любые другие параметры меню, подобные этому

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

здесь у вас есть объект StdClass с полем params внутри, теперь вы можете использовать класс JParameter, подобный этому

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

здесьу вас есть, чтобы получить любой параметр, который вы хотите:

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