Módulos Custom. Flexibilizando Drupal.

5 Comentarios
Fecha: 
04 de Mayo de 2009

Un año y medio después de haber conocido Drupal por primera vez. Incluso después de haber programado varios módulos, instalé el primer módulo Custom de Drupal. No puedo expresar con palabras la cantidad de posibilidades que disparó esto en mis desarrollos.

Antes de comenzar con el tema en cuestión es importante mencionar esto para los recién iniciados en Drupal. CCK, Views, Tokens, y los filtros de entrada son algunos de los módulos que seguramente utilizará en cuanto sitio construya con Drupal.

Las posibilidades de estos módulos son tan amplias que muchas veces bastan para diseñar un sitio casi completamente.

CCK permite crear tipos de contenidos, Views, generar listados, Token genera etiquetas reemplazables reutilizables y los filtros de entrada permiten aplicar etiquetas al cuerpo de los nodos.

Pero yo necesito...

Siempre hay alguien que necesita algo que Drupal no provee por defecto. De alguna forma la flexibilidad de CCK, Views y los demás módulos encuentra un límite.

Es por eso que algunos desarrolladores han construido los módulos Custom.

Un módulo Custom (custom = personalizado) expande las funcionalidades de los módulos por llamarlos de una manera “clásicos”, generalmente mediante el uso de PHP.

Computed CCK Field:

Comencemos con Computed Field. CCK posee una serie de módulos que permiten crear campos del tipo texto, numéricos, de fechas, de imágenes, de audio, y de muchas otras formas. Pero que sucede si alguien necesita algo realmente específico. Digamos por ejemplo, un campo que se obtenga a partir de los datos de otros campos. O quizás un select box que se llene con datos extraídos de una tabla.

Para eso existe Computed Field. Este módulo permite crear campos con valores obtenidos mediante PHP. Por ejemplo, un número correlativo. Para este sitio podría haber utilizado un campo custom para obtener el número de artículo, obtenido a través de una consulta SQL a la base de datos.

Campo Computed Field.

Este módulo además puede ser utilizado para mostrar un campo en determinadas ocasiones. Por ejemplo, sólo mostrar el valor de este campo cuando el usuario posee una cierta cantidad de comentarios en el sitio.

Por último es destacable la capacidad de elegir si este valor se debe guardar o no en la base de datos. Retomando el ejemplo del número de artículo no es necesario guardarlo, es un cálculo simplemente.

Guardar computed field en la base de datos

Computed Field se instala como un campo común en el sitio. Los nodos pueden entonces mostrar campos custom tal como si se trataran de campos numéricos o de texto.

Custom Token:

El módulo Token usualmente provee soporte para otros módulos. Creo que el ejemplo más claro es Pathauto. Los Tokens son etiquetas que toman un valor. Por ejemplo [nid] se reemplaza por el id del nodo. [title] por el título.

Token utilzado en pathauto

De esta manera, articulos/[title]_[nid].html sería reemplazado para este artículo como:

articulos/Módulos_Custom._Flexibilizando_Drupal_23.html

Pero, volviendo a la flexibilidad extrema. Como hacer para crear un token personalizado, por ejemplo el token [numero-aleatorio]

Para eso se puede utilizar el módulo Custom Tokens. Básicamente permite generar tokens utilizando PHP. Personalmente lo he utilizado en un proyecto en donde necesitaba obtener valores de un nodo y del cual solo poseía su id.

Token para obtener un número aleatorio

Es interesante el hecho de que al procesar el token, tenemos acceso al objeto sobre el cual trabajará el token. De esta forma se puede construir un token específico obteniendo antes la información del nodo o el usuario.

Custom Links

Este módulo permite agregar links personalizados en el mismo lugar que en donde aparece los links habituales. Por ejemplo un nodo podría tener su habitual “Agregar Comentario” y al lado, “Escribir mensaje al autor”

Custom Links

Custom Filters:

Al igual que Custom Tokens, existe una opción para generar filtros de entrada personalizados. El módulo se llama Custom Filters. (También existe CCFilter, que cumple funciones simliares pero de otra forma), no tiene mucho sentido hablar demasiado sobre este módulo, su funcionamiento es similar al de Custom Tokens.

Custom Filters

Custom Breadcrums:

Otra de las cosas que se pueden personalizar en Drupal son los breadcrums. Con una traducción al español casi imposible, los breadcrumbs permiten indicarle al usuario donde esta parado y desde donde navegó para llegar hasta allí.

Ejemplo de Breadcrum

El modulo Custom Breadcrums permite modificar estos textos informativos para que queden más acordes a su sitio.

Configuraración de custom breadcrums

View Custom Field:

He dejado para lo último lo que considero la joya de la familia custom. No me diga que nunca necesitó mostrar algo en un views como un link personalizado por fila, un número de fila, una suma de valores, lo que sea.

Views Custom Field es el módulo que permite obtener valores personalizados para los listados hechos con views.

Al instalarlo permite agregar tres tipos nuevos de campos:

View Custom Field

El primero en la lista permite agregar textos normales. Si tiene que agregar por alguna razón un texto como “Artículo publicado”, entonces esta tal vez sea una buena opción.

La segunda en la lista permite agregar campos que se construyan con PHP. Simplemente es perfecto. No solo puede crear algún valor con PHP sino que puede leer los valores de los demás campos de la fila, de esta forma puede variar su valor a mostrar dependiendo de los valores que haya en la fila. Las posibilidades son inmensas.

El siguiente código de ejemplo muestra como se puede mostrar un enlace "imprimir" cuando el tipo de contenido de la fila actual sea del tipo página.

<?php
// Id del nodo: $data->nid;

//Tipo de nodo: $data->node_type

if ($data->node_type == 'page') {
  print
l('Imprimir', 'print/' . $data->nid);
}
?>

Ejemplo de campo creado con PHP

Y el último tipo de campo, Custom ViewField: Row Number agrega números automáticamente a sus filas en sus listados. Algo que a veces puede resultar muy útil.

Conclusiones:

Como pueden observar, para cada módulo clásico de Drupal existe su par “personalizado”. Las posibilidades que estos módulos brindan hacen que hacer un sitio web de extrema complejidad con Drupal sea una tarea, por lo menos posible. No se puede decir, “fácil”, pero por lo menos es realizable.

Seguramente exista algún otro módulo Custom que me haya quedado en el tintero. Si conoce alguno más, por favor agreguelo en los comentarios.

Su voto: Nada Promedio: 4.2 (20 votos)

Contenido Relacionado

Comentarios

Aupa compañero, sino recuerdo

Aupa compañero, sino recuerdo mal por lo menos los campos básicos de cck tienes la opción de Valores permitidos y dentro de los mismos puedes meter php para recuperar lo que necesites.

Un saludo y buen artículo

Oskar

Muy cierto. Bueno, hay dos

Muy cierto.

Bueno, hay dos posibilidades entonces :)

Aunque pensandolo bien, creo que Computed Field permite mostrar el resultado de una consulta SQL. Y CCK permitiría elegir uno de esos valores recuperados desde la base de datos. Creo que son cosas distintas.

Igualmente gracias por el comentario.
Saludos!

View Custom Field....

No sé si es el caso, pero en este momento necesito agregar el módulo "Compartir" (http://drupal.org/project/addthis) en cada ítem de mi "Vista". Creo que podría funcionar de esta forma.

Saludos!

Muy buen articulo Mariano yo diria buenisimo!!!

Muchas gracias por hacer estos artículos, justo estaba buscando un Token personalizado y Custom Token me viene perfecto, realmente creo estos módulos custom son buenísimos, gracias nuevamente.

excelente explicacion

Aunque no soy tan expero en php, tambien he echado mano de los custom una que otra vez... que el spagueti volador protega al barbudo de Stallman por haber hecho posible todo esto.

SEO London

Enviar un comentario nuevo

¿Dudas, comentarios?. Anímese, y de su opinión sobre material. Procure cuidar su ortografía y publicar algo relacionado con el contenido.

Por consultas generales, utilice los Foros de Drupal Hispano. Los comentarios no relacionados con el contenido seran borrados.

Seguro que usted no se llama anónimo :)
El contenido de este campo se mantiene privado y no se mostrará públicamente.
Si posee un sitio web puede indicarlo en este campo
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><del>
  • Saltos automáticos de líneas y de párrafos.
  • Usted puede agregar código (genérico) utilizando etiquetas <code>...</code> o <?php ... ?> para código PHP resaltado.

Más información sobre opciones de formato

CAPTCHA
Esta pregunta es para asegurarnos de que usted es humano. Y que sabe sumar por lo menos un poco :)
12 + 6 =
Resuelva este simple problema matemático e introduzca el resultado. Por ejemplo para 1+3, responda 4.