[OK]¿Cómo hacer menús dependientes de otros menús?

Para cualquier duda sobre Joomla! 1.5 que no tenga cabida en alguno de los foros de más abajo.
Locked
kikeluke
Joomla! Apprentice
Joomla! Apprentice
Posts: 41
Joined: Tue Sep 13, 2005 11:47 am

[OK]¿Cómo hacer menús dependientes de otros menús?

Post by kikeluke » Wed Nov 23, 2005 8:48 am

Saludos,

He estado intentando sin éxito hacer una relación jerárquica entre varios menús. Es decir, que cuando entre en una sección del menú principal se quede marcado el botón correspondiente y que se pueda navegar con un segundo menú sin que se desmarque el primero, y ya la guindilla del pastel sería que pueda mantener tb activo el botón de la subsección seleccionada en el segundo menú.

Quizás es un poco lioso, buscaré alguna web que me sirva de ejemplo.

Kike
Last edited by carcam on Thu Jan 19, 2012 9:09 am, edited 1 time in total.
Reason: Tema marcado como solucionado.

quiquedcode
Joomla! Ace
Joomla! Ace
Posts: 1378
Joined: Thu Aug 18, 2005 10:11 pm
Location: San Juan - Argentina
Contact:

Re: ¿Cómo hacer menús dependientes de otros menús?

Post by quiquedcode » Wed Nov 23, 2005 4:44 pm

algo como
http://www.kidneystones.be ?

Creo tener algo para hacer eso

Saludos tocayo, bienvenido al foro
@kabeza
Freelance Joomla/CodeIgniter Developer
Home: http://www.beza.com.ar

kikeluke
Joomla! Apprentice
Joomla! Apprentice
Posts: 41
Joined: Tue Sep 13, 2005 11:47 am

Re: ¿Cómo hacer menús dependientes de otros menús?

Post by kikeluke » Wed Nov 23, 2005 5:47 pm

Hola tocayo!

Gracias por la bienvenida  :D

Vi la web que colocaste, y bueno, no decía exactamente eso, sino más bien algo como:
http://www.mambofy.com/nov05/index.php? ... e&Itemid=1

Si seleccionas por ejemplo NEWS se coloca un menú a la izquierda con un encabezado: NEWS MENU (ignoro si son subopciones del menú principal o un menú independiente que de alguna manera se emparenta al menú principal), hasta ahí bien, lo interesante es que ahora si seleccionas JOOMLA LICENSE sigue activado el botón: NEWS del menú principal y no sólo eso, también aloja un submenú, ya que ahora se puede ver la opción WRAPPER un nivel por debajo.

El caso es que puedes navegar libremente dentro de las opciones de ese menú interno (ver las noticias, etc) y en todo momento sigue activa la sección a la que pertenece.

Bueno, creo que ya se entiende.

Saludos!
Kike
Last edited by kikeluke on Wed Nov 23, 2005 5:52 pm, edited 1 time in total.

ulises
Joomla! Apprentice
Joomla! Apprentice
Posts: 31
Joined: Fri Oct 21, 2005 4:51 am
Location: Bariloche
Contact:

Re: ¿Cómo hacer menús dependientes de otros menús?

Post by ulises » Wed Nov 23, 2005 9:43 pm

Probá con hacer un menu con el Top Menú como el que aparece en la página que mencionas, y bueno a traves de las hojas de estilo te fijas la opcion active_menu-nav (o la la propiedad que aparezca como id en el link en el código fuente) y le das el color que desees.

Bueno despues haces los otros menúes y a traves de la ubicación de su módulo (de los menúes) seleccionas los links del Top Menú para que te aparezca junto con el mismo

Saludos
Diseño y promoción de sitios web: http://www.desarrollodeweb.com.ar
Ranking de sitios Joomla!: http://www.ranking.joomlaos.net

kikeluke
Joomla! Apprentice
Joomla! Apprentice
Posts: 41
Joined: Tue Sep 13, 2005 11:47 am

Re: ¿Cómo hacer menús dependientes de otros menús?

Post by kikeluke » Thu Nov 24, 2005 8:03 am

Había probado de esa forma, efectivamente puedo mostrar un menú distinto para cada opción que elija del Top menú, el problema es que al navegar en ese nuevo menú se desactiva el botón seleccionado en principal..

Quizás es necesario un componente que separe las subopciones de un menú para mostrarlo en un módulo diferente.

Saludos,

Kike

User avatar
sinpat
Joomla! Intern
Joomla! Intern
Posts: 81
Joined: Thu Aug 25, 2005 12:13 pm
Location: Valladolid

Re: ¿Cómo hacer menús dependientes de otros menús?

Post by sinpat » Tue Nov 29, 2005 10:39 am

Para hacer lo que quieres lo puedes hacer de la siguiente manera:

1.- Modificar el codigo del archivo mod_mainmenu.php para que cuando el menu lo pongas horizontal marque la opcion activa, y en el modulo marcarle la opcion activate parent a yes

reemplazar

Code: Select all

function mosGetMenuLink( $mitem, $level=0, &$params, $open=null ) {
	global $Itemid, $mosConfig_live_site, $mainframe;
por

Code: Select all

function mosGetMenuLink( $mitem, $level=0, &$params , $open=null) {
        global $database,$Itemid, $mosConfig_live_site, $mainframe;

reemplazar

Code: Select all

// Active Menu highlighting
   $current_itemid = $Itemid;
    if ( !$current_itemid ) {
            $id = '';
        } else if ( $current_itemid == $mitem->id ) {
            $id = 'id="active_menu'. $params->get( 'class_sfx' ) .'"';
        } else {
            $id = '';
        } 

por

Code: Select all

// Active Menu highlighting
$current_itemid = $Itemid;
$query="SELECT id FROM #__menu WHERE parent=".$mitem->id."";
$database->setQuery($query);
$eltern=$database->LoadObjectlist();
if ( !$current_itemid ) {
	$id = '';
} else if ( $current_itemid == $mitem->id ) {
	$id = 'id="active_menu'. $params->get( 'class_sfx' ) .'"';
} else if ($eltern) {
	foreach ($eltern as $kind) {
		
		if ($current_itemid == $kind->id) {
			$id = 'id="active_menu'. $params->get( 'class_sfx' ) .'"';	
					/* ^^hier kann man auch für 'active_menu' beispielsweise 
					'active_menu_1_elternlevel' definieren, um das Eltern-Menüelement zu definieren*/
		}
		$query="SELECT id FROM #__menu WHERE parent=".$kind->id."";
			$database->setQuery($query);
			$grandparents=$database->LoadObjectlist();	
				foreach ($grandparents as $grandchild) {
					if ($current_itemid == $grandchild->id) {
					$id = 'id="active_menu'. $params->get( 'class_sfx' ) .'"';	
				/* ^^hier kann man auch für 'active_menu' beispielsweise 
					'active_menu_2_elternlevel' definieren, um das Eltern-Menüelement 2. Grades, also das 
					zwei über der aktuellen Ebene zu definieren */		
					}
				}
	}
} else {
	$id = '';
}
2.- Usar un modulo que te muestre los submenus, para ello podemos usar el modulo children submenu que puedes encontrar aqui


3.- Si quieres que tambien en el submenu se quede marcada la opcion en la que estas tendras que modificar el codigo, te paso el codigo como lo he dejado yo

codigo del mod_children_submenu.php modificado por mi

Code: Select all

<?php
/**
* Name: Show SubMenu Children
* Version: 1.0
* Author: Mike Teigen
* CreationDate: 21/09/2005
* This module is released under the GNU/GPL License
*/
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );

$menuclass = $params->get( 'class_sfx' );

$sql = "SELECT id FROM #__menu "
	. "\nWHERE parent='$Itemid'";
		
$database->setQuery( $sql );
		
$rows1 = $database->loadResult();
		
if($rows1){
	$parent1 = $Itemid;
}
else {
	$sql = "SELECT parent FROM #__menu "
		. "\nWHERE id='$Itemid'";
		
	$database->setQuery( $sql );
	
	$rows1 = $database->loadResult();
	$parent1 = $rows1;
}
		
$sql = "SELECT name FROM #__menu "
	. "\nWHERE id='$parent1'";
		
$database->setQuery( $sql );
		
$rows1 = $database->loadResult();
if(!$rows1){
	$parent1 = "0";
	$menuname = "Main Menu";
} else {
	$menuname = $rows1;
}
		
$sql = "SELECT m.* FROM #__menu AS m"
	. "\nWHERE published=1 AND parent='$parent1' AND menutype='mainmenu'"
	. "\nORDER BY ordering";

$database->setQuery( $sql );

$rows = $database->loadObjectList( 'id' );
foreach ($rows as $p ) {
	$content = vert_submenu_list( $rows , $menuclass, $menuname );
	//echo "z";
}

function vert_submenu_list( $data , $class, $menuname ) {
global $Itemid;

/*$html = "<table><tr>
	<th valign=\"top\">$menuname Menu</th>
	</tr>";*/
$html = "<h3>$menuname Menu</h3><table border='0' cellpadding='0' cellspacing='0' width='100%'>";
foreach ($data as $v ) {
	if ($v->type != 'url') {
			$v->link .= "&Itemid=$v->id";
		}
		//echo "$v->name";
		$theLink = str_replace('&', '##########', $v->link);
		$theLink = str_replace('&', '&', $theLink);
		$theLink = str_replace('##########', '&', $theLink);
		$theLink = sefRelToAbs($theLink);
		
		
		$current_itemid = $Itemid;
		if ( !$current_itemid ) 
		{
			$id = '';
		}
		else if ( $current_itemid == $v->id )
		{
			$id = 'id="active_menu"';
		} 
		else 
		{
			$id = '';
		}
		
		
		$html = $html . "\n<tr align=\"left\"><td><a href=\"$theLink\" $id class=\"sublevel" . "$class\">$v->name</a></td></tr>";
	}
	$html = $html . "</table>";
	return $html;
}



?>

En principio con todo esto deberias poder hacer lo que quieres por que yo lo he conseguido hacer.

Saludos.
Last edited by sinpat on Tue Nov 29, 2005 10:50 am, edited 1 time in total.
"Nunca te acostaras sin haberte levantado"
Que frio que hace por Valladolid

kikeluke
Joomla! Apprentice
Joomla! Apprentice
Posts: 41
Joined: Tue Sep 13, 2005 11:47 am

Re: ¿Cómo hacer menús dependientes de otros menús?

Post by kikeluke » Tue Nov 29, 2005 10:59 am

Lo probaré!

GRACIAS SINPAT, parece más complejo de lo que había imaginado.
Pienso que podrías proponer esos cambios tanto a los creadores del módulo como a los desarrolladores de Joomla! considero que es una aportación importante en cuanto a navegación y accesibilidad.

:D

Kikeluke

User avatar
sinpat
Joomla! Intern
Joomla! Intern
Posts: 81
Joined: Thu Aug 25, 2005 12:13 pm
Location: Valladolid

Re: ¿Cómo hacer menús dependientes de otros menús?

Post by sinpat » Tue Nov 29, 2005 11:18 am

de nada.
las modificaciones del mod_mainmenu no son mias, las he sacado de una pagina alemana, y en el tracker de joomla ya habian puesto algo tambien sobre eso
concretamente aqui
http://developer.joomla.org/sf/sfmain/d ... b=comments

asique supongo que ya estaran en ello
"Nunca te acostaras sin haberte levantado"
Que frio que hace por Valladolid

kikeluke
Joomla! Apprentice
Joomla! Apprentice
Posts: 41
Joined: Tue Sep 13, 2005 11:47 am

Re: ¿Cómo hacer menús dependientes de otros menús?

Post by kikeluke » Wed Nov 30, 2005 5:46 pm

Muy bien!
Funciona a la perfección.

Kike

User avatar
sinpat
Joomla! Intern
Joomla! Intern
Posts: 81
Joined: Thu Aug 25, 2005 12:13 pm
Location: Valladolid

Re: ¿Cómo hacer menús dependientes de otros menús?

Post by sinpat » Thu Dec 01, 2005 7:58 am

me alegro que te haya servido.

saludos.
"Nunca te acostaras sin haberte levantado"
Que frio que hace por Valladolid

nkred
Joomla! Fledgling
Joomla! Fledgling
Posts: 1
Joined: Wed Jan 18, 2012 9:05 am

Re: ¿Cómo hacer menús dependientes de otros menús?

Post by nkred » Wed Jan 18, 2012 9:11 am

Yo por fin lo he solucionado en Joomla 1.5.
Bastaba con usar los 'niveles de inicio y final'. Son parámetros que existe en los módulos de los que luego se generan los menús.
Y lo que buscaba era que los botones quedaran activos tanto los del menú horizontal como los del vertical. Algo parecido a esto: http://www.debronsneek.nl

He creado un menú horizontal (con submenus que se muestran como menus verticales) y al seleccionar un item del menú horizontal se muestra a la izquierda un menú vertical (especifico para cada item del menú horizontal).

modulo menú horizontal:
- nombre del menu: topmenu,
- nivel de inicio:0
- nivel final:1
modulos menú vertical:
- nombre del menú: topmenu,
- sufijo clase modulo:art-vmenu,
- inicio nivel: 1,
- nivel final:2

Mas información en
http://comunidadjoomla.org/centro-de-ay ... a-15x.html


Locked

Return to “Joomla! 1.5”