Token
Proporciona una interfaz de usuario para explorar los tokens disponibles y añade tokens principales faltantes a la API de Token de Drupal.
token
Install
composer require 'drupal/token:8.x-1.16'
Overview
El módulo Token extiende el sistema de tokens del núcleo de Drupal de dos maneras significativas: proporciona una interfaz de usuario completa para explorar e insertar tokens, y añade muchos tokens útiles que faltan en el núcleo de Drupal.
El módulo incluye un explorador interactivo de árbol de tokens que muestra todos los tokens disponibles organizados por tipo en una jerarquía expandible. Este explorador soporta la funcionalidad de clic para insertar, permitiendo a los usuarios hacer clic en cualquier token para insertarlo automáticamente en campos de texto o editores WYSIWYG incluyendo CKEditor 5, TinyMCE y CodeMirror.
Además, el módulo proporciona tokens para información de la página actual, fecha y hora actual, URLs, arrays, valores aleatorios, tipos de contenido, enlaces de menú, menús, libros, mejoras de taxonomía, metadatos de archivos, roles de usuario y más. También añade tokens basados en campos para todos los campos de entidad e integra con el módulo Devel para mostrar los valores reales de tokens para cualquier entidad.
Features
- Explorador interactivo de árbol de tokens con jerarquía expandible/contraíble para descubrir tokens disponibles
- Funcionalidad de clic para insertar soportando múltiples editores: CKEditor 5, CKEditor, TinyMCE, CodeMirror y textareas nativos
- Tokens de página actual: título, URL, número de página, parámetros de cadena de consulta, idioma de interfaz, idioma de contenido
- Tokens de fecha actual con soporte para todos los formatos de fecha configurados
- Token de dirección IP del usuario actual
- Tokens de URL: ruta, URL relativa, URL absoluta, URL breve, URL sin alias, argumentos de URL
- Tokens de array para trabajar con datos de múltiples valores: primero, último, conteo, invertido, claves, unir con separador, acceso a valor específico
- Tokens aleatorios: números aleatorios y algoritmos de hash configurables
- Mejoras de nodo: fuente de traducción, registro de revisión, tipo de contenido, página de libro, enlace de menú
- Tokens de tipo de contenido: nombre, nombre de máquina, descripción, conteo de nodos, URL de edición
- Tokens de enlace de menú: ID, título, URL, padre, array de padres, raíz, menú, URL de edición
- Tokens de menú: nombre, nombre de máquina, descripción, conteo de enlaces, URL de edición
- Mejoras de taxonomía: fuente de traducción, URL de edición, array de padres, término raíz, nombre de máquina de vocabulario
- Tokens de archivo: nombre base, extensión, tamaño en bruto en bytes
- Tokens de usuario: URL de cancelación, URL de inicio de sesión único, array de roles de usuario
- Tokens de libro: título, autor, página raíz, página padre, array de padres
- Tokens de estilo de imagen: tipo MIME, tamaño de archivo, dimensiones, URI, URL
- Tokens de idioma: nombre, código de idioma, dirección, dominio, prefijo de ruta
- Servicio de mapeo de tipo de entidad a tipo de token para desarrolladores de módulos
- Integración con módulo Devel mostrando valores reales de tokens en páginas de entidad
- Comando Drush para limpiar caché de tokens
- Tokens de campo automáticos para todos los tipos de campo de referencia de entidad, texto y otros
Use Cases
Personalización de Plantillas de Correo Electrónico
Use el explorador de tokens para descubrir e insertar tokens como [current-user:display-name], [site:name] y [current-date:long] en plantillas de correo electrónico. La función de clic para insertar facilita añadir tokens sin memorizar su sintaxis exacta.
Patrones de Alias de URL con Pathauto
Al configurar patrones de URL de Pathauto, use el explorador de tokens para encontrar los tokens correctos para rutas específicas de tipo de contenido. Por ejemplo, use [node:content-type:machine-name]/[node:title] para crear estructuras de URL organizadas.
Generación Automatizada de Contenido
Aproveche tokens como [current-page:title], [current-page:url:absolute] y [current-user:mail] en flujos de trabajo automatizados, notificaciones o bloques de contenido dinámico.
Descubrimiento de Tokens para Desarrolladores
Use la integración del módulo Devel para ver los valores reales de tokens en cualquier página de entidad. Navegue a un nodo, haga clic en la pestaña Devel, luego Tokens para ver todos los tokens disponibles y sus valores resueltos para ese contenido específico.
Procesamiento de Tokens de Campos de Múltiples Valores
Use tokens de array para trabajar con campos de múltiples valores: [node:field_tags:first] para el primer valor, [node:field_tags:join:, ] para unir todos los valores con comas, o [node:field_tags:count] para mostrar el número de elementos.
Integración de Breadcrumb y Menú
Acceda a la jerarquía de menú usando tokens de menu-link: [node:menu-link:parents:join: > ] crea una ruta estilo breadcrumb, [node:menu-link:root:title] obtiene el título del elemento de menú de nivel superior.
Generación de Contenido Aleatorio
Use tokens aleatorios para generar identificadores únicos o romper caché: [random:hash:md5] crea un hash MD5 aleatorio, [random:number] genera un número entero aleatorio.
Manejo de Tokens Multilingües
Acceda a información de idioma con [current-page:interface-language:name] para el idioma actual de la interfaz o [current-page:content-language:langcode] para el idioma del contenido, útil en configuraciones de sitios multilingües.
Tips
- Use la integración de Devel para descubrir rápidamente qué tokens están disponibles para un contenido específico - simplemente habilite Devel y visite la pestaña Tokens de cualquier entidad.
- La función de clic para insertar del explorador de tokens funciona con la mayoría de editores WYSIWYG - solo asegúrese de que el campo de texto tenga el foco antes de hacer clic.
- Los tokens de array son poderosos para campos de múltiples valores: use :first, :last, :count, :join:{separador}, o :value:{clave} para acceder a valores específicos.
- El almacenamiento en caché de tokens mejora significativamente el rendimiento - recuerde limpiar la caché de tokens al desarrollar tokens personalizados.
- El constructor de árbol soporta una profundidad máxima de 9 niveles para prevenir recursión infinita con tipos de token autorreferenciales.
- Para tokens sensibles a la seguridad como URLs de inicio de sesión único, busque tokens 'restricted' que están ocultos por defecto en el explorador.
- Use [current-page:query:{clave}] para acceder a parámetros de consulta de URL dinámicamente en sus reemplazos de token.
Technical Details
Admin Pages 2
/token/tree
Endpoint AJAX que muestra un árbol interactivo de todos los tokens disponibles. Esta página típicamente se accede mediante llamadas AJAX desde diálogos de explorador de tokens incrustados en formularios a través de Drupal. Muestra tokens organizados por tipo en una jerarquía expandible con columnas de nombre, patrón de token y descripción. Soporta filtrado por tipos de token específicos mediante parámetros de consulta.
/token/flush-cache
Endpoint administrativo para limpiar la caché de información de tokens. Requiere el permiso 'flush caches'. Útil cuando se añaden o modifican tokens personalizados y necesitan ser actualizados.
Hooks 3
hook_token_info
Define tipos de token y tokens disponibles. El módulo Token implementa este hook para añadir muchos tokens faltantes del núcleo de Drupal incluyendo current-page, current-date, array, random, url, menu-link, content-type y más.
hook_tokens
Genera valores de reemplazo para tokens. El módulo Token implementa generación completa de tokens para todos los tipos de token que define, manejando referencias de entidad, fechas, URLs, arrays y más.
hook_token_info_alter
Altera definiciones de tipos de token y tokens. Puede usarse para modificar, añadir o eliminar tokens definidos por otros módulos.
Drush Commands 1
drush cache:clear token
Limpia la caché de información de tokens. Útil después de añadir tokens personalizados o cuando las definiciones de tokens han cambiado.
Troubleshooting 5
Asegúrese de que el módulo Token esté habilitado y que el formato de texto utilizado soporte el reemplazo de tokens. Algunos módulos requieren configuración específica para habilitar el procesamiento de tokens. Limpie la caché de tokens con 'drush cc token' si se añadieron tokens personalizados recientemente.
Limpie la caché de tokens en /token/flush-cache o vía 'drush cc token'. Verifique que los módulos que proporcionan los tokens esperados estén habilitados. Compruebe si los tokens están marcados como 'restricted' lo que los oculta por defecto.
Asegúrese de que el editor tenga el foco antes de hacer clic en un token. El módulo Token soporta CKEditor 5, CKEditor, TinyMCE y CodeMirror. Si usa un editor diferente, los tokens pueden necesitar copiarse manualmente.
El módulo Devel debe estar instalado y habilitado. El usuario debe tener el permiso 'access devel information'. El tipo de entidad debe tener una plantilla de enlace 'token-devel' definida.
Limpie la caché de tokens después de definir nuevos tokens. Asegúrese de que hook_token_info() devuelva un array estructurado correctamente. Compruebe si hay errores PHP en la definición del token. Verifique que el módulo que proporciona los tokens esté habilitado.
Security Notes 4
- Algunos tokens están marcados como 'restricted' y ocultos del explorador de tokens por defecto porque contienen información sensible (como URLs de inicio de sesión único o enlaces de cancelación de cuenta).
- El endpoint /token/flush-cache requiere el permiso 'flush caches' para prevenir limpieza de caché no autorizada.
- El endpoint AJAX del árbol de tokens requiere un token CSRF válido para prevenir ataques de falsificación de solicitud entre sitios.
- La pestaña de tokens de Devel requiere el permiso 'access devel information' y solo debería habilitarse en entornos de desarrollo.