Foros del Web » Creando para Internet » HTML »

Link activo

Estas en el tema de Link activo en el foro de HTML en Foros del Web. Buenas tardes: Hice un include con php <?php include("modulos/cabecera.php"); ?> y funciona muy bien, pero quiero hacerle un adicional que al ir de una seccion ...
  #1 (permalink)  
Antiguo 14/10/2011, 11:32
Avatar de imagos3digital  
Fecha de Ingreso: septiembre-2011
Mensajes: 31
Antigüedad: 13 años, 2 meses
Puntos: 2
Pregunta Link activo

Buenas tardes:

Hice un include con php
<?php include("modulos/cabecera.php"); ?>
y funciona muy bien, pero quiero hacerle un adicional
que al ir de una seccion a otra
la seccion donde estoy quede resaltada

es decir que si paso de index a contacto el boton contacto quede en otro color..

se que debo crear una class "link activo"
pero no se como implementarla.

Gracias de antemano y espero ser claro.
  #2 (permalink)  
Antiguo 14/10/2011, 12:17
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 4 meses
Puntos: 641
Respuesta: Link activo

podrias comprobar el link donde estas con php ya que es lo que usas

Código PHP:
Ver original
  1. <?php
  2. if($_SERVER['REQUEST_URI'] == 'index.html') {
  3. echo '<li class="activo">';
  4. }else{
  5. echo '<li class="pasivo">';
  6. }
  7. ?>

tambien se puede usar javascript, pero esa es la idea.
  #3 (permalink)  
Antiguo 14/10/2011, 18:46
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Link activo

la de memoadian puede ser una solución, te muestro otra, un poco distinta, pensada para trabajar con una única plantilla php. Te pongo el esquema algo simplificado, despues podrias adaptarlo

Por un lado tenemos nuesto index (puse el css en el mismo para el ejemplo)

Código PHP:
Ver original
  1. <?php
  2. $link = $_GET['link'];
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  5. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7. <head>
  8. <title>titulo</title>
  9. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  10. <style type="text/css">
  11. /*<![CDATA[*/
  12. a{
  13. background-color: cyan;
  14. color: #000;
  15. }
  16. a:hover{
  17. background-color:#000;
  18. color: #fff;
  19. }
  20. a.activo{
  21. background-color:#000;
  22. color: #fff;
  23. }
  24.  
  25. /*]]>*/
  26. </style>
  27. </head>
  28. <body>
  29. <div>
  30. <?php  
  31. include('menu.php');
  32. ?>
  33. </div>
  34. <div class="contenido">
  35. <?php echo "incluir contenido de $link"; ?>
  36. </div>
  37. </body>
  38. </html>

Como ves al inicio define a la variable $link como un valor recibido por get,
luego hace un include al menu.php
y finalmente muestra un contenido (que en realidad sería otro include)

El menú
Código PHP:
Ver original
  1. <?php
  2. #menu
  3. $archivo_menu = $_SERVER['DOCUMENT_ROOT'] . '/menu/menu.txt';
  4. $fp = fopen( $archivo_menu, 'r' );
  5. $archivo_contenido = fread( $fp, filesize( $archivo_menu ) );
  6. fclose( $fp );
  7. // linea a linea.
  8. $lineas = explode ( "\n", $archivo_contenido );
  9. echo "<ul>";
  10. foreach ( $lineas as $linea) {
  11.  
  12. $linea = rtrim($linea);
  13. list( $vin,$reftitle,$textomenu ) = explode( '|', $linea );
  14.  
  15. if($link==$vin){
  16. echo "<li><a href='?link=$vin' class='activo' title='$reftitle'>$textomenu</a></li>\n";
  17. }else{
  18. echo "<li><a href='?link=$vin' title='$reftitle'>$textomenu</a></li>\n";
  19. }
  20. } ### fin foreach
  21. echo "</ul>\n<!-- fin menu  -->\n";
  22. ?>

este menu, lo que hace es extraer datos de un archivo de texto, cada linea del archivo contiene 3 elementos, que a su vez son separados, el contenido del txt sería


inicio|Página principal|inicio
ubicacion|Mapa de referencia y vias de acceso|ubicación
caracteristicas|Características generales del complejo|características
servicios|Servicios ofrecidos|servicios
reservas|Solicite reservas completando un formulario|reservas
vertarifas|Cuadro tarifario|tarifas
fotos|Galería de imágenes|fotos
contactenos|Realice sus consultas|contáctenos


el primer valor es el que se pasa como parámetro por get
el segundo es el valor del atributo title que va en el link
y el tercero es el téxto que aparecerá en el menú, este tercer elemento es importante, ya que te dije que la idea no es mostrar una leyenda (eso lo hago para simplificar la explicación), y como nó podrías cargar archivos con nombres acentuados (características, contáctenos, etc) ó bien podria ser que el texto del menú se compusiese de dos palabras (características principales, por ejemplo).

entonces en el div contenido porias hacer un

<?php include("$link.html"); ?>
como ves es muy flexible. Como observarás tambien el menu contien una condición en la que si lo que se pasa por get ($link), es igual al primer valor de cada linea, escribe la clase activo, ya que obviamente hay coincidencia entre el elemento del menu y lo que se cargó, un poco como ya te habia señalado memoadian.
Por supuesto que hay otros detalles a tener en cuenta, pero eso te lo dejo investigar a vos...
create los tres archivos, index, menu.php y menu.txt y probalo.
Finalmente tendrias que condimentarlo con urls amigables, para eliminar el tema de la variable en la url

Me olvidé de un detalle importante, tu archivo de texto uqe termine con LF(fin de linea estilo unix) y no CR\LF, casi todos los editores de texto te dan esa opción
SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 14/10/2011 a las 19:02

Etiquetas: activo, link, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:10.