Crear una función de formato en Drupal 7

Cuando creamos un módulo o un elemento específico que no tiene un formato que nos convenza podemos crear una función o una plantilla. La gran ventaja de esto es que será reutilizable y podremos conseguir que todos los elementos de ese tipo tengan la misma apariencia, pero eso no es todo, ya que permitiremos a los demás programadores que la utilicen en sus trabajos. Esto se hace con el hook_theme.

Utilizar una plantilla

Una de las formas de hacerlo es definir un archivo de plantilla. Este archivo podrá ir en un theme o en un módulo y podrá ser sobreescrito, de tal forma que se pueda cambiar su visualización copiandolo en otro módulo o theme sin tener que modificar su código original. Esto resulta fundamental porque así si hay una actualización de la plantilla original no vamos a perder nuestras modificaciones.

En primer lugar vamos a definir el nombre del elemento y el nombre de su plantilla (que perfectamente podrían tener el mismo valor):

 

Observamos que el nombre que le hemos añadido una propiedad denominada ‘template’ que define que la plantilla donde estará el código HTML para visualizar el elemento se llamará ‘elemento1.tpl.php’. Esta plantilla mostrará una serie de valores mediante PHP, que serán distintos para cada elemento. El nombre de estas variables coincide que las que hemos añadido en el vector ‘variables’, es decir, dispondremos de las variables ‘$parametro1’ y ‘$parametro2’. La apariencia de la plantilla podría ser, por ejemplo, esta:

 

Utilizar una función

Pongamos el caso de que queremos hacerlo mediante una función porque nos resulta más cómodo que tener que estar creando plantillas. En ese caso nuestro hook_theme debería ser así:

 

Puesto que no hemos definido plantilla, deberemos crear la función por defecto para mostrar la salida del elemento2. Esta función podría ser algo parecido a esto:

 

Si quisiéramos cambiarla desde otro módulo o theme, sólo tendríamos que copiar esa función a los archivos de nuestro nuevo módulo o al archivo template.php de nuestro nuevo theme y cambiarle el nombre para que quedara como minuevomodulo_elemento2 o minuevotheme_elemento2. Esa nueva función podríamos modificarla usando los mismos parámetros y sobreescribiría la salida de la función original.

Utilizar las plantillas o funciones de formato

Para poder hacer uso de ellas y dar formato a los elementos que queramos, la llamada sería de la misma forma lo hiciéramos con una plantilla o con una función:

Plantillas VS Funciones

Las funciones son más rápidas que las plantillas, pero suelen representar una dificultad más alta para los diseñadores que están más habituados a trabajar con HTML. Por lo tanto, si estamos dispuestos a hacer el esfuerzo, lo mejor es siempre utilizar funciones. La diferencia en el rendimiento se notará cuanto mayor sea el número de veces que llamamos al formato de los elementos.

Recomendación

Cuando estéis trabajando con estas cosas, antes de pensar que algo no ha funcionado probad a borrar la caché. Muchas veces pensamos que algo que hemos hecho no funciona y lo deshacemos, sin caer en la cuenta de que quizás la caché nos esté jugando una mala pasada mostrando algo que no se corresponde con el código actual.

Experto en la Gestión de Proyectos Web basados en Drupal con más de 8 años de experiencia. Desarrollo Full Stack (Front-end, Back-end, Site-Builder).

No Replies to "Crear una función de formato en Drupal 7"