@f_u_s_s
Любопытный кодер

Как задать формат url-адресам при переходе?

Нужно было реализовать на странице с поисковым фильтром блок с линками на страницы выдачи. Это сделал, встал вопрос о ЧПУ: нужно чтобы все ссылки, ведущие на выдачу фильтра имели вид ЧПУ, т.е. вместо
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
  • Вопрос задан
  • 182 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы