CMS Automne http://www.automne-cms.org/forum/ |
|
Une 404 dans Automne http://www.automne-cms.org/forum/viewtopic.php?f=5&t=417 |
Page 1 sur 1 |
Auteur: | Chrys [ Jeu Déc 11, 2008 12:07 pm ] |
Sujet du message: | Une 404 dans Automne |
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. |
Auteur: | Chrys [ Jeu Déc 11, 2008 12:08 pm ] |
Sujet du message: | |
Première étape : Le modèle Créez votre modèle comme tout autre modèle standard Chrys. |
Auteur: | Chrys [ Jeu Déc 11, 2008 12:08 pm ] |
Sujet du message: | |
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. |
Auteur: | Chrys [ Jeu Déc 11, 2008 12:10 pm ] |
Sujet du message: | |
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. |
Auteur: | Chrys [ Jeu Déc 11, 2008 12:13 pm ] |
Sujet du message: | |
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.
|
Page 1 sur 1 | Le fuseau horaire est UTC [Heure d’été] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |