Нужно было реализовать на странице с поисковым фильтром блок с линками на страницы выдачи. Это сделал, встал вопрос о ЧПУ: нужно чтобы все ссылки, ведущие на выдачу фильтра имели вид ЧПУ, т.е. вместо
drupal-test/catalog/kabel?razdel_cable%5B%5D=2
в адресной строке отображался адрес, в данном случае, такой:
drupal-test/catalog/kabel/razdel/2
Сам модуль фильтра какой-то умник спрятал где-то внутри ядра, поэтому поискав его некоторое время, решил бросить это дело. Вместо этого я научил друпал понимать нужный формат ссылок, заюзав хук
hook_url_inbound_alter
примерно так:
function semantic_search_url_inbound_alter(&$path, $original_path, $path_language) {
$parts = explode('/', $original_path);
if($parts[1] == 'kabel' && !empty($parts[2]))
{
if($parts[2] == 'razdel')
{
$_GET['razdel_cable[]'] = $parts[3];
$path = 'catalog/kabel';
}
elseif($parts[2] == 'type')
{
$_GET['type_of_cables[]'] = $parts[3];
$path = 'catalog/kabel';
}
}
}
Дело в том, что переходя по ссылке нужного вида, друпал редиректит на страницу фильтра с "не ЧПУ" адресом.
Есть ли какой-то хук, или может другой способ сменить отображение ссылок в фильтре? Или как-то может можно алиас нужный создавать программно (если он еще не существует)
RewriteRule использовать не хочется, т.к. сайт криворукий и ссылок достаточно много в фильтре, да и фильтры на некоторых страницах используются разные какого-то хрена.
версия друпала - 7.22