Composición de URLs en Drupal
Últimamente estoy trabajando mucho con Drupal, un CMS (Content Management System, o comunmente llamado gestor de contenidos) que salió con fuerza y es uno de los líderes Open Source junto con Joomla.
Un compañero de trabajo, Rodrigo, me animó a escribir este artículo, sobre la composición de URLs en Drupal, para evitar utilizar dominios y nombres de temas (themes) en las mismas, de manera que los enlaces sean dinámicos si cambiamos de URL, de carpeta raíz, o simplemente de tema.
La API de Drupal nos ofrece algunas variables para componer una URL dinámica como $base_url, que pintaría la base de la URL que pusimos al instalar Drupal. Para poder utilizarla, primero deberemos llamarla en algun archivo como page.tpl, o en un contenido en el que la necesitamos, de todas formas, soy partidario de utilizarlo en archivos generales como el page, template.php, node.tpl, etc. La llamada se realiza en código PHP, escribiendo lo siguiente:
<?php global $base_url; ?>
Luego simplemente tendremos que utilizar la variable $base_url en nuestros enlaces, por ejemplo:
<a href="<?php echo $base_url; ?>/mipagina">Texto del enlace</a>
Podemos utilizarla igualmente en rutas de imágenes y en lo que queramos. Hay que tener en cuenta algo importante, si metemos código PHP en un contenido, debemos seleccionar el formato de entrada PHP para que consiga leerlo, sino pasará de largo las variables o provocará algún error, es posible incluso que pinte el código en la página como si fuera texto, tampoco lo he probado.
De la misma manera podemos utilizar la función base_path(), de la API de Drupal (que podemos encontrar y modificar -cuidadín- en el archivo “include” common.inc), que nos dará también la ruta base de donde tengamos instalado Drupal, por ejemplo: http://www.dominio.es/drupal/
Otra función útil es la de path_to_theme(), que nos dará la ruta del tema que se esté utilizando en ese momento, de manera que podemos hacer esta composición para acceder a una imagen dentro de un tema de Drupal:
<img src="<?php print base_path() . path_to_theme() ?>/images/imagen.gif" />
Siempre ojo con las barras, la función base_path() contiene una barra al final normalmente, pero la de path_to_theme() es posible que no termine en barra y tengamos que agregarla como hago en el ejemplo, compruébalo antes de buscar fallos por otros sitios que es muy normal olvidarlo.
Por otro lado, podemos aprovechar más la API de Drupal utilizando otras funciones como l(), que crea un enlace (link) en HTML y solo necesita que le pasemos dos parámetros, el nodo al que vamos a enlazar y el texto que vamos a mostrar para el enlace, la estructura sería así:
<?php echo l('Texto del enlace', 'node/44'); ?>
Este código PHP pintaría lo siguiente:
<a href="node/44">Texto del enlace</a>
Tenemos más información sobre la función l() en la documentación de Drupal, en donde encontraremos manera de aumentar aun más la funcionalidad de esta función:
