it-swarm-es.tech

El menú personalizado obtiene el título del elemento principal del menú activo

Puedo obtener el título del menú activo usando

$menu = &Jsite::getMenu();
$menuname = $menu->getActive()->title;

Pero, ¿cómo puedo acceder al título principal?

7
web-tiki

Prueba este código:

$menu = JFactory::getApplication()->getMenu();
$parent = $menu->getItem( $menu->getActive()->parent_id );
$parentname = $parent->title

Si necesitas el enlace

$parentlink = JRoute::_( $parent->link . '&Itemid=' . $parent->id );
10
me7hos

El método getActive devuelve un objeto con las propiedades del menú activo, incluido parent_id. La clase JMenu tiene un método getItem ($ id), donde $ id es una identificación de menú. Este método devuelve el mismo tipo de objeto que getActive. Entonces, puedes hacer algo como esto:

$menu = JFactory::getApplication()->getMenu();
$parent_id = $menu->getActive()->parent_id;
$parent_title = $menu->getItem($parent_id)->title;
1
csbenjamin

Como puede obtener el menú activo, puede obtener el resto obteniendo el tree. ¡Esto es útil para recorrer la lista de elementos, no solo el padre!

Para que entiendas mejor, estoy dividiendo la respuesta en partes:

1. Cree una variable para el menú activo (por simplicidad y portabilidad):

$menu = &JSite::getMenu();
$active = $menu->getActive();

2. Elija el menú anterior/principal obteniendo el elemento anterior en el árbol:

$parent_item_id = $active->tree[count($active->tree) - 2];

NOTA: el tree es una matriz, y comienza con cero, por eso estoy restando por 2.

3. Finalmente obtenga el título del menú:

$menu->getItem($parent_item_id)->title

Tenga en cuenta que también necesita agregar algunas comprobaciones para ver si hay un menú activo y/u otras comprobaciones de error.

1
jackJoe