Pasar al contenido principal
Crear un token personalizado para Drupal 8

Crear un token personalizado para Drupal 8

Crear un token personalizado para Drupal 8

2 minutos

¿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:

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.

Artículos relacionados

Comentarios

Añadir nuevo comentario

Este campo no se mostrará públicamente.