Hace ya tiempo que no pongo ningún artículo sobre desarrollo con Drupal, a continuación explico los usos más comunes de la función l() para generar links de forma segura y sencilla.

Creando links en Drupal 6: la función l()

La función l() permite generar links en el código y es una práctica recomendada para el desarrollo con Drupal, pasando los enlaces a través de esta función nos aseguramos de que las rutas se generan bien y nos ahorramos problemas de seguridad (ya que se filtra el texto) y también con los alias, ya que es consciente del alias que tiene cada contenido y se genera correctamente, por ejemplo si tenemos un enlace al primer nodo node/1 y tiene un alias como contenido/primer-articulo, si cambiamos el alias, un link construido con l() no será necesario modificarlo.

Sintaxis

l($text, $path, $options = array());

  • $text - El texto que se mostrará en el enlace, es recomendable pasarlo a través de una función t() si trabajamos con traducciones y sitios multilenguaje.
  • $path - Ruta a la que accede el link.
  • $options - Array de opciones que nos va a permitir alterar el comportamiento del enlace, permitir HTML, añadir clases CSS...

Por ejemplo, un link a un contenido fijo, el formulario de contacto:

<?php
 
print l('Contacta', 'contact');
?>

Otro ejemplo, un link a un nodo, pasado por traducción.

<?php
 
print l(t('Enlace al contenido'), 'node/4');
?>

Si queremos enlazar la home, debemos usar la cadena <front>.

<?php
 
print l(t('Home'), '<front>');
?>

Ayer le tocó el turno a la configuración de la librería GD para PHP en Ubuntu y Windows, y hoy le dedico una entrada a la configuración de un entorno de desarrollo AMP en Drupal (Apache + MySQL + PHP) en Mac OS X, probado para Leopard.

Primer paso, activación del servidor web Apache

Mac OS X lleva un servidor Apache instalado por defecto, solamente es necesario activarlo para poder trabajar con él. En el caso de Leopard, la versión de apache es la 2, por lo que ya está actualizado. Para activarlo, deberemos ir a Preferencias de Sistema y allí seleccionamos "Compartir web".

Imagen_2_0.png

Segundo paso, instalación y configuración de PHP

Los siguientes pasos son un poco más complejos, si no necesitamos soporte GD para nuestro sitio web, podemos seguir los pasos que recomienda Asier y activar la extensión por defecto de PHP que viene con el sistema operativo, editamos con un sudo el fichero /etc/apache2/httpd.conf y descomentamos la línea referente a la extensión de PHP.

sudo nano /etc/apache2/httpd.conf

La línea
#LoadModule php5_module libexec/apache2/libphp5.so

Debe quedar así
LoadModule php5_module libexec/apache2/libphp5.so

Si necesitamos soporte GD, el paquete de Mac no viene compilado por defecto, por lo que la instalación será un poco diferente. No es necesario modificar el fichero anterior, sino que nos podemos descargar una versión ya compilada con este soporte desde entropy.ch y ejecutar el fichero .dpkg que ya configurará el entorno de apache para tener soporte de PHP con soporte de GD.

En muchas instalaciones web necesitaremos las librerías gráficas GD para mostrar y manipular las imágenes presentes en nuestro sitio.

¿Qué son las librerías GD?

Las siglas GD proceden originalmente de "gif draw" o "graphics draw" y son unas librerías de código abierto desarrolladas en C para la creación dinámica de imágenes en aplicaciones. Entre otros muchos formatos, permiten manipular al vuelo imágenes PNG, JPEG y GIF.

¿Para qué se necesitan en Drupal?

El uso más común en Drupal se encuentra en el módulo ImageAPI, que utiliza opcionalmente las librerías GD2 para gestionar la manipulación de las imágenes. ImageAPI por sí solo no hace nada, sino que proporciona un API que es utilizado por otros módulos, como ImageCache o ImageField.

¿Cómo sé si las tengo instaladas?

La forma más rápida es crear un fichero con el siguiente código y consultarlo:

<?php
phpinfo
();
?>

Para Drupal, solamente tendremos que identificarnos con un usuario con permisos de e ir a Administrar » Informe de Estado y hacer click en el link de la versión de PHP:
http://www.misitio.com/admin/reports/status/php

Deberemos ver algo como esto en la página resultante, que nos indica el estado enabled para las librerías GD
gd-support.png

Si no encontramos referencia a GD en nuestro phpinfo, deberemos instalarlo.

También es posible que tengamos unas librerías preconfiguradas que no incluyen toda la funcionalidad que necesitamos, esto suele pasar cuando utilizamos la versión oficial, en lugar de la "bundled", por lo que es recomendable instalar esta última. En ese caso el propio Informe de Estado, Drupal nos advierte de este problema:

Imagen_2.png

Un problema que puede ocurrir cuando se realiza una migración de usuarios, es que después de realizar la carga de los mismos, los usuarios anónimos no puedan acceder al perfil de estos usuarios nuevos, mientras que, tanto el usuario administrador (uid 1) y el resto de usuarios autentificados sí tienen permisos para acceder a los perfiles de todos.

El error que aparece es Página no encontrada (page not found), y se produce porque cuando se crea un usuario, hasta que éste no hace login por primera vez, no aparece en los listados que se muestran a los usuarios anónimos, ya que filtra la columna "access" de la tabla "users", si es igual a 0, no muestra los registros.

Tampoco serán visibles para los anónimos los nuevos usuarios que no se hayan identificado en ninguna ocasión en los diferentes listados o bloques, por ejemplo el de últimos usuarios.

Como posible solución a este problema, en el caso de que sea el resultado de una migración, se pueden actualizar en la tabla de usuarios aquellos que no se hayan identificado nunca, poniendo su fecha de último acceso igual a su fecha de creación.

UPDATE users SET access=created WHERE access = 0;

O si solamente necesitamos que se muestren los últimos usuarios en un bloque, sin incluir aquellos que no se han llegado a identificar nunca, para evitar que a los usuarios anónimos se les muestre un contenido al que no van a poder acceder, podemos hacer un snipplet de código php con el filtro que necesitemos.
En Administrar » Construcción del sitio » Bloques le damos a Añadir Bloque, le ponemos un nombre, por ejemplo "Últimos usuarios" y en el cuerpo añadimos algo como esto:

<?php
$sql
= "SELECT * FROM {users} WHERE status !=0 AND access !=0 AND uid > 1 ORDER BY created DESC";
$result = db_query_range($sql,0,5);
echo
'<ul>';
while(
$data = db_fetch_object($result)) {
  echo
'<li>';
  print
l($data->name, 'user/'.$data->uid);
  echo
'</li>';
}
echo
'</ul>';
?>

Es importante que el filtro sea PHP Filter, para que se pueda ejecutar correctamente.
El último paso es colocar el bloque en la región donde queramos mostrarlo.