Итак, вы ищете способ изменить URL-адрес ссылки в процессе написания? Я недавно изучил это и был удивлен тем, сколько охоты требовалось.
Я пошел с hook_url_outbound_alter( &$path, &$options, $original_path )
, который позволяет вам изменять ссылки URL, которые пишутся системой URL Drupal.
Существует также hook_url_inbound_alter( &$path, $original_path, $path_language )
, что может быть лучше, поскольку он включает в себя определенный язык пути - это зависит от того, где вы хотите, чтобы изменение произошло. Я лично считаю hook_url_outbound_alter()
надежным и простым в работе - он меняет все соответствующие URL-адреса по мере их написания, и, используя $ options, вы можете надежно добавлять и редактировать строки запроса (...? Query = string & foo = bar) и хеш-фрагменты (... #someId).
Измените $ path, и он обновит фактический путь, который записан в URL href. Конечно, это работает на всех ссылках, поэтому вы должны начать с проверки того, что это ссылка, которую вы хотите изменить.
Он выполняется до наложения псевдонимов, поэтому будет основан на настройках по умолчанию в Drupal. Чтобы привести два очень упрощенных примера, если вы хотите изменить только пути таксономии:
function some_module_url_outbound_alter( &$path, &$options, $original_path ) {
if(strpos($original_path, 'taxonomy/term') === 0) {
// do stuff
}
}
И / или если вы хотите, чтобы он запускался только на определенных страницах, например, на страницах редактирования узла:
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
}
}