En cada página que llamemos con sección colocamos una variable en cualquier lugar del código:
<?php $mi_pagina="Inicio"; ?>
Luego le agregamos una condición al menú:
<?php if ($mi_pagina=="Inicio") echo " class='current'"; ?>
La condición es simple, si la variable es igual a "inicio" entonces "inicio" quedará activo, así podremos hacer algo como esto:
<div class="menu"> <ul> <li><a <?php if ($mi_pagina=="Inicio") echo " class='current'"; ?> href="#"><span>Inicio</span></a></li> <li><a <?php if ($mi_pagina=="Contacto") echo " class='current'"; ?> href="#"><span>Contacto</span></a></li> <li><a <?php if ($mi_pagina=="Sobre mi") echo " class='current'"; ?> href="#"><span>Sobre mi</span></a></li> <li><a <?php if ($mi_pagina=="Posts") echo " class='current'"; ?> href="#"><span>Posts</span></a></li> <li><a <?php if ($mi_pagina=="Cualquier cosa") echo " class='current'"; ?> href="#"><span>Cualquier cosa</span></a></li> </ul> </div>
Y si lo combinamos con include para no tener que estar escribiendo el menú en cada una de las páginas tendremos algo muy dinámico, por ejemplo:
Para la página:
<html> <head> <title>Mi Titulo</title> </head> <body> <?php include('menu.php'); ?> //El resto del contenido Esto es un ejemplo de un menu </body> </html>
El archivo que contiene el menú, "menu.php":
<div class="menu"> <ul> <li><a <?php if ($mi_pagina=="Seleccion1") echo " class='current'"; ?> href="#"><span>Seleccion1</span></a></li> <li><a <?php if ($mi_pagina=="Seleccion2") echo " class='current'"; ?> href="#"><span>Seleccion2</span></a></li> <li><a <?php if ($mi_pagina=="Seleccion3") echo " class='current'"; ?> href="#"><span>Seleccion3</span></a></li> </ul> </div>
Nota: verificar las comillas simples dentro de las dobles.
Ya casi 1 año de este post, pero quiero agradecerte por compartirlo...
ResponderEliminarGran articulo Carlitox,
Saludos!
De nada amigo, para eso estamos...
ResponderEliminarXtrance 88
ResponderEliminarGracias Carlos, por tu post, le dio solucion a mi problema te agradesco...
Me fué muy útil. Muchas gracias
ResponderEliminarEn efecto, no funciona!!!
ResponderEliminarQue no te funciona??? Postea el código por favor... Saludos!!
ResponderEliminarA mí no me funcionaba y después de pelear mucho he encontrado el problema, está en que hay un error de sintaxis con el Echo.
ResponderEliminarHay que ponerlo así:
class=\"current\""
Claro, el slash es para colocar la comilla dentro del comentario, pero si te fijas bien tiene comillas simples(') dentro de las dobles("), por lo que así como está también es válido.
ResponderEliminarUna pregunta, y para usarlos con iframes? es decir el menu esta include pero llama en un iframe a otra paginas, probe pero me dice que no esta declarada la variable...
ResponderEliminarVeamos tu código para darle respuesta, pero por lo que mencionas tiene pinta de ser que no envias la variable a la pagina que carga el frame, tienes 2 soluciones pero ambas no son las mejores.... Usas cookies, o sesiones, sin embargo postea tu código y veamos...
EliminarHe suprimido tus comentarios porque no puedo ver tu código y mucho menos darte una ayuda, por afavor utiliza la siguiente utilidad: http://carlitoxenlaweb.blogspot.com/2011/09/parseunparse-html-ideal-para-blogs.html
EliminarLuego de eso publica tu código y podre ayudarte.... Saludos!!
Gracias Carlos!
Eliminar<body>
<div id="apDiv2-Container">
<div class="header">
<?php include_once ("menu_ins3.php"); ?>
</div>
<div class="contenido_index">
<iframe id="iframe1" name="detalle" src="inicio.php" frameborder="0" scrolling="no" allowtransparency="true" ></iframe>
</div>
</div>
<!-- end .container -->
</body>
archivo menu.ins3.php
<div id="navI" >
<script type='text/javascript' src='jquery/jquery-1.8.0.min.js'></script>
<script>
$(function(){
$ ('#t1.hover, #t2.hover, #t3.hover, #t4.hover, #t5.hover, #t6.hover').mouseover(function(){
$('embed').remove();
$('body').append('<embed src="jquery/beep.mp3" autostart="true" hidden="true" loop="false">');
});
});
</script>
<ul style="font-size:10px; line-height:11px;">
<li id="t1" class="hover"><a href="inicio.php" target="detalle">INICIO</a></li>
<li><span class="barrita_blanc">|</span></li>
<li id="t2" class="hover"><a href="categorias.php?idcat=1" target="detalle">SERVICIOS</a></li>
<li><span class="barrita_blanc">|</span></li>
<li id="t3" class="hover"><a href="noticias.php?" target="detalle">PUBLICACIONES</a></li>
<li><span class="barrita_blanc">|</span></li>
<li id="t4" class="hover"><a href="videoteca.php?id=1" target="detalle">VIDEOTECA</a></li>
<li><span class="barrita_blanc">|</span></li>
<li id="t5" class="hover"><a href="nosotros.php?id=1" target="detalle">NOSOTROS</a></li>
<li><span class="barrita_blanc">|</span></li>
<li id="t6" class="hover"><a href="contacto.php" target="detalle">CONTACTO</a></li>
</ul>
</div> <!--end NavI-->
Disculpa la tardanza, la verdad no veo donde esta el error, porque lo he probado y no hay problemas..... Aunque noto algo, fijate que en tu include el nombre del archivo es: "menu_ins3.php", pero mas abajo me dices que se llama "menu.ins3.php"..... Revisa que sea el mismo nombre del archivo en el include... Saludos!!
EliminarGracias Carlos, fue un error al escribir el nombre pero es el mismo archivo. A mi me marca que la variable $mi pagina no fue definida, es como si el archivo menu incluido en el index no detectara las paginas que se cargan en el iframe, a pesar de que en estas si tengo creadas las variable "pagina" como indicas en cada de una de las paginas, inicio, contacto etc, sino no hay drama gracias por tu tiempo. Abrazo
EliminarAh ok, lo que sucede es que los iFrame son tediosos y se tratan como paginas independientes al código, es por ello que siempre prefiero el include cuando trabajo con PHP, o AJAX, pero para que te funcione debes hacer esto:
EliminarEn el "src" de la etiqueta iFrame coloca inicio.php?mi_pagina=$mi_pagina, definiendo anteriormente $mi_pagina = 'la pagina', o en su defecto nicio.php?mi_pagina=inicio
Luego la pagina de inicio.php pones $mi_pagina = $_REQUEST['mi_pagina'] o $_GET['mi_pagina']..... Ya con eso debe solucionarse todo.... Prueba y comentas, saludos!!
Aqui te paso como quedo finalmente, posiblemente este haciendo algo mal.. https://dl.dropboxusercontent.com/u/93036547/pruebamenu.rar
EliminarComo te explique anteriormente, estas declarando un menu y llamando las paginas por medio de un iFrame, por lo que el menu no refresca, debes cargar el menu dentro del iframe, o hacer el include dinamico a las paginas que tienes.....
EliminarOtra cosa es que debes definir la variable antes de cargar el archivo menu, ya sea en el index o en la pagina que cargues....
gran aporte chico.
Eliminarvas a pensar que soy una ignorante pero en donde debo colocar el *** inicio.php?mi_pagina=$mi_pagina, definiendo anteriormente $mi_pagina = 'la pagina', o en su defecto nicio.php?mi_pagina=inicio *** es que no te entiendo por fa dime
Al principio de cada página (son a las que haces el "include") defines a cual estas accediendo, y listo, eso es todo... Va en el código PHP, no en un enlace ni nada por el estilo.
Eliminar¡Sensacional! Era justo lo que estaba buscando ¡y funciona!
ResponderEliminarBuenas noches amigos. He adaptado el código de menú activo y no me ha funcionado. Dejo parte del código esperando sus respuestas. Gracias de antemano a los que puedan ayudar.
ResponderEliminar<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a href="../Inicio.php">INICIO</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" <?php if ($pagina=="Listado_general_pacientes"||$pagina=="Listado_afiliados"||$pagina=="Listado_beneficiarios"||$pagina=="Listado_comunidad") echo " class='active'"; ?> data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">PACIENTES <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a <?php if ($pagina=="Listado_general_pacientes") echo " class='active'"; ?> href="Listado_general_pacientes.php">LISTADO GENERAL</a></li>
<li><a <?php if ($pagina=="Listado_afiliados") echo " class='active'"; ?> href="Afiliados.php">AFILIADOS</a></li>
<li><a <?php if ($pagina=="Listado_beneficiarios") echo " class='active'"; ?> href="Beneficiarios.php">BENEFICIARIOS</a></li>
<li><a <?php if ($pagina=="Listado_comunidad") echo " class='active'"; ?> href="Comunidad.php">COMUNIDAD</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">CITAS <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="../Citas/Listado_general_citas.php">LISTADO GENERAL</a></li>
<li><a href="#">AFILIADOS</a></li>
<li><a href="#">BENEFICIARIOS</a></li>
<li><a href="#">COMUNIDAD</a></li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="../Login.php">CERRAR SESIÓN</a></li>
</ul>
</div><!-- /.navbar-collapse -->
Que no funciona? Has definido la variable antes al inicio de la página?
EliminarLa variable pagina ya está definida. Ya he revisado y no se mostraba porque el echo después de la condición php se debe colocar dentro de comillas simples y la clase dentro de la etiqueta class va con comillas dobles
Eliminar