Menu > #current
Febrero 5, 2008 @ 8:49
Alex SanchoDiferenciar el enlace actual dentro de un menú es una tarea relativamente fácil, básicamente solo tenemos que comparar los enlaces del menú con la url actual y añadir una id al enlace en el caso de que coincidan.
La siguiente técnica intenta facilitar este proceso, la idea es procesar un bloque de html mediante php y encontrar la coincidencia,
el menú
como ejemplo usare una lista desordenada para la estructura del menú
$menu = '
<div class="menu-container">
<ul id="menu">
<li><a href="http://example.com/path/seccion1/">Seccion 1</a></li>
<li><a href="http://example.com/path/seccion2/">Seccion 2</a></li>
<li><a href="http://example.com/path/seccion3/">Seccion 3</a></li>
</ul>
</div>';
Como podéis ver, la estructura del menú no presenta ninguna limitación, en este caso utilizo una lista, pero podría utilizar cualquier tipo de contenedor para el propósito.
la función
Creo que el método de uso no tiene secreto, pasamos nuestro menú a la función menu_current($menu);
<?php
funcion menu_current($menu)
{
$lines = split("\n", $menu);
foreach($lines as $line)
{
preg_match('/href="([^"]+)"/', $line, $url);
if (isset($url[1]))
{
$section = end(explode("/", trim(parse_url($url[1], PHP_URL_PATH), '/')));
$request = explode("/", trim($_SERVER["REQUEST_URI"], '/'));
if(in_array($section, $request))
$line = str_replace('<a h', '<a id="current" h', $line);
}
$array[] = $line;
}
echo implode("\n", $array);
}
?>
Comentarios (0) | | Digg It! | | ma.gnolia |

Articulos relacionados:Mapa genético de Europa
Los mejores sitios para trabajar en España en 2008
W2X: FW Exclusivo: En Vivo desde el Keynote de Fake Steve Jobs via Yahoo! Live
PIGS
La tapa de eink de Esquire
Permalink
Via Alex Sancho
PHP