rewrite url, hook_router...

Главные вкладки

Аватар пользователя xom940k xom940k 15 июня 2011 в 19:31

Всем привет.
На сайте, который у меня сдан, написан мною фильтр. Фильтр мудреный, потому реализовать его представлениями - не получилось. Хавает фильтр GET параметры и выплевывает контент. И вот тут нарисовался оптимизатор и говорит: а вот надо добавить в меню вот такой URL: http://blabla.ru/nyanya?brendid=47,48 и тд... Ну в общем понятно Smile Я в шаблоне сделал подстановку и теперь с некоторыми айдишниками выводится отдельные drupal page со своими мета и тайтлами. Вот только проблема: если юзер сотрет GET параметры - то фильтр не отработывает. И в меню не добавляется с GET параметрами. И URL Alias не создается с GET параметрами.
Как жить? Хочу хукнуть роутинг, но чето ничего не нашел, кроме custom_url_rewrite_outbound() and language_url_rewrite() - не хуки, которые drupal.org советует пихать в settings.php, чтобы до загрузки модулей отрабатывал. Но ведь это не друпально! Хочу хук Biggrin

Комментарии

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 15 июня 2011 в 21:31

"xom940k" wrote:
Хочу хукнуть роутинг, но чето ничего не нашел, кроме custom_url_rewrite_outbound() and language_url_rewrite() - не хуки, которые drupal.org советует пихать в settings.php, чтобы до загрузки модулей отрабатывал. Но ведь это не друпально! Хочу хук =D

в 7ке есть хуки.
а я у себя на блоге для всех нод нехуком .html в конец добавил. и нехуком пажинацию сделал page/123.html вместо page=132

Аватар пользователя xom940k xom940k 15 июня 2011 в 23:20

"Ильич Рамирес Санчес" wrote:
в 7ке есть хуки.

ага, я уже нагуглил модуль URL Alter, который в 7ке вшит в ядро. Вот только пока не получается чето из админки предсказуемого результата добиться. Наверно хук попробую завтра Smile
Если кто юзал модуль - черкните пару строк или лучше ссылочку на обзор. Если прежде разберусь - сам напишу тут Smile

Аватар пользователя xom940k xom940k 16 июня 2011 в 22:19

В общем ребята, полный П. Он о5 25. Я столкнулся с тем, что cms не может добавить пункт меню с path, которого нет в drupal: например front - есть, а "front?id=4" - нет... Он не может добавить алиас к пути "front?id=4", потому что пути нет! Теперь я юзаю хуки этого модуля - бред неработающий. Через админку попробовал напихать вот такой вот код, в место где он
PHP code for custom_url_rewrite_inbound():


<?php
if ($path == 'front') {
  
$result 'front?id=4';
}
?>

естественно без пхп - это я тут, для красоты... Ну кароче куча соплей он выдал мне. Причем работает ведь гад, подсовывает нужную страницу например вот:


<?php
if ($path == 'front') {
  
$result 'node/10';
}
?>

но ни в какую не хочет хавать с GET параметрами и при этом высылает наст на page not found & warning про header и тд...
Пичаль...
В общем будем решать задачу в лоб! Надо в меню впихать "path/to/something?id=5" - как это сделать???
Ну надо мне этот ID! Надо! Блок у меня хавает эти параметры.
ЗЫ: Не предлагать функцию arg(), потому что она противопоказана в этом случае: "path/to/something?id1=5&id2=6&id3=7" то есть когда много параметров, там в этом массиве потом ковырятся - ... Да и код не охото переписывать...

Аватар пользователя Crea Crea 16 июня 2011 в 22:31

Система меню в Друпале очень сложная, со множеством подводных камней и ограничений. Удачи в освоении Smile

Аватар пользователя xom940k xom940k 16 июня 2011 в 22:35

"Crea" wrote:
Удачи в освоении :)

вот она - ирония Smile
Проще яваскриптом перехватывать и подставлять GET параметр Biggrin
Конечно ужасно корявый костыль, но зато работать будет...
Может хоть намекнете че погуглить?

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 17 июня 2011 в 0:16

"xom940k" wrote:
но ни в какую не хочет хавать с GET параметрами и при этом высылает наст на page not found & warning про header и тд...
Пичаль...

у меня работает.

подсказка. $_GET вполне можно менять и ставить в него нужные параметры в рантайме Smile
главное применить голову.

Аватар пользователя Crea Crea 17 июня 2011 в 1:09

Quote:

И вот тут нарисовался оптимизатор и говорит: а вот надо добавить в меню вот такой URL: http://blabla.ru/nyanya?brendid=47,48 и тд... Ну в общем понятно =)

Понятно, что нужно сменить оптимизатора на нормального...)

Аватар пользователя xom940k xom940k 17 июня 2011 в 16:04

"Ильич Рамирес Санчес" wrote:
подсказка. $_GET вполне можно менять и ставить в него нужные параметры в рантайме Smile
главное применить голову.

не понял Sad По подробней плз...
"Crea" wrote:
Понятно, что нужно сменить оптимизатора на нормального...)

линк на нормального Biggrin
"RxB" wrote:
Ох уж эти аптемезатары

Pardon

Аватар пользователя xom940k xom940k 17 июня 2011 в 16:04

Я уже начал просто переписывать фильтр, под оптимизатора, но тему все равно хотелось бы развить.
Кто как передает параметры в свои модули? Посоветуйте джедайский вариант, а то я так понял $_GET - не совсем друпально...

Аватар пользователя Crea Crea 17 июня 2011 в 16:28

$_GET сойдет. Параметры вы в меню не запихивайте, в системе меню нужен 1 элемент на весь фильтр а значит и все комбинации параметров.
Если нужно сделать ссылку на определенную комбинацию фильтров, лучше делать без меню, просто ссылки создавать через слой темизации функцией l(). Еще можно создать редирект на нужную комбинацию.