С программной точки зрения вы всегда можете использовать ловушки hook_url_inbound_alter () и hook_url_outbound_alter () для этого.
Вы можете попробовать запросить параметры к модулю URL или, если вы используете Search API и Facets , вы можете использовать Facet API Pretty Paths .
Вы также можете преобразовать свое представление, чтобы использовать аргументы в вашем пути и использовать модуль Redirect .
Помимо вышесказанного, простого способа добиться этого не существует, поскольку в Drupal 8 все еще есть ожидающая функция; см. Разрешить строки запроса в псевдонимах URL .
Когда вы используете панели, которые используют представления и, например, лучше экспонированные фильтры, вы можете сделать несколько таких хаков, как (пример URL: / panel_url? Category = 123):
/**
* Implements hook_url_inbound_alter().
*/
function foo_url_outbound_alter(&$path, &$options, $original_path) {
if (arg(0) == 'panel_url') {
// Convert URL like: /panel_url?category=29 into /panel_url/term_name (SEO friendly)
$path_info = parse_url($path);
switch (@$path_info['path']) {
case 'panel_url/term_name':
case 'panel_url/term_name2':
$path = 'panel_url/all'; // Convert loopy urls into base url
}
if (strpos($path, '?category=') !== FALSE) { // Convert term id into human name
list(, $tid) = explode('=', current(explode('&', $path_info['query']))); // get tid from URL
$term_name = strtolower(taxonomy_term_load((int)$tid)->name);
$path = '/panel_url' . '/' . $term_name; // See also: $path_info['path']
}
}
}
Для получения дополнительной информации см. Раздел Передача аргумента из URL-адреса на панели в панель просмотра или блок .
Наконец, вы можете использовать hook_menu () для определения ваших собственных обратных вызовов меню и программной загрузки вашего представления.