[TYPO3-UG Spain] Duda sobre menus (y un saludo)

Jose daniel Fuentes mata jose-daniel.fuentes at sogeti.com
Fri May 16 11:11:56 CEST 2008


Muy buenos dias, lista.

Ya tengo solucionado la duda que planteaba ayer.

Aqui os pongo la solucion y os comento alguna cosita, para que me deis vuestra
opinion (los que sigais posteando aqui, claro esta).

El portal asume una profundidad _maxima_ de menu de 3 niveles (menu - submenu -
pagina). Las hojas del arbol de navegacion (paginas con contenido) pueden estar
en el nivel 2 o en el 3.

-- codigo javascript en la plantilla --
--
function toogle(paramID) {

			if (eval(document.getElementById('contenedor_'+ paramID))) {

				if (document.getElementById('contenedor_'+ paramID).style.display == 'none')
{
					// mostramos y activamos
					document.getElementById('contenedor_'+ paramID).style.display = 'block';

				} else {
					// ocultamos y desactivamos
					document.getElementById('contenedor_'+ paramID).style.display = 'none';
				}
			}
		}
--

-- codigo de menu en la plantilla
--
temp.contenedorMenu = HMENU
  # menus de 1er nivel
temp.contenedorMenu.1 = TMENU
temp.contenedorMenu.1 {
  expAll = 1

    # estado normal (sin submenus)
  NO {
    doNotLinkIt = 1
    wrapItemAndSub = <div class='menu_level_1'> | </div>
  }

    # si tiene elementos de menu que desplegar
  IFSUB = 1
  IFSUB {
    doNotLinkIt = 1

    stdWrap.dataWrap = <div class='menu_level_1'><a
href="javascript:toogle('{field:uid}');"> | </a><div
id='contenedor_{field:uid}' style='display: none;'>

    wrapItemAndSub = | </div></div>
  }
}
  # menus de 2o nivel
temp.contenedorMenu.2 = TMENU
temp.contenedorMenu.2 {
  expAll = 1

    # estado normal (sin submenus)
  NO {
    wrapItemAndSub = <div class='menu_level_2'> | </div>
  }

    # si tiene elementos de menu que desplegar
  IFSUB = 1
  IFSUB {
    doNotLinkIt = 1

    stdWrap.dataWrap = <div class='menu_level_2'><a
href="javascript:toogle('{field:uid}');"> | </a><div
id='contenedor_{field:uid}' style='display: none;'>

    wrapItemAndSub = | </div></div>
  }
}

# menus de 3er nivel
temp.contenedorMenu.3 = TMENU
temp.contenedorMenu.3 {

    # estado normal
  NO {
    wrapItemAndSub = <div class='menu_level_3'> | </div>
  }

    # estado activo
  ACT = 1
  ACT {
    wrapItemAndSub= <div class='menu_level_3'> | </div>
  }
}
--

Como detalle curioso destacar que el estilo inline puesto en las capas
contenedoras (style='display: none;') no esta por CSS dado que, por alguna
misteriosa razon, javascript no reconocia que la capa estaba oculta si no lo
"veia" fuera de las CSS.

¿Que conseguimos con esto? Conseguimos un menu muy "a la javascript", de forma
que las hojas del arbol de navegacion se enlazan con sus paginas y podemos
recoger/desplegar el menu sin ir navegando todo el rato por paginas sin
contenido (las ramas del arbol). Es una forma de tener agrupadas las paginas
por categorias/subcategorias/paginas muy elegante ^^

Unico detalle a mejorar/investigar... que el menu no se despliega cuando
saltamos en la navegacion, de forma que el menu no refleja en que pagina
estamos. Se aceptan sugerencias en este punto.

Un saludo!

Jose D.



More information about the TYPO3-UG-spain mailing list