Vous cherchez donc un moyen de modifier une URL de lien au fur et à mesure de son écriture? J'ai étudié la question récemment et j'ai été surpris de voir combien de chasse était nécessaire.
J'y suis allé hook_url_outbound_alter( &$path, &$options, $original_path )
, ce qui vous permet de modifier les URL de lien qui sont écrites par le système d'URL Drupal.
Il y a aussi hook_url_inbound_alter( &$path, $original_path, $path_language )
, ce qui pourrait être mieux car il inclut la jauge spécifique du chemin - cela dépend de l'endroit où vous souhaitez que la modification ait lieu. Personnellement, je trouve hook_url_outbound_alter()
fiable et simple à utiliser - cela change toutes les URL appropriées au fur et à mesure qu'elles sont écrites, et en utilisant les options $, vous pouvez ajouter et modifier de manière fiable des chaînes de requête (...? Query = string & foo = bar) et des fractions de hachage (... #someId).
Modifiez $ path et cela mettra à jour le chemin réel qui est écrit dans l'URL href. Bien sûr, cela fonctionne sur tous les liens, vous devrez donc commencer par vérifier qu'il s'agit d'un lien que vous souhaitez modifier.
Il est exécuté avant l'aliasing, il sera donc basé sur les valeurs par défaut de Drupal. Pour donner deux exemples très simplistes, si vous souhaitez modifier uniquement les chemins de taxonomie:
function some_module_url_outbound_alter( &$path, &$options, $original_path ) {
if(strpos($original_path, 'taxonomy/term') === 0) {
// do stuff
}
}
Et / ou si vous souhaitez qu'il ne s'exécute que sur des pages particulières, par exemple les pages d'édition de nœuds:
function some_module_url_outbound_alter( &$path, &$options, $original_path ) {
$current_path = explode("/", current_path() );
if (count($current_path) >= 3 && $current_path[0] == "node" && $current_path[2] == "edit") {
// do stuff
}
}