Es común enfrentar en Drupal complicaciones a la hora de añadir filtros que filtren por campos referenciados a otros contenidos. Por suerte este post aporta algunas soluciones frente a esta situación.
Campo único

Para crear un filtro expuesto para buscar por el título de un campo que hace referencia a otro contenido hay que crear una relación en la vista haciendo click en "Relaciones". Luego se seleccionará el campo deseado, es importante que se seleccione el campo "desde" o "from".
Al añadir el filtro por el título hay que exigir la relación con el campo.

Con esto ya estaría funcionando el filtro para filtrar por contenidos referenciados.
Campo múltiple
El problema está en que si ese campo es múltiple, debido a la relación, se van a multiplicar el mismo contenido N veces (por cada entidad referenciada) en el listado. Para evitar esto, se podría usar algún módulo externo, pero en este caso, si el portal está actualizado a la última versión (drupal 10.4 o superior) se puede aplicar la siguiente solución. Para más información sobre este problema consultar la siguiente issue.
- Lo primero es tener un módulo custom donde meter un hook custom o generarlo con el comando (en el caso de tener drush):
drush gen module
- Luego hay que añadir el siguiente hook (o bien en el .module o creando un hook en el directorio src/Hooks/CustomHooks.php
/** * Implements hook_views_data_alter(). */ function CUSTOM_MODULE_views_data_alter(&$data) { // Use entity reference for the field 'field_test_target'. $field_name = '#field_name'; $data['node__' . $field_name][$field_name . '_target_id']['filter']['id'] = 'entity_reference'; }
- Recordad que esto es un ejemplo de como poner el código, esto se puede implementar tanto con Hux como con Atributos nativos.
- Esto se puede transformar para convertirlo en un Array y poder transformar como tantos filtros se requieran.
- Ahora toca añadir el filtro, es importante que tenga el mismo nombre de campo que se ha puesto en el módulo. Una vez añadido hay que clicar en configuración para seleccionar por que tipo de contenido se va a filtrar.
Con estos pocos pasos se pueden hacer estos filtros bastante útiles en Drupal y que mejorarán bastante la experiencia respecto las soluciones aportadas por otros módulos de Drupal.