From 8d82082095cbeae1556b8642bc176003e0bcb4c6 Mon Sep 17 00:00:00 2001 From: Phil Frilling <pfrilling@oomphinc.com> Date: Mon, 17 Feb 2025 09:50:45 -0500 Subject: [PATCH] Added a hook to alter the filter options for double references --- double_reference.module | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 double_reference.module diff --git a/double_reference.module b/double_reference.module new file mode 100644 index 0000000..2b5b56e --- /dev/null +++ b/double_reference.module @@ -0,0 +1,39 @@ +<?php + +/** + * @file + * double_reference.module. + */ + +declare(strict_types=1); + +use Drupal\field\FieldStorageConfigInterface; + +/** + * Implements hook_field_views_data_views_data_alter(). + */ +function double_reference_field_views_data_views_data_alter( + array &$data, + FieldStorageConfigInterface $field +): void { + // Guard the field type. + if ($field->getType() !== 'double_reference') { + return; + } + + $fieldName = $field->getName(); + $targetType = $field->getSetting('target_type'); + $arTargetType = $field->getSetting('ar_target_type'); + + // Change the target_type filter to use the entity reference filter. + $data["{$field->getTargetEntityTypeId()}__{$fieldName}"]["{$fieldName}_target_id"]['filter']['id'] = match($targetType) { + 'taxonomy_term' => 'taxonomy_index_tid', + default => 'entity_reference', + }; + + // Change the ar_target_type filter to use the entity reference filter. + $data["{$field->getTargetEntityTypeId()}__{$fieldName}"]["{$fieldName}_ar_target_id"]['filter']['id'] = match($arTargetType) { + 'taxonomy_term' => 'taxonomy_index_tid', + default => 'entity_reference', + }; +} -- GitLab