--=REKLAMA=--
Gdy wpiszesz w przeglądarce internetowej błędny adres, możesz spotkać się z jedną z trzech sytuacji:
Joomla! używa pliku templates/system/error.php do obsługi kilku błędów protokołu HTTP, w tym:
Jeśli chcesz, możesz je wystylizować stosownie do swoich potrzeb.
Ważne, aby zrozumieć, że plik error.php jest plikiem niezależnym od Joomla!, a to oznacza, że na stronach generowanych przez ten plik nie działają dodatki, że nie można włączać do tego pliku modułów, ani też używać dyrektywy <jdoc:include>.
Aby zastąpić systemowe strony błędów, skopiuj plik templates/system/error.php do katalogu templates/<nazwa_twojego_szablonu>
Gdy Joomla! znajdzie plik w katalogu stosowanego szablonu, użyje go zamiast pliku systemowego.
Możesz sformatować tę stronę tak jak chcesz, dopasowując ją do swojego szablonu.
Jeśli chcesz zmienić formatowanie strony błędu, skopiuj plik templates/system/css/error.css do katalogu templates/<nazwa_twojego_szablonu>/css.
Następnie uaktualnij ścieżkę do pliku templates/<template-name>/error.php, modyfikując odpowiednio następującą linię:
<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/error.css" type="text/css" />
Potem po prostu ustal definicje stylów w pliku error.css, tak, jak chcesz.
Możesz zastosować warunek logiczny, powodując reakcję zależną od określonego kodu błędu.
Poniżej znajduje się przykład wyświetlenia komunikatu w przypadku błędu 404:
<?php if ($this->error->code = '404') { ?> <div id="errorboxheader">Strona nie istnieje</div> <div id="errorboxbody"><p>Przykro nam! Taka strona nie istnieje.</p> </div> </div> <?php } ?>
Gdy do serwera zostanie wysłane żądanie odesłania strony Twojej witryny, serwer wysyła do przeglądarki odpowiedź zawierającą kod stanu HTTP – informację o rezultacie przetwarzania.
Jednym z problemów Joomla! jest zwracanie strony opatrzonej nagłówkiem poprawnej odpowiedzi – 200 Serwer pomyślnie przetworzył żądanie [200 – the server successfully returned the page] zamist strony błędu 404. Może to powodować problemy z wyszukiwarkami, ponieważ strony, które fizycznie nie istnieją, można znaleźć w wynikach wyszukiwania. Zwykle, gdy strona nie istnieje, oczekiwany jest komunikat błędu 404. Jeśli chcesz, aby Joomla! zwracał kod błędu 404, zmodyfikuj standardowe zachowanie Joomla!. Wystarczy w głównym pliku szablonu przed deklaracją <!DOCTYPE> wstawić poniższy kod:
<?php if ($this->error->code = '404') { header("HTTP/1.0 404 Not Found"); } ?>
Jeśli chcesz zobaczyć stronę błędu w układzie szablonu bez przekierowywania do adresu URL strony błędu albo powielania kodu HTML w szablonie strony błedu, skorzystaj z poniższego sposobu. Najpierw umieść następujący kod w pliku templates/<template-name>/error.php:
<?php // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); include dirname(__FILE__) . "/index.php"; ?>
Następnie dokonaj poprawek w templates/<nazwa-szablonu>/index.php:: 1. Znajdź w index.php następujący kod:
<jdoc:include type="head" />
i wymień go na poniższy:
<?php if (!$this->error->code) : ?> <jdoc:include type="head" /> <?php else : ?> <title><?php echo $this->error->code ?> - <?php echo $this->title; ?></title> <?php endif; ?>
2. Znajdź w index.php następujący kod:
<jdoc:include type="component" />
i wymień go na poniższy:
<?php if ($this->error->code) : /* sprawdz, czy to jest strona bledu, jesli tak, wyswietl komunikat bledu */ ?> <p><strong><?php echo $this->error->code ?> - <?php echo $this->error->message ?></strong></p> <p><strong><?php echo JText::_('You may not be able to visit this page because of:'); ?></strong></p> <ol> <li><?php echo JText::_('An out-of-date bookmark/favourite'); ?></li> <li><?php echo JText::_('A search engine that has an out-of-date listing for this site'); ?></li> <li><?php echo JText::_('A mis-typed address'); ?></li> <li><?php echo JText::_('You have no access to this page'); ?></li> <li><?php echo JText::_('The requested resource was not found'); ?></li> <li><?php echo JText::_('An error has occurred while processing your request.'); ?></li> </ol> <p><strong><?php echo JText::_('Please try one of the following pages:'); ?></strong></p> <ul> <li><a href="<?php echo $this->baseurl; ?>/index.php" title="<?php echo JText::_('Go to the home page'); ?>"><?php echo JText::_('Home Page'); ?></a></li> </ul> <p><?php echo JText::_('If difficulties persist, please contact the system administrator of this site.'); ?></p> <?php else : ?> <jdoc:include type="component" /> <?php endif; ?>
Teraz szablon strony będzie zastosowany również do stron błędów. Uwaga: Moduły zawarte w szablonie nie będą widoczne na stronach błędów wygenerowanych tą metodą (ale będą działać na innych stronach).
Więcej informacji o kodach stanów HTTP: