web-dev-qa-db-fra.com

Comment obtenir le titre réel d'un objet de type de menu?

La classe SiteMenu ne fournit aucune méthode pour extraire la colonne du titre du menu de la table * _menu_types. Toutefois, ce champ est modifiable dans la section admin (section com_menus, champ 'title').

Existe-t-il un autre moyen que d'interroger la base de données pour extraire ce champ (tel qu'il est codé dans cpanel)?

Si non, quelqu'un a-t-il un exemple de code avec une requête de base de données?

Merci !

2
Cédric Françoys

Vous pouvez obtenir l'alias de l'élément de menu actuel comme suit:

$alias  = JFactory::getApplication()->getMenu()->getActive()->alias;

Mise à jour:

$active = JFactory::getApplication()->getMenu()->getActive();
var_dump($active);

ou

//(int)$id - the actual itemid you want to get;  

$specificMenuItem = JFactory::getApplication()->getMenu()->getItem($id);
var_dump($specificMenuItem);

Voir: API JMen

2
FFrewin

Juste au cas où cela pourrait aider quelqu'un, voici comment je l'ai réalisé:

$menu = $app->getMenu();
$active_item = $menu->getActive();

$loader = function ($menu_type) {
    $db = \JFactory::getDbo();
    $result = null;
    $query = $db->getQuery(true)
        ->select('m.id, m.menutype, m.title, m.description')
        ->where("m.menutype = '{$menu_type}'")
        ->from('#__menu_types AS m');
    $db->setQuery($query);
    $list = $db->loadObjectList();
    if(count($list)) $result = array_shift($list);
    return $result;
};

$menu = $loader($active_item->menutype);
$menu_title = $menu->title;
1
Cédric Françoys