Joomla: meertalige 404-pagina maken

Joomla heeft in de basis geen 404 pagina die makkelijk aangemaakt danwel aangepast kan worden. Laat staan het maken van een meertalige 404 pagina. Hoog tijd dat we onze eigen "best-practice" hierin delen. Ondanks dat er genoeg artikelen op internet te vinden zijn omtrent het maken van een enkele 404 pagina geven we voor de volledigheid een kort stappenplan.

Maken van een enkeltalige 404-pagina

Stap 1: maak een 404 artikel

 

  • Titel: kies een titel, bijvoorbeeld "404" of "404 Error Page"
  • Alias: hou het simpel (404) of laat Joomla dit zelf genereren
  • Category: kies hier "Uncategorized" (kan ook een zelf aangemaakt categorie zijn
  • Artikel inhoud: eigenlijk het belangrijkste onderdeel van een goede 404 pagina. Zorg ervoor dat het voor bezoekers duidelijk is wat er aan de hand is, de mogelijke oorzaken, maar bovenal welke oplossingen je kunt bieden.

 

So far so good! Tijd voor een belangrijke Metadata aanpassing!

Stap 2: voorkomen indexatie 404 pagina

 

  • Joomla 3.X > onder het tabblad "Publishing"
  • Joomla 2.5 > rechterkant van de pagina onder "Metadata Options"

 

Selecteer bij de optie "Robots" > "No index, no follow" (zie onderstaande afbeelding)

joomla robots no index no follow

Stap 3: aanmaken van een verborgen menu item

Het aanmaken van het menu zelf nemen we voor kennis aan

 

  • Maak een nieuw menu item aan voor een "Single Article"
  • Selecteer vervolgens de zojuist aangemaakt 404 pagina
  • Vul desgewenst de alias van het menu item in
  • Zorg ervoor dat de status "Unpublished" is
  • Sla het menu item vervolgens op

 

Stap 4: Kopieer de menu item link

Na het opslaan van het nieuwe, verborgen menu item genereert Joomla een link. Deze link hebben we nodig om te plaatsen in het error.php bestand.

menu item link

Stap 5: Aanpassen van het "error.php" bestand

Allereerst is het belangrijk het error.php bestand te localiseren en ervoor te zorgen dat we deze kunnen bewerken. Normaal gesproken kun je het bestand vinden in het template dat je voor je Joomla website gebruikt. Controleer de mappen "templates/TEMPLATE_NAAM/..." en "templates/TEMPLATE_NAAM/system" op het bestaan van een error.php bestand. Niet gevonden? Geen probleem. Open een nieuw PHP bestand en plaats als eerst de volgende code:

<?php

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

.

Voor zowel nieuwe als bestaande error.php bestanden plaats je vervolgens onderstaande code onder de "Restricted acces" regel (zie regel 4). Sla het bestand vervolgens op als error.php in je template root map.

if (($this-&gt;error-&gt;getCode()) == '404') {
header('Location: /index.php?option=com_content&amp;view=article&amp;id=25');
exit;
}
?>

Achter "Location" plaats je de link die je eerder gekopieerd hebt.

 

Stap 6: Test je 404 pagina!

Open je website en navigeer naar bijvoorbeeld jewebsite.com/werktniet

Maken van een meertalige 404-pagina

Laten we als voorbeeld een Nederlands/Engelse website nemen. We kunnen simpelweg gebruik maken van het eerdere stappenplan alleen doen we alles in tweevoud. Waar nodig geven we meer informatie anders kun  je referreren aan de desbetreffende stap in het eerste deel van dit artikel.

Stap 1: Maak 404 artikelen aan in NL en EN

 

  • Aanmaken werkt hetzelfde als voor een enkeltalige pagina echter dien je voor het elke pagina de juiste taal te selecteren

 

Stap 2: Voorkomen van indexatie beide pagina's

Stap 3: Aanmaken verborgen menu items

 

  • Let er ook hierbij op dat beide menu items aan de juiste taal worden toegewezen

 

Stap 4: Genereer en kopieer beide menu links

Stap 5: Aanpassen van het error.php bestand

In principe werkt dit hetzelfde als voor een enkeltalige website echter moeten we achterhalen welke taal er op dat moment actief is en er vervolgens een verwijzing naar de juist 404 pagina van maken. Dit doen we met de volgende code:

<?php

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

$lang = JFactory::getLanguage();
$result = $lang->getTag();

if ((($this->error->getCode()) == '404') && ($result == 'nl-NL')) {
header('Location: /index.php?option=com_content&view=article&id=25');
exit;
} elseif ((($this->error->getCode()) == '404') && ($result == 'en-GB')) {
	header('Location: /index.php?option=com_content&view=article&id=28');
	exit;
}
?>

Stap 6: Testen van je meertalige error.php bestand

Controleer voor beide talen of deze de juiste 404 pagina ophalen. Succes? Gefeliciteerd!