Cómo hacer el mapa de un sitio web

As� pues, hemos creado un script que escanea los directorios en b�squeda de ficheros: esta es la funcionalidad m�s importante y la hemos logrado. Ahora, concentr�monos en los resultados obtenidos. En primer lugar, a�adamos una parte que imprima los nombres de los directorios y enlaces a cada uno de los ficheros, adem�s de unos cuantos iconos agradables a la vista. Naturalmente, no lo haremos manualmente � v�ase Listado 10.

Listado 10: Embellecemos el script
for($y=0; $y<sizeof($sdirs); $y++)
{
   echo "<img align=absmiddle src=folder.gif> <a href=
      \"http://$SERVER_NAME$prefix/$dir1$sdirs[$y]\">$sdirs[$y]</a>";
}
...
for($y=0; $y<sizeof(sfiles); $y++)
{
   echo "<img align=absmiddle src=\"";
   echo $display[get_extension($sfiles[$y])];
   echo "\"> ";
   echo "<a href=\"http://$SERVER_NAME$prefix/$dir1$sfiles[$y]\">$sfiles[$y]</a>";
}

Tal y como hicimos menci�n anteriormente, el icono correspondiente a cada tipo de fichero es almacenado en un array adecuado. Vale la pena notar la manera en que utilizamos la variable global $SERVER_NAME, la cual contiene la direcci�n del servidor requerida por el navegador de Internet del usuario (m�s tarde explicaremos c�mo obtener la variable $dir1). Gracias a ella podemos utilizar la direcci�n correcta, independientemente de si la p�gina es visitada por un usuario en la intranet o desde el exterior. Por supuesto, no es obligatorio el uso de una ruta de acceso absoluta, simplemente es que estoy acostumbrado a ellas.

En este momento la presentaci�n es bastante sencilla. Aunque podr�a ya ser considerada satisfactoria, vale la pena hacerla m�s atractiva si tambi�n otras personas van a mirarla.

El m�todo adecuado (y frecuentemente utilizado) para representar un sistema de ficheros es la estructura jer�rquica. JavaScript da varias posibilidades de presentar la apertura de ramas en una estructura de este tipo; sin embargo, yo decid� hacer uso de HTML puro, pues no me fue posible hacer que todos los navegadores trabajen con mis mejoras en JavaScript.

�Qu� debemos saber antes de crear una presentaci�n as�? Por supuesto, el nivel en el cual nos encontramos en la estructura de los directorios. Podemos conocerlo f�cilmente contando la cantidad de barras (/) que contiene la ruta:

$dir = getcwd();
$dir1 =
  str_replace($root, "", $dir."/");
$count =
  substr_count($dir1, "/")
    + substr_count($dir1, "\\");

En primer lugar tenemos que obtener la ruta al directorio actual. Si decidimos hacer uso de la ruta suministrada al lanzar opendir(), en vez de cambiar los directorios bastar� a�adir esta ruta al resultado de la ejecuci�n de getcwd().

La segunda l�nea elimina el directorio principal del servidor web de la ruta, porque no queremos que los visitantes que miren el mapa del sitio conozcan la estructura interior de los directorios. En los sistemas Unix, la l�nea eliminada es generalmente /var/www/html/public (as� la devuelve getcwd()). Adem�s, de no hacerlo, nuestra presentaci�n podr�a llegar a contener demasiadas ramas de la estructura jer�rquica.

La tercera l�nea cuenta todos los caracteres �/� (para los sistemas Unix y �\� para la familia Windows). La barra invertida debe ser ignorada porque ella misma es un car�cter de escape (ingl�s: escape character), que enmascara el car�cter que le sigue, a no ser que �ste �ltimo sea tambi�n un car�cter de control; en la variable $count mantenemos el n�mero de niveles.

El siguiente c�digo nos crear� un n�mero apropiado de ramas:

for($z=1; $z<=$count; $z++)
{
  echo "<img align=absmiddle
    src=vertical.gif>&nbsp;&nbsp;&nbsp;";
}

Mostramos n-1 ramas, donde n corresponde al n�mero del nivel. La �ltima rama conduce al fichero/directorio (la �hoja� o extremidad de la rama), para el que necesitaremos un icono diferente. Adem�s, las hojas que se encuentran en la extremidad de la rama deben ser diferenciadas de las que las preceden. Lo comprobamos con la ayuda del siguiente c�digo:

if(is_array($sfiles)) //para los directorios
if($y == ($sizeof($sfiles) -1)) //para los ficheros

Con los directorios, verificamos si contienen alg�n fichero; en cambio, si encontramos un fichero, comprobamos si �ste es el �ltimo del array. Finalmente, despu�s de presentar todos los ficheros en el directorio dejaremos una l�nea vac�a antes de pasar a otra rama:

for($z=1; $z<=$count; $z++)
{
  echo "<img align=absmiddle
    src=vertical.gif>&nbsp;&nbsp;
    nbsp;";
}

Esto es casi todo. Agregamos un poco de simple c�digo HTML para colocar todo esto en un array, y nuestro script ya est� listo para ser usado. El resultado de la ejecuci�n de este script debe mostrarse m�s o menos como en la Figura 2.

Figura 2: Script ejecutado en el plug-in de Internet Explorer

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP