web-dev-qa-db-fra.com

Comment créer une page d'erreur 404 personnalisée pour chaque langue

Je cherche un moyen d'avoir une page d'erreur 404 personnalisée qui apparaîtra en fonction de la langue du site.

Jusqu'ici j'ai créé mon error.php et je l'ai mis là: "templates/YourTemplate/error.php"

<?php defined('_JEXEC') or die; if ($this->error->getCode() == '404') { header("HTTP/1.0 404 Not Found"); echo file_get_contents(JURI::root().'./error-404'); exit; }

J'ai également créé mon menu caché avec une vue de blog définie sur toutes les langues avec l'alias error-404. Ce menu contient les articles de la catégorie "error-404" (toutes langues).

Je ne pouvais pas avoir à créer un alias pour le même article, j'ai donc créé l'article français avec l'erreur-404 et les catégories anglais avec l'erreur-404-en alias. Enfin, j'ai créé une association pour relier les deux articles.

J'ai défini chaque élément sur "pas d'index/pas de suivi".

Je sais que je pourrais créer un nouveau modèle pour une langue et définir l’autre pour l’autre langue avec leur error.php spécifique, mais j’aimerais conserver le même modèle pour les deux langues.

Merci de votre aide!

1

vous pouvez également utiliser le fichier php standard 404 (ou similaire) de votre modèle s'il existe déjà. Le Joomla! alias standard serait/404 ou/404.html selon la configuration globale pour la gestion des alias. Normalement, ce n’est pas une bonne idée de remplacer ce comportement à la main.

Je voudrais juste utiliser

<?php echo JText::_('SOME_INFO_FOR_404'); ?>

dans le fichier php. Il vous suffit donc de configurer les substitutions de chaînes de langue correspondantes pour le titre, etc., et vous n'avez pas besoin de fichiers php ni de modèles séparés. Si vous souhaitez utiliser des vars spéciaux pour les différentes langues, par exemple, en passant différentes images, vous pouvez également utiliser les contrôles de langue du framework disponibles.

5
PCo

Basé sur:

Comment détecter la langue actuelle d'un site Web Joomla!?

Création d'une page d'erreur 404 personnalisée

$lang = JFactory::getLanguage();

$result = $lang->getTag();

if (($this->error->getCode()) == '404') {

  if ($result=="en-GB") { 
      header('Location: /index.php?option=com_content&view=article&id=31');
      exit;
  }
  if ($result=="pt-PT") {
      header('Location: /index.php?option=com_content&view=article&id=30');
      exit;
  }

}

Vous devez adapter votre code. Veuillez lire ' Création d'une page d'erreur 404 personnalisée '

1
user9849