Modèle personnalisé pour 404 pages d'erreur


12

Une brève question noob ici! Comment définir un thème pour utiliser un modèle personnalisé pour 404 pages d'erreur au lieu d'utiliser page.tpl?

Réponses:


10

Suivez ces étapes:

  1. Créer une nouvelle page en utilisant le module Panels (vider la page ou y mettre n'importe quel contenu)

  2. Dans admin / config / system / site-information set Default 404 (not found) page to your new page

  3. Remplacez le fichier modèle de cette page (page - error.tpl.php)

  4. Supprimez toutes les régions dont vous n'avez pas besoin et mettez votre code


5
Et on n'a même pas besoin d'utiliser des panneaux. Le module gérant une page ou le nœud "Page de base" le plus simple ferait aussi l'affaire.
Mołot

2
Pourquoi auriez-vous besoin d'un module contribué pour créer un 404?
MrUpsidown

1
Le problème avec l'utilisation d'un nœud, comme une page de base, est qu'il apparaîtra alors dans les résultats de recherche et autres listes liées au contenu, ce qui n'est pas souhaitable.
Rooby

27

Encore une autre solution de cette discussion qui fonctionne sans panneaux ni autres modules personnalisés.

Dans votre dossier de thème, recherchez template.phpet écrivez ce code. Remplacez YOURTHEMEpar le nom de votre thème:

function YOURTHEME_preprocess_page(&$vars) {
  $header = drupal_get_http_header('status'); 
  if ($header == '404 Not Found') {     
    $vars['theme_hook_suggestions'][] = 'page__404';
  }
}

Chaque fois que 404 se produit, vous page--404.tpl.phpserez utilisé. N'oubliez pas de mettre "-" et non "__" dans le nom de votre fichier de modèle.


N'oubliez pas de vider votre cache si vous venez de créer le page--404.tpl.phpfichier.
Blake Erickson

Pour 403, l'en-tête $ == '403 Interdit'.
Henry

cela ne semble pas fonctionner dans un module, le modèle dans le dossier du module n'est pas dépassé. comment faire de même avec la fonction YOURMODULE_preprocess_page (& $ vars)?
Matoeil

3

Si vous voulez avoir une page 404 personnalisée qui ne nécessite pas la création d' une page (noeud), utilisez le CustomError module.

Si vous avez une page 404 dans Drupal, elle apparaîtra dans les résultats de recherche et / ou vos listes de vues.

Lorsque vous utilisez le module customerror, vous pouvez remplacer le modèle en créant une page - customerror.tpl.php dans votre dossier de thème. N'oubliez pas de vider votre cache après avoir créé un nouveau fichier de modèle.


Cela avait l'air bien, mais pour ceux d'entre vous qui utilisent également le module de redirection, il semble qu'ils ne fonctionnent pas bien ensemble. Je n'ai jamais pu obtenir d'erreur personnalisée pour montrer sa page sur ce que la redirection a montré.
evanmcd

1
Nous utilisons les modules Redirect et Customerror à l'unisson sans ces problèmes. En regardant sur les pages de paramètres des deux modules, il semble que l'erreur personnalisée (en plus de sa fonctionnalité d'erreur personnalisée) possède également une fonctionnalité pour gérer les redirections, bien qu'avec une interface brute. Si vous utilisez la redirection (et l'OP ne l'est pas), évitez simplement d'utiliser les paramètres de redirection d'erreur personnalisés, et vous ne devriez avoir aucun problème.
alexkb

0

Sans supposer aucune convention pouvant exister dans votre base de thème, la question est enfin de savoir comment puis-je savoir avec certitude quel fichier de modèle utiliser ...

Voici les étapes:

  1. Créez une base de base et appelez-la comme vous le souhaitez.
  2. Attribuez cette page à la réponse 404 admin / config / system / site-information
  3. Activez le mode theme_debug.
  4. Tapez une URL stupide dans votre barre d'adresse.
  5. Vous arrivez sur votre page initialement créée
  6. Regardez la source et la suggestion de modèles, vous obtiendrez quelque chose comme:entrez la description de l'image ici

  7. C'est simple, aucun fichier de prétraitement ou template.php à modifier.

Moi-même, j'ai choisi celui marqué par une hache, car je voulais quelque chose de nu avec une photo complète du cadre et juste un lien vers l'arrière.


Notez que la page de base que vous avez créée pour l'erreur 404 apparaîtra désormais également dans les résultats de la recherche en tant que page de contenu.
Rooby
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.