2010-03-17 17 views
1

J'ai un <?php print $search_box; ?> dans ma page page.tpl.php. Sur les pages qui existent, la recherche fonctionne, mais sur 404 pages, ce n'est pas le cas.Drupal 5 Recherche ne fonctionnant pas sur 404 pages

j'ai vu quelques bugs/patches à drupal.org coprocessus par rapport à D6.15, mais aucun d'entre eux semblent fonctionner selon le fil et ils ne sont pas vraiment pertinents pour D5.x

J'ai théorie que le parce que le <?php print $search_box; ?> crée un formulaire avec une action à lui-même (une page inexistante), il obtiendra le 404.

Est-ce que quelqu'un a lancé contre cela? Si oui, comment l'avez-vous réparé? Une théorie que j'ai a été de puiser dans le formulaire et de toujours faire l'action = "/" (première page) qui existerait toujours.

Si c'est une bonne idée, comment va-t-on dans le FormAPI et écraser l'action? Est-ce une fonction de pré-traitement?

Répondre

2
  1. Dans un form alter vous pouvez utiliser drupal_get_headers() pour vérifier si la page affichée est une 404.
  2. Si c'est un 404, vous pouvez dans votre forme alter définissez l'attribut $form['#action'] dans votre formulaire de recherche à fx la page d'accueil ou toute autre page à laquelle vous souhaitez rediriger l'utilisateur.

Je n'ai pas testé cela, mais cela devrait fonctionner.

+0

Cela m'a mis dans le bon chemin. preprocess_page n'a pas eu accès au formulaire $, mais j'ai été en mesure de rechercher remplacer l'action si le drupal_get_headers est un 404 – easement