Crear un token personalizado para Drupal 8
¿Qué son los Tokens?
Los tokens son marcadores de posición que actúan como un sustituto de valores derivados mediante programación.
Drupal proporciona muchos tokens predeterminados, pero puede surgir un caso en el que necesitemos escribir nuestro propio token personalizado según nuestras necesidades.
Pasos para definir mi propio token
Crear un token personalizado implica dos partes importantes:
- Declarar el token (usando hook_token_info())
- Proporcionar valores para el token declarado. (usando hook_tokens())
Ejemplo de creación de tokens
Supongamos que necesitamos crear un token cuya funcionalidad sea establecer de forma automática la url para nuestra página de "términos y condiciones".
Lo primero que deberemos crear es la declaración de dicho token:
/**
* Implements hook_token_info().
*/
function my_custom_module_token_info() {
/* Añado un token para obtener la uri de los términos y condiciones */
$info = [];
$info['types']['my_custom_module_group'] = [
'name' => 'Custom Group',
'description' => t('My Custom Group')
];
$info['tokens']['my_custom_module_group']
['terms_and_conditions']['name'] = t('Terms and conditions');
return $info;
}
Con el código anterior hemos creado un grupo de "tokens" denominado my_custom_group. Dentro del mismo hemos creado un token con el nombre de máquina terms_and_conditions.
El siguiente paso será asignarle un valor al token creado:
use Drupal\Core\Render\BubbleableMetadata;
/**
* Implements hook_tokens().
*/
function my_custom_module_tokens(
string $type,
array $tokens,
array $data,
array $options,
BubbleableMetadata $bubbleable_metadata) {
$replacements = [];
if ($type == 'my_custom_module_group') {
if (isset($tokens) and (is_array($tokens))) {
foreach ($tokens as $name => $original) {
/* Busco el token por el nombre */
switch ($name) {
case 'terms_and_conditions':
/* Obtengo la uri de los términos y condiciones */
$replacements[$original] = getTermsAndConditionsUrl();
break;
}
}
}
}
return $replacements;
}
La función getTermsAndConditionsUrl() deberá devolver el valor que queremos asignar al token.
Cómo y dónde usar mi nuevo token
Vale, ya tengo creado mi token... ¿y ahora qué?... pues puedes usarlo como cualquier otro token de los que facilita Drupal. También podrás usarlo dentro de otros módulos como pathauto o metatag.
INFO: El contenido del artículo se adhiere a nuestros principios de ética editorial. Para notificar un error visita nuestro formulario de contacto.