Related By Terms para Drupal 8

Ayer publiqué la primera version estable de la rama 8.x de Related By Terms. La funcionalidad es prácticamente la misma que tiene la versión de Drupal 7, pero como podréis imaginar, he tenido que reescribir prácticamente todo el módulo. Lo único que se ha salvado, y de milagro es la query que estaba utilizando para obtener los nodos relacionados.

Para refrescar la memoria, este módulo nos da:

  • Un bloque que podemos colocar donde queramos que mostrará una lista de nodos relacionados con el que estamos viendo, ordenados por el número de coincidencias en términos de taxonomías.
  • Una página de configuración en el panel de administración donde podemos configurar el número de relacionados a mostrar y el Display mode que se usará para pintarlos.
  • En el caso de la versión para Drupal 8, un servicio que puede ser usado por otros módulos para obtener simplemente la lista de relacionados, para procesarlos de la manera más conveniente.

Por supuesto, tengo instalado el módulo en este sitio, es el bloque que podéis ver en la barra lateral derecha debajo del título 'Relacionado'.

Esta es la lista de los nuevos y flamantes componentes del módulo:

relatedbyterms/LICENSE.txt
relatedbyterms/README.md
relatedbyterms/relatedbyterms.info.yml
relatedbyterms/relatedbyterms.install
relatedbyterms/relatedbyterms.links.menu.yml
relatedbyterms/relatedbyterms.module
relatedbyterms/relatedbyterms.permissions.yml
relatedbyterms/relatedbyterms.routing.yml
relatedbyterms/relatedbyterms.services.yml
relatedbyterms/config/install/relatedbyterms.settings.yml
relatedbyterms/config/schema/relatedbyterms.schema.yml 
relatedbyterms/src/Form/RelatedByTermsForm.php
relatedbyterms/src/Plugin/Block/RelatedByTermsBlock.php
relatedbyterms/src/RelatedByTermsService.php
relatedbyterms/src/RelatedByTermsServiceInterface.php

Como podéis ver si habéis dado un vistazo al código de la versión 7, aquí hay bastante chicha para un módulo tan sencillo. Vamos a ver qué hace cada cosa:

  • Los archivos README.md y LICENSE.txt no creo que necesiten mucha explicación.
  • Archivo info.yml: Información básica del módulo.
  • El fichero install contiene una simple inicialización de permisos.
  • links.menu.yml: Define el elemento del menú de administración para acceder a la configuración del módulo.
  • En el archivo .module tan solo hay una implementación de hook_help() para mostrar un texto de ayuda.
  • permissions.yml tiene la definición de un permiso especial para acceder a la configuración.
  • routing.yml define una ruta para la página de administración, le asigna una clase de control para crear el formulario (RelatedByTermsForm) y comprueba que el usuario tenga el permiso necesario para acceder.
  • services.yml sirve para declarar un nuevo servicio relatedbyterms.manager, y le asigna una clase de control, RelatedByTermsService. Este servicio puede ser utilizado por otros módulos para obtener una lista de nodos relacionados a partir de un Nid.
  • Luego tenemos un directorio install, que guarda los archivos de configuración del módulo.
  • Y por fin en el directorio src, encontramos:
    • RelatedByTermsForm: Controla el formulario de administración del módulo.
    • RelatedByTermsBlock: Para definir el bloque que va a mostrar los contenidos relacionados.
    • RelatedByTermsServiceInterface: Interfaz para la definición de los métodos del servicio.
    • RelatedByTermsService: Clase que define el servicio. Esta clase contiene la lógica de negocio del módulo, y puede ser cargado desde otros módulos.

Espero que lo probéis. Cualquier comentario, peticiones, o si veis que he metido la pata en algún sitio, dejad un comentario, poneros en contacto conmigo, o mejor aún, crear un ticket en Drupal.org para el módulo.

Saludos