Linked Field
Permite enlazar cualquier campo a una URL de destino específica, soportando tanto destinos basados en campos como destinos personalizados con reemplazo de tokens.
linked_field
Install
composer require 'drupal/linked_field:8.x-1.7'
Overview
Linked Field es un módulo potente que añade la capacidad de convertir la salida de cualquier campo en un enlace clicable que apunta a un destino especificado. En lugar de modificar tu tema o crear formateadores de campo personalizados, simplemente puedes configurar los ajustes de visualización de cualquier campo para envolver su contenido en una etiqueta anchor.
El módulo funciona inyectando configuraciones de terceros en las configuraciones existentes de formateadores de campo. Al visualizar una entidad, Linked Field intercepta el proceso de renderizado del campo y envuelve la salida del campo con una etiqueta anchor. Este enfoque significa que funciona con cualquier tipo de campo y cualquier formateador sin requerir integración especial.
Los destinos se pueden configurar de dos maneras: seleccionando otro campo en la misma entidad (como un campo Link o un campo de texto que contenga una URL), o ingresando un destino personalizado que soporte el sistema de tokens de Drupal. Esto último permite enlaces dinámicos basados en propiedades de la entidad, como enlazar un campo a la URL canónica de la entidad usando el token [node:url].
El módulo también proporciona una interfaz de administración donde los administradores del sitio pueden definir qué atributos HTML están disponibles para la configuración. Por defecto, el módulo proporciona los atributos title, target, class y rel, pero se pueden añadir atributos adicionales a través de la interfaz de configuración basada en YAML.
Features
- Enlaza la salida de cualquier campo a una URL de destino sin necesidad de tematización personalizada o desarrollo
- Dos tipos de destino: Basado en campo (usa el valor de otro campo como Link o campos de texto) y Personalizado (soporta tokens)
- Soporte completo de tokens en destinos personalizados permitiendo URLs dinámicas como [node:url] o [node:field_custom_link:uri]
- Atributos HTML configurables incluyendo title, target, class y rel con soporte para atributos personalizados
- Procesamiento inteligente del DOM que envuelve nodos de texto en etiquetas anchor mientras maneja imágenes y pictures de forma especial
- Los atributos class y rel se fusionan y deduplican al combinar atributos existentes con valores configurados
- Opción de texto de enlace personalizado que reemplaza la salida original del campo con un valor procesado por tokens
- Filtrado XSS en toda la salida para prevenir vulnerabilidades de seguridad
- Integración con el módulo Token para un navegador de tokens en la interfaz de configuración
- Peso de módulo alto (100) asegura que se ejecute después de otros formateadores de campo para una modificación correcta de la salida
Use Cases
Enlazar un campo de imagen a un campo de URL personalizado
Tienes un tipo de contenido con un campo Image y un campo Link llamado 'URL Externa'. Quieres que al hacer clic en la imagen se navegue a la URL externa. Configura la presentación del campo Image: marca 'Enlazar este campo', selecciona Tipo: Campo, elige 'URL Externa' del menú desplegable de campos. Ahora la imagen estará envuelta en una etiqueta anchor que apunta a la URL del campo Link.
Enlazar un campo a la URL canónica de la entidad
Quieres que un campo de Título o Descripción enlace a la página completa del nodo. Configura la presentación del campo: marca 'Enlazar este campo', selecciona Tipo: Personalizado, ingresa '[node:url]' como destino. La salida del campo enlazará a la URL canónica del nodo.
Añadir clase CSS y atributo target a campos enlazados
Quieres que los campos enlazados se abran en una nueva pestaña con una clase CSS específica. En la sección Avanzado de los ajustes del campo enlazado, ingresa '_blank' para Target y 'external-link' para Class. El anchor generado incluirá estos atributos.
Crear un enlace de resumen usando tokens
En un modo de vista teaser, quieres que el resumen del body enlace al artículo completo con un atributo title personalizado. Configura el campo Body: habilita el enlace, usa '[node:url]' como destino personalizado, establece el atributo Title como 'Leer más sobre [node:title]'. El resumen tendrá un tooltip de enlace descriptivo.
Enlazar a una entidad relacionada
Tienes un Artículo con un campo Entity Reference a un perfil de Autor. Quieres enlazar la visualización del nombre del autor a su página de perfil. Usa el tipo de destino Personalizado con un token como '[node:field_author:url]' para enlazar a la URL canónica del autor referenciado.
Añadir atributos HTML personalizados
Tu sitio requiere atributos 'data-tracking' en los enlaces para analíticas. Ve a /admin/config/linked_field/config y añade un nuevo atributo en la configuración YAML: 'data-tracking: {label: ID de Seguimiento, description: Identificador de seguimiento de analíticas}'. Este atributo ahora aparecerá en todos los ajustes avanzados de Linked Field.
Tips
- Instala el módulo Token para un navegador de tokens conveniente en la interfaz de configuración
- Instala el módulo YAML Editor para resaltado de sintaxis al editar la configuración de atributos
- Usa tokens '[entity:url]' para enlazar a páginas canónicas de entidades - reemplaza 'entity' con el tipo real (node, user, taxonomy_term)
- Los atributos class y rel fusionan valores inteligentemente, así puedes combinar atributos existentes del campo con tus valores configurados
- Para campos link usados como destinos, el módulo preserva atributos como target del campo link y los fusiona con tus valores configurados
- La opción Text en los ajustes Avanzados reemplaza completamente la salida del campo con tu texto procesado por tokens - útil para enlaces 'Leer más'
- Prueba los reemplazos de tokens de forma aislada primero usando el navegador de tokens del módulo Token para asegurarte de que se resuelven correctamente
Technical Details
Admin Pages 1
/admin/config/linked_field/config
Página de configuración para gestionar los atributos HTML disponibles que se pueden establecer al enlazar campos. Los atributos se definen en formato YAML, cada uno con una etiqueta y descripción opcionales. Los atributos configurados aparecen en los ajustes del formateador de campo bajo la sección Avanzado.
Permissions 1
Hooks 4
hook_field_formatter_third_party_settings_form
Añade el formulario de configuración de Linked Field a todos los ajustes de formateadores de campo. Crea la casilla de verificación, la selección del tipo de destino, las entradas de destino de campo/personalizado y los campos de configuración de atributos.
hook_field_formatter_settings_summary_alter
Añade un resumen de la configuración de Linked Field al resumen del formateador de campo mostrado en Gestionar presentación. Muestra el destino, los atributos configurados y el texto personalizado si está establecido.
hook_entity_display_build_alter
Hook principal que procesa la salida de presentación de la entidad para aplicar el envoltorio de enlace. Itera a través de los campos, verifica los ajustes de Linked Field, resuelve destinos y envuelve la salida del campo en etiquetas anchor.
hook_help
Proporciona texto de ayuda para el módulo en la página de ayuda.
Troubleshooting 6
Los campos Link están en la lista negra porque ya generan etiquetas anchor. El módulo previene el doble envoltorio. En su lugar, usa las opciones de presentación nativas del campo Link o enlaza otros campos al valor del campo Link.
Solo ciertos tipos de campo pueden servir como destinos: link, string, list_float y list_string. Añade un campo de uno de estos tipos a tu tipo de contenido, o usa el tipo de destino Personalizado con tokens.
Asegúrate de que el módulo Token esté instalado para el navegador de tokens. Verifica que estás usando el formato correcto de token con corchetes. Verifica que el tipo de entidad coincida con el tipo de token (ej., [node:url] para nodos, [user:url] para usuarios).
Para rutas internas, añade el prefijo 'internal:/' (ej., 'internal:/about-us'). Las rutas relativas como '/about-us' o 'about-us' se convierten automáticamente, pero se recomienda el prefijo explícito internal:.
Verifica que los atributos estén definidos en la configuración del módulo en /admin/config/linked_field/config. Verifica que la sintaxis YAML sea válida. Los valores de atributos vacíos no se renderizan en la salida.
Linked Field tiene un peso de módulo alto (100) para ejecutarse después de otros módulos. Verifica si otro módulo o tema está sobrescribiendo la salida del campo después de que Linked Field la procesa. Limpia todos los cachés después de los cambios de configuración.
Security Notes 5
- Toda la salida se sanitiza a través de Xss::filterAdmin() para prevenir ataques XSS
- Las entidades HTML se codifican y decodifican correctamente durante la manipulación del DOM
- Los reemplazos de tokens usan el servicio seguro de tokens de Drupal
- La validación de URLs previene URLs malformadas o potencialmente peligrosas
- El módulo respeta el sistema de permisos de Drupal - solo los usuarios con 'administer linked_field' pueden modificar los atributos disponibles