Drupal

Todo lo que hay que saber sobre el módulo Features de Drupal

Hoy os hacemos una breve presentación del módulo Features, una herramienta muy potente que nos permite reaprovechar funcionalidades entre todos nuestros proyectos con Drupal.

Drauta agencia digitalDrauta

Todo lo que hay que saber sobre el módulo Features de Drupal.

¿Qué es el módulo de Drupal Features?

El módulo Features nació con el objetivo de poder versionar y reaprovechar funcionalidades en proyectos diferentes. En efecto, el módulo nos permite exportar conjuntos de entidades de Drupal (content types, taxonomías, views, etc.) a código PHP en forma de “módulos de features”. Además, como las features son código PHP, las podemos versionar con herramientas como Git para poder gestionar mejor los cambios que se van haciendo a lo largo del tiempo. Normalmente, para crear una feature, se quitaban un conjunto de entidades, las cuales juntas satisfacen un caso de uso. No obstante, se recomienda no abusar de este módulo ya que podríamos acabar en un infierno de dependencias circulares entre features que nos impediría desactivarlas.

Una vez tengamos creada una feature, la podremos copiar a un nuevo proyecto y activarla allí. Automáticamente nos creará los content types, vistas, … que estén configuradas en la misma. Por tanto, nos habremos ahorrado un montón de faena. Cabe tener en cuenta que si vamos haciendo cambios en las entidades “featuritzadas” mediante la administración de Drupal, veremos que nuestra feature quedará en estado “overriden”. Entonces tendremos dos opciones para que vuelvan al estado “default”:

  • Realizar una revert sobre la feature: Con esta operación desharemos todos los cambios que hagamos hecho manualmente con la administración de Drupal y se restablecerá todo tal y como marca el código PHP de la feature (Code => Database).
  • Realizar un update/recreate sobre la feature: Con esta opción se sobreescribirá la feature según la configuración que haya en aquel momento en la base de datos (Database => Code).

Por otra parte, aunque no fue diseñado con este objetivo, cabe destacar que mucha gente utiliza este módulo como una herramienta de despliegue entre entornos de desarrollo y de producción. Esto lo hacen para que de esta manera consigan superar el principal problema de Drupal: el contenido y la configuración de las entidades contenedoras se guardan en base de datos de forma revuelta. No obstante, tenemos que tener en cuenta que no es la herramienta más adecuada para este propósito ya que nos podemos encontrar con múltiples inconvenientes derivados de este uso. Os ponemos dos casos de ejemplo:

  • Caso 1: Al desactivar una feature no se borran los tipos de contenido automáticamente. Ver esta incidencia.
  • Caso 2: Después de hacer unos cambios a una feature (a un tipo de contenido le hemos eliminado un campo y hemos añadido uno) y de copiarla a un nuevo entorno, veremos que el nuevo campo se ha añadido, pero el campo que hemos borrado continua creado. Ver esta incidencia.

Links de interés:

¿Quieres empezar un nuevo proyecto con nosotros?

¿Necesitas servicios para tu web? Descubre como te podemos ayudar y no dudes en contactar con nosotros.