La fecha de lanzamiento de Drupal 8 se acerca cada día (o quizás no), y tras el API freeze de Julio, las herramientas del núcleo empiezan a estar relativamente estables, aunque sujetas a bastantes cambios, sobre todo la parte de campos y entidades.
Es el momento de empezar a pensar en actualizar módulos que no requieran un excesivo uso de las nuevas API de entidades y campos. Es el caso del módulo Humans.txt que proporciona un fichero para atribuir y reconocer contribuciones en un determinado proyecto web. Más información y página oficial.
Nuevo fichero info en YAML
Los ficheros .info se han eliminado en favor de un nuevo fichero YAML basado en un componente Symfony, por lo que los nuevos ficheros serán .info.yaml. Para el caso del módulo Humans.txt, el nuevo fichero humanstxt.info.yaml queda como sigue:
name: Humans.txt
type: module
description: 'Generates a humans.txt file dynamically and allows you to edit it.'
package: Other
core: 8.x
configure: admin/config/search/humanstxt
La clave type: module es ahora obligatoria para diferenciar entre módulos, plantillas y perfiles de instalación. Change notice.
Variables como configuración (CMI)
La iniciativa CMI (Configuration Management Initiative) va a cambiar de forma drástica la forma de tratar la configuración en nuestros projectos Drupal. Se han identificado de forma diferenciada las partes de un sitio que son configuración (variables, campos, vistas, etc) y estos elementos ya no son tratados en base de datos sino en ficheros, de nuevo usando el formato YAML. Esto tiene grandes ventajas de cara a mover nuestra configuración de entorno a entorno y desde un punto de vista de código, tiene esta pinta:
En Drupal 7
variable_get('humanstxt_display_link', FALSE);
En Drupal 8
Drupal::config('humanstxt.settings')->get('display_link');
Tanto variable_get() como variable_set() dejan de existir para ser reemplazadas por Drupal::config() tampoco es necesario borrar las variables al desinstalar y variable_del() tampoco existe en Drupal 8. Para actualizar las variables de nuestros módulos, se debe utilizar update_variables_to_config() en un hook_update_N(). Por ejemplo:
function humanstxt_update_8001() {
update_variables_to_config('humanstxt.settings',array(
'humanstxt' => 'content',
'humanstxt_display_link' => 'display_link',
));
}
Nota: El nombre de las variables en el nuevo sistema no tiene porque incluir el nombre del módulo ya que está dentro del contexto de la configuración, que sí se debe marcar con el nombre del módulo, en este caso: humanstxt.settings.
Y finalmente, el fichero de configuración, humans.settings.yml, que debe estar en el directorio config del módulo:
content: ''
display_link: FALSE