CMS Automne

Forum de la communauté du CMS Automne
Nous sommes actuellement le Mer Nov 27, 2024 1:12 pm

Le fuseau horaire est UTC [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 5 messages ] 
Auteur Message
 Sujet du message: Une 404 dans Automne
MessagePublié: Jeu Déc 11, 2008 12:07 pm 
Hors-ligne
Utilisateur enthousiaste

Inscrit(e) le : Lun Mars 17, 2008 8:51 pm
Message(s) : 81
Il est possible de personnaliser la page 404 en créant une page 404.html. Cette dernière sera automatiquement affichée, si elle existe, sinon se sera le contenu html de la page 404.php.
Je rappelle que l'erreur 404 est provoquée lorsque l'on tente d'atteindre une ressource qui n'existe pas et que votre fichier .htaccess contient la configuration du traitement de cette erreur :
Code :
ErrorDocument 404 /404.php


Le défaut est que cette page 404.html ne profite pas de la puissance du CMS automne (utilisation des balises <atm_... >)
Je propose un scénario permettant de mettre en place votre page 404 géré par le CMS moyennant quelques adaptations. Ces adaptations pourront être appliquées à la page 403. J'ai bon espoir que la solution proposée sera intégré dans les prochaines versions d'Automne ;-)

Chrys.


Haut
 Profil  
 
 Sujet du message:
MessagePublié: Jeu Déc 11, 2008 12:08 pm 
Hors-ligne
Utilisateur enthousiaste

Inscrit(e) le : Lun Mars 17, 2008 8:51 pm
Message(s) : 81
Première étape : Le modèle
Créez votre modèle comme tout autre modèle standard

Chrys.


Haut
 Profil  
 
 Sujet du message:
MessagePublié: Jeu Déc 11, 2008 12:08 pm 
Hors-ligne
Utilisateur enthousiaste

Inscrit(e) le : Lun Mars 17, 2008 8:51 pm
Message(s) : 81
Deuxième étape : La page
Créez une page dont le nom DOIT commencé par 404, par exemple "404 Page non trouvée".
Validez cette page.
Vous avez donc maintenant une page dont l'URL est http://mon_site/web/nn-404-page-non-trouvee.php
nn est la valeurs numérique de l'identifiant de votre page

Chrys.


Dernière édition par Chrys le Ven Déc 12, 2008 9:13 am, édité 1 fois.

Haut
 Profil  
 
 Sujet du message:
MessagePublié: Jeu Déc 11, 2008 12:10 pm 
Hors-ligne
Utilisateur enthousiaste

Inscrit(e) le : Lun Mars 17, 2008 8:51 pm
Message(s) : 81
Troisième étape : Le script 404.php
Vous trouverez ce script à la racine du site.
C'est ce script qui est responsable de la recherche d'une page par son numéro et de l'affichage de la 404.html le cas échéant.
Trouvez dans ce script le code suivant qui se trouve vers la ligne 70
Code :
//do redirection to page if founded
if ($redirectTo) {
   header('HTTP/1.x 301 Moved Permanently', true, 301);
   header('Location: '.$redirectTo.($_SERVER['REDIRECT_QUERY_STRING'] ? '?'.$_SERVER['REDIRECT_QUERY_STRING'] : ''));
   exit;
}


Placez juste avant le code suivant
Code :
// Search 404 page...
if (!$redirectTo) {
   $path = $_SERVER["DOCUMENT_ROOT"].'/web';
   $pattern404 = "#^([0-9]+)-404-#U";
   $directory = openDir($path);
   while ($file = readDir($directory)) {
      if (!is_dir($path.'/'.$file)) {
         preg_match($pattern404, $file, $requestedPageId);
         if (sensitiveIO::IsPositiveInteger($requestedPageId[1])) {
            //include needed classes
            require_once(PATH_PACKAGES_FS."/workflow/resource.php");
            require_once(PATH_PACKAGES_FS."/workflow/resourcestatus.php");
            require_once(PATH_PACKAGES_FS."/common.php");
            require_once(PATH_PACKAGES_FS."/tree/tree.php");
            require_once(PATH_PACKAGES_FS."/tree/page.php");
            require_once(PATH_PACKAGES_FS."/tree/website.php");
            require_once(PATH_PACKAGES_FS."/tree/websitescatalog.php");
            
            //try to instanciate the requested page
            $page = new CMS_page($requestedPageId[1]);
            if (!$page->hasError()) {
               //get page file
               $pageURL = $page->getURL(false , false, PATH_RELATIVETO_FILESYSTEM);
               if (file_exists($pageURL)) {
                  $redirectTo = $page->getURL(false);
               } else {
                  //try to get direct html file
                  $pageURL = $page->getHTMLURL(false , false, PATH_RELATIVETO_FILESYSTEM);
                  if (file_exists($pageURL)) {
                     $redirectTo = $page->getHTMLURL(false);
                  }
               }
            }
         }
      }
   }
}

Il s'inspire grandemant de l'existant en parcourant le répertoire /web/ à la recherche de cette page 404-xxx.php

Chrys.


Dernière édition par Chrys le Jeu Déc 11, 2008 12:18 pm, édité 1 fois.

Haut
 Profil  
 
 Sujet du message:
MessagePublié: Jeu Déc 11, 2008 12:13 pm 
Hors-ligne
Utilisateur enthousiaste

Inscrit(e) le : Lun Mars 17, 2008 8:51 pm
Message(s) : 81
Quatrième étape : A vous de jouer...
Amusez-vous à dépublier la page 404, et votre page 404.html réapparaitra (si vous en aviez une)
Comme d'habitude ce tuto est perfectible, notemment pour ceux qui aurait des sites en plusieurs langues.
N'hésitez pas à me retourner vos remarques...
Pensez à ajouter dans le fichier /automne/UPDATE.DENY la ligne suivante
Code :
/404.php
pour ne pas qu'une mise à jour d'Automne n'écrase votre travail.

_________________
Chrys.
"Il y a 10 sortes de gens, ceux qui savent compter en binaire et les autres..."


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 5 messages ] 

Le fuseau horaire est UTC [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 6 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Recherche de:
Aller vers :  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduit par Maël Soucaze et Elglobo © phpBB.fr