Поиск Drupal 5 не работает на страницах 404

У меня есть <?php print $search_box; ?> на моей странице page.tpl.php. На существующих страницах поиск работает, а на страницах 404 - нет.

Я видел несколько веток об ошибках/исправлениях на drupal.org для D6.15, но ни одна из них, похоже, не работает в соответствии с веткой, и они не имеют отношения к D5.x.

У меня есть теория, что из-за того, что <?php print $search_box; ?> создает форму с действием для себя (несуществующая страница), он получит 404.

Кто-нибудь сталкивался с этим? Если да, то как вы это исправили?

Одна из теорий, которые у меня есть, заключалась в том, чтобы каким-то образом подключиться к форме и всегда делать action="/" (главную страницу), которая всегда будет существовать.

Если это хорошая идея, как можно подключиться к FormAPI и перезаписать действие? Это функция предварительной обработки?


person easement    schedule 17.03.2010    source источник


Ответы (1)


  1. В изменении формы вы можете использовать drupal_get_headers(), чтобы проверить, является ли отображаемая страница ошибкой 404.
  2. Если это ошибка 404, вы можете в своей форме изменить атрибут $form['#action'] в форме поиска, чтобы изменить главную страницу или любую другую страницу, на которую вы хотели бы перенаправить пользователя.

Я не проверял это, но это должно работать.

person googletorp    schedule 18.03.2010
comment
Это привело меня на правильный путь. У preprocess_page не было доступа к форме $, но я смог выполнить поиск, заменив действие, если drupal_get_headers имеет ошибку 404. - person easement; 19.03.2010