Получение параметров меню из Joomla - PullRequest
5 голосов
/ 11 февраля 2011

Я пытаюсь получить параметры из таблицы меню в Joomla. То, что я имею ниже, работает в том смысле, что оно возвращает параметры.

 $menu =   &JSite::getMenu();
 $item =  $menu->getItem($menuId)->params;
 print $items;

Однако, он возвращает их в виде простого текста, как будто я только что запросил столбец и возвратил содержимое параметров.

Может кто-нибудь сказать мне, как вернуть это как объект или массив, чтобы я мог использовать что-то вроде:

$myParam = $item->getParams('theParamIwant');

Ответы [ 7 ]

12 голосов
/ 14 февраля 2014

Я думаю, что JParameter устарел в Joomla! 3.x, так что ответ теперь примерно такой:

 $app = JFactory::getApplication();
 $menuitem   = $app->getMenu()->getActive(); // get the active item
 $menuitem   = $app->getMenu()->getItem($theid); // or get item by ID
 $params = $menuitem->params; // get the params
 print_r($params); // print all params as overview

Вы можете получить переменную menu_image, выполнив:

 echo $params->get('menu_image');

Или сначала проверьте, заполнено ли оно, и если оно есть, echo оно:

// using get() with a second parameter makes it fall back to this if nothing is found
$menu_image = $params->get('menu_image', false);
if ($menu_image && strlen($menu_image) {
   echo "<img src='$menu_image'/>";
}

Или, используя оператор tertiary:

$menuimg = $params->get('menu_image')
echo strlen($menuimg) ? "<img src='$menuimg'/>" : '';
8 голосов
/ 11 февраля 2011

Вам нужно использовать класс JParameter, чтобы прочитать параметры.Попробуйте что-то вроде этого:

$item = $menu->getItem($menuId);
$params = new JParameter($item->params);
$myParam = $params->get('theParamIwant');
2 голосов
/ 04 января 2012

не работает

Попробуйте использовать это:

$params = $menus->getParams($menuId);
$myParam = $params->get('theParamIwant');
0 голосов
/ 15 апреля 2016

Работает в 3.5.1

$app = JFactory::getApplication();
$currentMenuId = JSite::getMenu()->getActive()->id;
$menuitem   = $app->getMenu()->getItem($currentMenuId);
$params = $menuitem->params;
echo $params['menu_image'];

Показывает изображение пункта меню

0 голосов
/ 04 сентября 2014
 ($currentMenuId = JSite::getMenu()->getActive()->id ; // `enter code here`
    $document =& JFactory::getDocument(); // `enter code here`
    $app = JFactory::getApplication(); // `enter code here`
    $menuitem   = $app->getMenu()->getItem($currentMenuId); // or get item by ID `enter code here`
    $params = $menuitem->params; // get the params `enter code here`
    $params->get('menu-meta_keywords');
    if($document->description == '') // 116 is the ID number of the menu pointing to the component `enter code here`
    {
    $this->setMetaData( 'description', $params->get('menu-meta_description') );
    $this->setMetaData( 'keywords', $params->get('menu-meta_keywords') );
    }
    else
    {
    // do nothing
    })
0 голосов
/ 07 мая 2014
$app = JFactory::getApplication();
$params = $app->getParams();
$yourParameter = $params->get('YOURPARAMETERNAME');
0 голосов
/ 23 июля 2013

JParameter устарел в Joomla 2.5, поэтому, чтобы заставить работать код Кевина, добавьте

jimport( 'joomla.html.parameter' ) до того, как

jimport( 'joomla.html.parameter' );
$item = $menu->getItem($menuId);
$params = new JParameter($item->params);
$myParam = $params->get('theParamIwant');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...