Então, você está procurando uma maneira de modificar um URL de link enquanto ele está sendo gravado? Eu examinei isso recentemente e fiquei surpreso com a quantidade de caça necessária.
Eu fui com hook_url_outbound_alter( &$path, &$options, $original_path )
, o que permite alterar os URLs de link que estão sendo gravados pelo sistema de URL Drupal.
Há também o hook_url_inbound_alter( &$path, $original_path, $path_language )
que pode ser melhor, pois inclui o idioma específico do caminho - depende de onde você deseja que a alteração ocorra. Pessoalmente, acho hook_url_outbound_alter()
confiável e simples de trabalhar - ele altera todos os URLs apropriados à medida que são escritos e, usando as opções $, você pode adicionar e editar de forma confiável as strings de consulta (...? Query = string & foo = bar) e franquias de hash (... #someId).
Modifique $ path e ele atualizará o caminho real que é gravado no URL href. Obviamente, isso é executado em todos os links, portanto, você deve começar verificando se é um link que deseja modificar.
Ele é executado antes do alias, por isso será baseado nos padrões do Drupal. Para dar dois exemplos muito simplistas, se você deseja modificar apenas caminhos de taxonomia:
function some_module_url_outbound_alter( &$path, &$options, $original_path ) {
if(strpos($original_path, 'taxonomy/term') === 0) {
// do stuff
}
}
E / ou se você deseja que ele seja executado apenas em páginas específicas, por exemplo, páginas de edição de nós:
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
}
}