Więc szukasz sposobu na modyfikację adresu URL linku podczas jego tworzenia? Niedawno przyjrzałem się temu i byłem zaskoczony, jak wiele polowań jest wymaganych.
Poszedłem z hook_url_outbound_alter( &$path, &$options, $original_path )
, co pozwala ci zmieniać adresy URL linków, które są pisane przez system URL Drupal.
Jest też coś hook_url_inbound_alter( &$path, $original_path, $path_language )
, co może być lepsze, ponieważ zawiera specyficzny język ścieżki - zależy to od tego, gdzie chcesz dokonać zmiany. Osobiście uważam, że jest hook_url_outbound_alter()
niezawodna i prosta w obsłudze - zmienia wszystkie odpowiednie adresy URL podczas ich pisania, a za pomocą opcji $ możesz niezawodnie dodawać i edytować ciągi zapytań (...? #someId).
Zmodyfikuj ścieżkę $, a zaktualizuje rzeczywistą ścieżkę zapisaną w href adresu URL. Oczywiście działa to na wszystkich linkach, więc zacznij od sprawdzenia, czy to link, który chcesz zmodyfikować.
Jest wykonywany przed aliasingiem, więc będzie oparty na domyślnych ustawieniach Drupala. Aby podać dwa bardzo uproszczone przykłady, jeśli chcesz zmodyfikować tylko ścieżki taksonomii:
function some_module_url_outbound_alter( &$path, &$options, $original_path ) {
if(strpos($original_path, 'taxonomy/term') === 0) {
// do stuff
}
}
I / lub jeśli chcesz, aby działał tylko na określonych stronach, np. Na stronach edycji węzłów:
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
}
}