Pasar al contenido principal

Creación de alias de URL mediante programación en Drupal

Hola, recientemente me encontré con un caso de uso peculiar: tuve que crear una lógica en la que el alias de URL cambia al seleccionar un término de taxonomía particular al que se hace referencia en un tipo de contenido en particular.

Digamos para simplificarlo, que tenemos dos tipos de urls dependiendo de las dos taxonomias posibles:

  • Taxonomía 1:  \nombre_taxonomía\node:id\node:title
  • Taxonomía 2:  \nombre_taxonomía\node:title

Ya habíamos hecho un patrón usando pathauto en nuestra web en Drupal 8, por tanto hemos de desactivar esta configuración del pathauto ya que ahora tendremos la lógica del alias de URL en nuestro custom_module.module . Vamos a utilizar un gancho, es decir, hook_Entity_TYPE_insert() o hook_Entity_TYPE_update(). Escoger el hook de insert o el de update depende de tu caso de uso en tu proyecto en concreto.

/**
* Implements hook_ENTITY_TYPE_insert().
*
*/
function my_custom_module_node_insert(NodeInterface $node){
}

En este enlace personalizado estamos utilizando el servicio path.alias.storage para declarar la ruta de la url.

$path = \Drupal::service('path.alias_storage')->save("/node/" . $nid, "/".$tax_name."/" . $nid.'/'. $title, "en");

Espero que esto ayude.