Всем привет.
На сайте, который у меня сдан, написан мною фильтр. Фильтр мудреный, потому реализовать его представлениями - не получилось. Хавает фильтр GET параметры и выплевывает контент. И вот тут нарисовался оптимизатор и говорит: а вот надо добавить в меню вот такой URL: http://blabla.ru/nyanya?brendid=47,48 и тд... Ну в общем понятно Я в шаблоне сделал подстановку и теперь с некоторыми айдишниками выводится отдельные drupal page со своими мета и тайтлами. Вот только проблема: если юзер сотрет GET параметры - то фильтр не отработывает. И в меню не добавляется с GET параметрами. И URL Alias не создается с GET параметрами.
Как жить? Хочу хукнуть роутинг, но чето ничего не нашел, кроме custom_url_rewrite_outbound() and language_url_rewrite() - не хуки, которые drupal.org советует пихать в settings.php, чтобы до загрузки модулей отрабатывал. Но ведь это не друпально! Хочу хук
Комментарии
в 7ке есть хуки.
а я у себя на блоге для всех нод нехуком .html в конец добавил. и нехуком пажинацию сделал page/123.html вместо page=132
ага, я уже нагуглил модуль URL Alter, который в 7ке вшит в ядро. Вот только пока не получается чето из админки предсказуемого результата добиться. Наверно хук попробую завтра
Если кто юзал модуль - черкните пару строк или лучше ссылочку на обзор. Если прежде разберусь - сам напишу тут
В общем ребята, полный П. Он о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" то есть когда много параметров, там в этом массиве потом ковырятся - ... Да и код не охото переписывать...
Система меню в Друпале очень сложная, со множеством подводных камней и ограничений. Удачи в освоении
вот она - ирония
Проще яваскриптом перехватывать и подставлять GET параметр
Конечно ужасно корявый костыль, но зато работать будет...
Может хоть намекнете че погуглить?
Кароче вы все жадины
Пашел костыль калякать...
у меня работает.
подсказка. $_GET вполне можно менять и ставить в него нужные параметры в рантайме
главное применить голову.
Понятно, что нужно сменить оптимизатора на нормального...)
Ох уж эти аптемезатары
не понял По подробней плз...
линк на нормального
Я уже начал просто переписывать фильтр, под оптимизатора, но тему все равно хотелось бы развить.
Кто как передает параметры в свои модули? Посоветуйте джедайский вариант, а то я так понял $_GET - не совсем друпально...
$_GET сойдет. Параметры вы в меню не запихивайте, в системе меню нужен 1 элемент на весь фильтр а значит и все комбинации параметров.
Если нужно сделать ссылку на определенную комбинацию фильтров, лучше делать без меню, просто ссылки создавать через слой темизации функцией l(). Еще можно создать редирект на нужную комбинацию.