Ajout d'un paramètre à l'URL basé sur une valeur de champ

Est-il possible d'ajouter un code de suivi de campagne à l'URL demandée en se basant sur une valeur de champ spécifique sur le noeud lié ? J'essaie d'utiliser un service path_processor_outbound, mais il ne fonctionne pas tout à fait comme prévu et il fonctionne plutôt au hasard.

C'est le code que j'utilise.

function processOutbound($path, &$options = array(), Request $request = NULL, BubbleableMetadata $bubbleable_metadata = NULL) {if(isset($options['entity']) && $options['entity'] instanceof \Drupal\node\NodeInterface ) {
      $node = $options['entity'];

      if($node->bundle() == 'article') {
        $channel = $node->get('field_channel')->getValue();
        $promotions = array(10);
        $channel_value = reset($channel);
        $channel_id = $channel_value['target_id'];

        if(in_array($channel_id, $promotions)) {
          $options['query']['foo'] = 'bar';
        }
      }
    }
    return $path;
  }

J'ai le sentiment que cette approche est correcte pour les liens vers les nœuds générés sur le site (teasers sur la page d'accueil), mais elle n'ajoute pas de paramètres à la demande de page.

J'ai également envisagé d'ajouter des paramètres à l'alias du chemin, mais cela ne semble pas correct et le code JavaScript serait ajouté trop tard.

Forum :