En el artículo anterior de esta serie dedicada a Drupal, se dejó el software instalado a la espera de que se diera de alta el contenido a mostrar en el sitio y se personalizara el aspecto con el que debe presentarse el mismo. En esta ocasión se mostrará cómo puede organizarse el contenido de un web como esta.

Los nodos se organizan asociándoles categorías. Por ejemplo, se puede indicar que un nodo es de la categoría «Noticias». De esta forma se consigue que se puedan listar fácilmente todas las noticias dadas de alta en la web. Pero además, el nodo se podría relacionar con los términos «Deportes» y «Fútbol» para que se sepa el tipo de información que contiene.Lo primero que hay que entender es que casi todo el contenido que se da de alta a través de Drupal es tratado internamente como un tipo de entidad genérica llamada nodo. Un nodo es prácticamente cualquier texto que se introduce en Base de Datos y se muestra a través de la web. Esto permite que a cualquier tipo de contenido se le pueda asociar de forma individual una serie de atributos comunes, independientemente que sea una noticia, un artículo o el tema de un foro.

Este texto no pretende ser una explicación completa y exhaustiva del proceso de creación de contenido de Drupal. Antes de proceder a organizar y dar de alta contenido en la web debería consultarse la ayuda en línea que se incluye junto al software, así como la documentación que se encuentra disponible en la web oficial drupal.org.

Categorías

En Drupal las categorías se utilizan para organizar el contenido. Y las categorías se implementan mediante vocabularios, términos, y las relaciones que se establecen entre ellos, que pueden ser simples o jerárquicas, incluyendo jerarquías múltiples. A este tipo de organización se le denomina taxonomía.

Esta web está organizada para contener dos secciones: blog y artículos. Así que tiene creado un vocabulario llamado «Secciones» con dos términos: «Blog» y «Artículos».

Secciones:

Blog
Artículos

Los vocabularios se dan de alta en Drupal a través del menú administrar->categorías->añadir vocabulario. Y el vocabulario «Secciones», en particular, se dio de alta con los siguientes parámetros:

Nombre del vocabulario: Secciones
Descripción: Secciones de las que se compone la web
Texto de ayuda: Sección de la web en la que aparecerá el contenido
Tipos: artículo
Términos relacionados: No
Jerarquía: Simple
Selección múltiple: No
Requerido: Sí
Peso: 0

Los tres primeros parámetros son auto explicativos. El parámetro «Tipos» permite seleccionar la clase de nodo al que aplica el vocabulario, he marcado sólo artículos porque no pienso en principio clasificar las páginas estáticas. «Términos relacionados» indica si se quiere establecer relaciones entre los propios términos del vocabulario, he seleccionado «No» porque para este vocabulario no tiene sentido establecer este tipo de relaciones. «Jerarquía» establece las relaciones entre los términos, he escogido una jerarquía simple, tipo árbol. El parámetro «Selección múltiple» permite que cuando se dé de alta contenido se pueda elegir varios valores de este vocabulario en vez de uno sólo, he seleccionado «No» porque un nodo en concreto será una noticia o un artículo, no ambas cosas a la vez. Para «Requerido» está seleccionado «Sí», para forzar que se indique a qué sección tiene que ir un nodo cuando se dé de alta. Por último, «Peso» está a cero porque no hay más vocabularios dados de alta todavía, y yo lo veo como un parámetro de ajuste una vez dado todo de alta.

Una vez creado el vocabulario se puede seleccionar de la lista de categorías y añadirle términos a través de la opción de menú administrar->categorías->añadir término. El vocabulario «Secciones», en particular, tiene dos términos dados de alta con los siguientes parámetros:

Nombre del término: Blog
Descripción:
Padre: <raíz>
Sinónimos:
Peso: 0
Nombre del término: Artículos
Descripción:
Padre: <raíz>
Sinónimos:
Peso: 0

Los parámetros son bien sencillos y no requieren mayor explicación. Lo que es importante entender es que a partir de este momento, cuando se dé de alta contenido en la web, se tendrá que asociar dicho contenido a un término del vocabulario «Secciones», con un formulario de aspecto similar al mostrado en la opción de menú administrar->categorías->previsualizar el formulario.

Una nota aclaratoria. Lo que pretendo con la sección «Blog» es ir poniendo pequeñas notas acerca de las actualizaciones que haga en la web, como puede ser la publicación de un nuevo artículo. Así que otra opción, en vez de crear una categoría y asociarle contenido, podría ser utilizar uno de los módulos que trae la distribución de Drupal que permite crear blogs.

Agregar Contenido

El contenido de la web se da de alta a través de la opción de menú crear contenido nuevo. No tiene mucho misterio. Un simple formulario para la introducción del texto con unas pocas opciones acerca del autor, formato y comentarios. Y por supuesto, el desplegable para la selección de un término del vocabulario «Secciones».

Una vez dado de alta el primer contenido, que en mi caso fue la noticia de inauguración de la web, este se mostrará automáticamente en la página principal del sitio, desapareciendo la página por defecto en la que se solicitaba, todavía, dar de alta al primer usuario de Drupal.

En el tema que viene configurado por defecto con Drupal, cada nodo se muestra con título, autor, fecha y el texto. Y junto a la fecha un enlace por cada término asociado al nodo. Así, junto a la noticia de la inauguración aparecía un enlace llamado «Blog» que al pulsarlo listaba todos los nodos asociados a «Blog».

En el menú administrar->contenido se muestra una lista con todo el contenido dado de alta en la web y varias opciones muy sencillas de configurar.

URLs amigables

Los enlaces creados por Drupal son bastantes incómodos de leer y recordar porque añaden ?q= a todas las direcciones. Además, los vocabularios y términos son referidos por su número identificador, no por su descripción. Así, para listar todos los artículos dados de alta en la base de datos se debe acceder a través del enlace http://www.dominio.com/?q=taxonomy/term/2.

Para que Drupal cree URLs más amigables para los usuarios es necesario ir al menú administrar->opciones y marcar como Activado la opción URLs limpios. Con esto conseguimos que no se añada ?q= a la URLs, de forma que se pueda usar el enlace http://www.dominio.com/taxonomy/term/2 para acceder al listado de artículos.

No obstante, el aspecto de las URLs se puede mejorar un poco más todavía. Para ello hay que activar el módulo path a través del menú administrar->módulos, lo que provocará que aparezca una nueva opción, alias de url, en el menú administrar. A través de administrar->alias de url->añadir alias podemos dar de alta alias como el siguiente:

Ruta existente en el sistema: taxonomy/term/2
Nuevo alias de ruta: articulos

De forma que se pueda acceder al listado de artículos a través del enlace http://www.dominio.com/articulos.

Una última nota, Drupal en la página principal del sitio muestra por defecto el listado de todos los nodos dados de alta en la base de datos. Podemos cambiar este comportamiento cambiando el valor de la opción administrar->opciones->Página predefinida de inicio. El valor por defecto es «node» y puede cambiarse, por ejemplo, al alias «articulos» para que muestre el listado de artículos.

Más vocabularios

Para poder clasificar los artículos que vaya escribiendo, he dado de alta otro vocabulario titulado «Temas»:

Nombre del vocabulario: Temas
Descripción: Temas tratados en la web
Texto de ayuda: Tema del que trata el contenido
Tipos: artículo
Términos relacionados: No
Jerarquía: Simple
Selección múltiple: No
Requerido: No
Peso: 0

Y que en este momento sólo contiene el término «Drupal»:

Nombre del término: Drupal
Descripción:
Padre: <raíz>
Sinónimos:
Peso: 0

Conclusiones

El objetivo básico de un CMS es organizar todo el contenido dado de alta. Y Drupal lo consigue a través del módulo de categorías. Mediante una interfase muy simple permite dar de alta vocabularios, términos y establecer relaciones entre ellos.

El ejemplo descrito en este artículo es muy simple y no muestra todo el potencial de Drupal. Creo que para hacerse una idea de lo que puede llegar a conseguirse hay que imaginar, por ejemplo, una gran biblioteca con miles de volúmenes. Para catalogar toda esa información haría falta varias decenas de vocabularios (autores, editoriales, temas, …) y varios miles de términos relacionados. De forma que pudieran realizarse consultas por cualquiera de esos términos, e ir de un contenido a otro a través de términos relacionados.

De igual forma podemos imaginar un fabricante de motores con unos pocos modelos, pero cientos de piezas de todo tipo (tornillos, tuercas, arandelas, …). De forma que las consultas sobre un motor en particular deberían poder presentarse por bloques (carburador, caja de cambios, …), sin gran nivel de detalle, o por pequeñas piezas de un determinado tipo.

Lo importante es darse cuenta de que ambos ejemplos, el de la biblioteca y el fabricante de motores, pueden ser gestionados por Drupal. Drupal no sirve sólo para gestionar el contenido de una web, sino para gestionar cualquier clase de contenido y publicarlo en web.