Sie suchen nach einer Möglichkeit, eine Link-URL während des Schreibens zu ändern? Ich habe mich kürzlich damit befasst und war überrascht, wie viel Jagd erforderlich war.
Ich ging mit hook_url_outbound_alter( &$path, &$options, $original_path )
, mit dem Sie Link-URLs ändern können, die vom Drupal-URL-System geschrieben werden.
Es gibt auch hook_url_inbound_alter( &$path, $original_path, $path_language )
eine Möglichkeit, die möglicherweise besser ist, da sie die spezifische Sprache des Pfads enthält - dies hängt davon ab, wo die Änderung stattfinden soll. Ich persönlich finde es hook_url_outbound_alter()
zuverlässig und einfach, damit zu arbeiten - es ändert alle geeigneten URLs, während sie geschrieben werden, und mit $ options können Sie zuverlässig Abfragezeichenfolgen (...? Query = string & foo = bar) und Hash-Frangments (... #someId).
Wenn Sie $ path ändern, wird der tatsächliche Pfad aktualisiert, der in die URL href geschrieben wird. Dies läuft natürlich auf allen Links, daher sollten Sie zunächst überprüfen, ob es sich um einen Link handelt, den Sie ändern möchten.
Es wird vor dem Aliasing ausgeführt, sodass es auf den Drupal-Standardeinstellungen basiert. Um zwei sehr vereinfachende Beispiele zu nennen, wenn Sie nur Taxonomiepfade ändern möchten:
function some_module_url_outbound_alter( &$path, &$options, $original_path ) {
if(strpos($original_path, 'taxonomy/term') === 0) {
// do stuff
}
}
Und / oder wenn Sie möchten, dass es nur auf bestimmten Seiten ausgeführt wird, z. B. auf Seiten zum Bearbeiten von Knoten:
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
}
}