Linkit
Proporciona una experiencia de enlace enriquecida para enlaces internos y externos con editores mediante un campo de autocompletado.
linkit
Install
composer require 'drupal/linkit:^7.0'
Overview
Linkit proporciona una interfaz mejorada para crear enlaces internos y externos dentro de editores WYSIWYG mediante un campo de autocompletado. El módulo soporta nodos, usuarios, términos de taxonomía, archivos, comentarios y soporte básico para todos los tipos de entidad que definen una plantilla de enlace canónico.
El módulo funciona a través de perfiles configurables que definen qué plugins de coincidencia usar para generar sugerencias de autocompletado. Cada perfil puede tener múltiples coincidencias configuradas con diferentes ajustes, permitiendo un control detallado sobre qué contenido aparece en las sugerencias de enlaces.
Linkit se integra con CKEditor 5 para reemplazar el diálogo de enlace estándar con una versión mejorada que incluye funcionalidad de autocompletado. Cuando los usuarios escriben en el campo de enlace, Linkit consulta las coincidencias configuradas y muestra sugerencias relevantes con metadatos como tipo de contenido, fecha de creación e información del autor.
El módulo incluye un filtro de formato de texto que transforma las referencias de entidad (almacenadas en formato entity:type/id) en URLs reales cuando el contenido se renderiza, asegurando que los enlaces se mantengan actualizados incluso cuando los alias de URL cambien.
Features
- Enlace con autocompletado en editores WYSIWYG usando perfiles personalizables
- Múltiples coincidencias integradas para nodos, usuarios, archivos, términos de taxonomía, correos electrónicos, URLs externas, página principal y formularios de contacto
- Coincidencia genérica de entidades con derivador automático para todos los tipos de entidad con plantillas de enlace canónico
- Visualización configurable de metadatos con soporte de tokens para cada tipo de entidad en las sugerencias de autocompletado
- Opciones de filtrado y agrupación por bundle para coincidencias de entidades
- Sistema de sustitución de URL para controlar cómo se generan las URLs de entidades (canónica, URL directa de archivo, URL de archivo de media)
- Integración con CKEditor 5 con diálogo de enlace mejorado
- Widget de campo Linkit para campos de enlace con funcionalidad de autocompletado
- Formateador de campo Linkit para sustitución adecuada de URL al renderizar enlaces
- Filtro de formato de texto Linkit para convertir referencias de entidad a URLs actuales
- Soporte para filtrado de contenido publicado/no publicado en sugerencias
- Soporte para filtrado de usuarios basado en roles
- Filtrado por extensión de archivo y opciones de visualización de miniaturas de imágenes
- Población automática del atributo title desde las etiquetas de entidad
- Arquitectura extensible y alterable para coincidencias y sustituciones personalizadas
- Preservación de query y fragmentos en enlaces
Use Cases
Creación de contenido enriquecida
Los editores de contenido pueden encontrar y enlazar rápidamente a contenido existente escribiendo unos pocos caracteres. El autocompletado muestra títulos de contenido, tipos, fechas de creación y autores, facilitando identificar el contenido correcto para enlazar sin salir del editor.
Enlace a archivos y media
En lugar de copiar URLs de archivos manualmente, los editores pueden buscar archivos por nombre y crear enlaces directamente al archivo. Para entidades de media, la sustitución puede configurarse para enlazar al archivo real en lugar de la página de media.
Gestión de contenido multi-sitio o multi-idioma
Linkit maneja correctamente el contenido traducido mostrando sugerencias en el contexto del idioma actual y genera URLs que funcionan con alias de ruta en cualquier idioma.
Enlaces controlados por rol de usuario
La coincidencia de usuario puede configurarse para mostrar solo usuarios con roles específicos, útil para crear enlaces a perfiles de personal en una intranet o sitio público.
Creación de enlaces de correo electrónico
Cuando los editores escriben una dirección de correo electrónico, Linkit sugiere automáticamente crear un enlace mailto:, agilizando el proceso de añadir enlaces de correo electrónico al contenido.
Autocompletado de campo de enlace
Usar el widget de Linkit en campos de enlace proporciona la misma experiencia de autocompletado fuera de editores WYSIWYG, útil para enlaces de menú, botones de llamada a la acción o cualquier campo de enlace.
Mantenimiento de integridad de URL
Los enlaces creados a través de Linkit almacenan UUIDs de entidad, así que incluso si los alias de ruta cambian, el filtro de Linkit asegura que los enlaces siempre se resuelvan a la URL correcta y actual cuando el contenido se muestra.
Tips
- Usar metadatos descriptivos en la configuración de coincidencias con tokens como '[node:content-type:name] by [node:author]' para ayudar a los editores a identificar el contenido
- Crear múltiples perfiles para diferentes casos de uso - uno para enlace general de contenido, otro restringido a tipos de contenido específicos
- Establecer límites de resultados apropiados para mejorar el rendimiento en sitios con grandes cantidades de contenido
- El orden de las coincidencias en los perfiles determina el orden de las sugerencias - colocar los tipos de contenido más comúnmente enlazados primero
- Usar agrupación por bundle para organizar sugerencias al enlazar a tipos de entidad con muchos bundles
- Habilitar la población automática de texto de enlace en el widget de Linkit para acelerar la edición de contenido al usar campos de enlace
- Asegurarse de que el perfil del formateador de Linkit coincida con el perfil del widget para un manejo consistente de URL en campos de enlace
Technical Details
Admin Pages 6
/admin/config/content/linkit
Lista todos los perfiles de Linkit con sus descripciones. Desde aquí puedes crear, editar o eliminar perfiles, y acceder a la gestión de coincidencias para cada perfil.
/admin/config/content/linkit/add
Crear un nuevo perfil de Linkit que define cómo se generan las sugerencias de autocompletado para enlaces.
/admin/config/content/linkit/manage/{linkit_profile}
Editar la configuración básica de un perfil de Linkit existente incluyendo su nombre y descripción.
/admin/config/content/linkit/manage/{linkit_profile}/matchers
Configurar las coincidencias que definen cómo se generan las sugerencias de autocompletado para este perfil. Las coincidencias pueden reordenarse arrastrando y soltando. El orden determina el orden de las sugerencias en la lista de autocompletado.
/admin/config/content/linkit/manage/{linkit_profile}/matchers/add
Seleccionar un plugin de coincidencia para añadir a este perfil. Las coincidencias disponibles incluyen coincidencias específicas de entidad (Contenido, Usuario, Archivo, Término de taxonomía, etc.) y coincidencias especiales (Correo electrónico, URL externa, Página principal).
/admin/config/content/linkit/manage/{linkit_profile}/matchers/{plugin_instance_id}
Configurar los ajustes para una instancia de coincidencia específica. Los ajustes varían según el tipo de coincidencia pero comúnmente incluyen configuración de metadatos, restricciones de bundle y ajustes de límite.
Permissions 1
Hooks 2
hook_linkit_matcher_alter
Alterar las definiciones de todos los plugins de coincidencia de Linkit.
hook_linkit_substitution_alter
Alterar las definiciones de todos los plugins de sustitución de Linkit.
Troubleshooting 5
Habilitar el filtro 'Linkit URL converter' en la configuración del formato de texto. Asegurarse de que se ejecute antes del filtro 'Limit allowed HTML tags'.
Si se usa 'Limit allowed HTML tags', añadir los atributos data-entity-type, data-entity-uuid y data-entity-substitution a la configuración de etiqueta <a> permitida.
Verificar que las coincidencias estén configuradas en el perfil de Linkit seleccionado. Comprobar que el perfil esté correctamente seleccionado en la configuración de CKEditor del formato de texto.
Editar la configuración de la coincidencia de Contenido y habilitar 'Include unpublished nodes'. Los usuarios también deben tener permiso para ver contenido no publicado.
Habilitar la opción 'Automatically set the title attribute' en la configuración del filtro de Linkit. Si se usan restricciones HTML, asegurarse de que el atributo title esté permitido en las etiquetas <a>.
Security Notes 3
- El endpoint de autocompletado respeta el acceso a entidades - los usuarios solo ven entidades que tienen permiso para ver
- La visibilidad de contenido no publicado en las sugerencias sigue el sistema de permisos estándar de Drupal
- Los UUIDs de entidad en los enlaces almacenados no exponen IDs internos a los usuarios finales cuando se filtran correctamente