Eigen foutpagina's

From Joomla! Documentation

This page is a translated version of the page Custom error pages and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎Nederlands • ‎русский
Split-icon.png
Split Page into Specific Joomla! Versions - J2.5 and 3.x

It has been suggested that this article or section be split into specific version Namespaces. (Discuss). If version split is not obvious, please allow split request to remain for 1 week pending discussions. Proposed since 4 years ago.

Joomla! gebruikt het templates/system/error.php bestand om verschillende HTTP Status fouten af te handelen, inclusief "403 Forbidden", "404 Not Found", en "500 Internal Server" fouten. U kunt, indien gewenst, het foutresultaat stijlen.

Het is belangrijk te begrijpen dat error.php een onafhankelijk bestand is van het Joomla! CMS maar afhankelijk is van het Joomla! Platform. Plugins kunnen het bestand niet gebruiken. U kunt geen modules opnemen of <jdoc:include> statements gebruiken.

Overriden van de Systeem foutresultaten

Kopieer, om de systeem foutresultaten te overriden, het templates/system/error.php bestand naar uw templates/<template-name> map.

Als Joomla! hem vindt, zal het het error.php bestand vanuit het huidige template gebruiken, in plaats van het systeem bestand.

U kunt de pagina naar wens opmaken om het op uw template aan te laten sluiten.

Overriden van de systeem stijling

Kopieer, als u de stijl wilt veranderen het templates/system/css/error.css bestand naar uw templates/<template-name>/css map. Bewerk vervolgens uw templates/<template-name>/error.php bestand om te verwijzen naar de nieuwe locatievan de stijlsheet door deze regel als volgt aan te passen:

<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/error.css" type="text/css" />

Wijzig daarna error.css, naar wens volgens uw stijl eisen.

Het aanpassen van foutboodschappen

U kunt conditionele logica toevoegen om de teruggegeven boodschap aan te passen, afhankelijk van de specifieke foutcode.

Hier is een voorbeeld hoe een 404 fout af te vangen en een eigen boodschap te geven.

<?php  if ($this->error->getCode() == '404') { ?>
	<div id="errorboxheader">Page not found</div>
		<div id="errorboxbody"><p>Sorry! That page cannot be found.</p>
		</div>
	</div>
<?php } ?>

HTTP statuscode

Als een pagina wordt opgevraagd op uw site, dan geeft de server een HTTP statuscode terug naar aanleiding van het verzoek. Joomla! geeft een '200 - de server gaf de pagina terug' foutboodschap pagina. Dit is een probleem voor degenen die werken met Google Webmaster Services en een sitemap hebben.

Als u wilt dat Joomla! een statuscode terug geeft voor de fout, dan kan dat door als volgt de volgende logica voor de DOCTYPE regel toe te voegen:

<?php 
if ($this->error->getCode() == '404') {
	header("HTTP/1.0 404 Not Found");
} ?>

Meer HTTP statuscode informatie

Het gebruiken van de Theme Header en Footer op de standaard foutpagina

Joomla 1.5 Indien u de foutboodschap in thema ontwerp wilt zien en niet naar een foutpagina URL wilt worden geleid of de HTML overnemen in het foutpagina template, dan is hier een manier om uw thema template op de foutpagina te laten werken.

Zet allereerst de volgende code in templates/<template-name>/error.php:

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

include dirname(__FILE__) . "/index.php";
?>

Bewerk daarna het volgende in templates/<template-name>/index.php:

1. Vind de volgende code in index.php

<jdoc:include type="head" />

en vervang het door het volgende

<?php if (!$this->error->getCode()) : ?>
<jdoc:include type="head" />
<?php else : ?> 
<title><?php echo $this->error->getCode() ?> - <?php echo $this->title; ?></title>
<?php endif; ?>

2. Vind de volgende code in index.php

<jdoc:include type="component" />

en vervang het door het volgende

<?php if ($this->error->getCode()) : /* check if we are on error page, if yes - display error message */ ?>
  <p><strong><?php echo $this->error->getCode() ?> - <?php echo $this->error->message ?></strong></p>
  <p><strong><?php echo JText::_('JERROR_LAYOUT_NOT_ABLE_TO_VISIT'); ?></strong></p>
  <ol>
    <li><?php echo JText::_('JERROR_LAYOUT_AN_OUT_OF_DATE_BOOKMARK_FAVOURITE'); ?></li>
    <li><?php echo JText::_('JERROR_LAYOUT_SEARCH_ENGINE_OUT_OF_DATE_LISTING'); ?></li>
    <li><?php echo JText::_('JERROR_LAYOUT_MIS_TYPED_ADDRESS'); ?></li>
    <li><?php echo JText::_('JERROR_LAYOUT_YOU_HAVE_NO_ACCESS_TO_THIS_PAGE'); ?></li>
    <li><?php echo JText::_('JERROR_LAYOUT_REQUESTED_RESOURCE_WAS_NOT_FOUND'); ?></li>
    <li><?php echo JText::_('JERROR_LAYOUT_ERROR_HAS_OCCURRED_WHILE_PROCESSING_YOUR_REQUEST'); ?></li>
  </ol>
  <p><strong><?php echo JText::_('JERROR_LAYOUT_PLEASE_TRY_ONE_OF_THE_FOLLOWING_PAGES'); ?></strong></p>

  <ul>
  <li><a href="<?php echo $this->baseurl; ?>/index.php" title="<?php echo JText::_('JERROR_LAYOUT_GO_TO_THE_HOME_PAGE'); ?>"><?php echo JText::_('JERROR_LAYOUT_HOME_PAGE'); ?></a></li>
  </ul>

  <p><?php echo JText::_('JERROR_LAYOUT_PLEASE_CONTACT_THE_SYSTEM_ADMINISTRATOR'); ?>.</p>
<?php else : ?>
  <jdoc:include type="component" />
<?php endif; ?>

Nu werkt uw thema template ook op de foutpagina's.

Let op: Module includes in het template zullen niet werken op foutpagina's, op deze manier aangemaakt (maar werken op andere pagina's).

Het gebruik van modules in foutpagina's

Modules kunnen niet op dezelfde manier opgenomen worden op foutpagina's als de template's index.php omdat u <jdoc:include> statements niet kunt gebruiken. Er is een alternatief door JModuleHelper te gebruiken.

Om een enkele module via de titel op te nemen, kunt u gebruiken:

if (JModuleHelper::getModule('menu')) { 
    echo $doc->getBuffer('module', 'menu');
}

Om meerdere modules op een positie op te nemen, kunt u gebruiken:

$modules = JModuleHelper::getModules( 'footer_3' );
$attribs['style'] = 'xhtml';
foreach ($modules AS $module ) {
    echo JModuleHelper::renderModule( $module, $attribs );
}