[РЕШЕНО] Хук, который всегда в работе

Чт, 04/02/2016 - 11:25

Появилась задача обрабатывать любой URL на наличие определённой строки в ней и задумался - какой хук всегда вызывается, чтобы к нему прикрепить эту обработку? Как-то в тему оформления лезть неохота, а больше ничего в голову не идет.
Что бы вы подсказали, какой хук использовать для подобного наиболее drupal-way?

PS hook_init не подходит - не работает с кэшированными страницами, hook_boot видимо тоже - слишком рано грузится, нет доступа к стандартным друпал-функциям.

PS2 hook_init в итоге подходит, ибо работа с кешем не идет.

0 Спасибо

Комментарии

Аватар пользователя xakd
1 год 5 months назад xakd #

Ха, и правда. Хотя тут в see_also hook_boot - вроде их отличие, что hook_init для кешированных страниц не вызывается?

Цитата:
Perform setup tasks for non-cached page requests.

Или как?

0 Спасибо
Аватар пользователя xakd
1 год 5 months назад xakd #

Не, не подходят оба. Первый только ля некешированных страниц работает, а hook_boot вызывает до всех остальных функций Друпала и их нельзя использовать

0 Спасибо
Аватар пользователя bumble
1 год 5 months назад bumble #

Да, вариант.
Но нужно учитывать, что hook_boot вызывается одним из первых, еще до обработки всех модулей и тем.
Будут ли там нужные данные?

0 Спасибо
Аватар пользователя xakd
1 год 5 months назад xakd #

Ага, как раз столкнулся с этой проблемой. Ещё варианты есть?

0 Спасибо
Аватар пользователя bumble
1 год 5 months назад bumble #

Надо понять что реализовать нужно.

0 Спасибо
Аватар пользователя xakd
1 год 5 months назад xakd #

Заходим по site.com/abcder - считываем abcder, делаем дело( лезем в базу, сверяем с указанным там, делаем ерунду всякую), потом перекидываем на главную не меняя URL site.com/abcder
Вопрос ещё в том, как на главную( или какую-то специальную страницу) перекинуть, чтобы не было 404

0 Спасибо
Аватар пользователя bumble
1 год 5 months назад bumble #

Страница site.com/abcder - это что? Если самодельная - все в её коллбеке делается.
По другому адресу нельзя отобразить главную, максимум её содержимое (это уже будет не главная).
Для редиректа - drupal_goto, там можно указывать HTTP-код.

0 Спасибо
Аватар пользователя xakd
1 год 5 months назад xakd #
bumble написал:
Страница site.com/abcder - это что? Если самодельная - все в её коллбеке делается.

Нет, такой страницы вообще нет. Нигде её не делаем. Это 404.

bumble написал:
По другому адресу нельзя отобразить главную, максимум её содержимое (это уже будет не главная).

Содержимое надо. Насколько я помню можно, чтобы адрес был один, а контент от другой страницы.

bumble написал:
Для редиректа - drupal_goto, там можно указывать HTTP-код.

В hook_boot не пашет. А так знаю, да. Но нужно( желательно), чтобы адрес не менялся.

0 Спасибо
Аватар пользователя bumble
1 год 5 months назад bumble #

Все же советую hook_init.
Если на 404-й и будет кеш - его отключить и выводить необходимое содержимое.

0 Спасибо
Аватар пользователя xakd
1 год 5 months назад xakd #
bumble написал:
Если на 404-й и будет кеш - его отключить и выводить необходимое содержимое.

Блин, че то я глюканул. Мне же как раз hook_init и подходит - какие кешированные страницы на 404-х страницах могут быть, самое то. Спасибо.

0 Спасибо
Аватар пользователя xakd
1 год 5 months назад xakd #
Orion76 написал:
Как раз вызвается функцией drupal_get_normal_path, когда MENU_NOT_FOUND

Тоже ниче, но и hook_init подошел, он там и по смыслу неплохо скоррелировал.

0 Спасибо