Отже, ви шукаєте спосіб змінити URL-адресу посилання під час написання? Я нещодавно переглянув це і здивувався, скільки потрібно полювання.
Я пішов із тим hook_url_outbound_alter( &$path, &$options, $original_path )
, що дозволяє змінювати URL-адреси посилань, які записує система Drupal URL.
Існує також hook_url_inbound_alter( &$path, $original_path, $path_language )
, що може бути краще, оскільки воно включає конкретний мовний контур шляху - це залежить від того, де ви хочете внести зміни. Я особисто вважаю hook_url_outbound_alter()
надійною і простою роботу - вона змінює всі відповідні URL-адреси в міру написання, і за допомогою параметрів $ ви можете надійно додавати та редагувати рядки запитів (...? 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
}
}