web-dev-qa-db-ja.com

すべての言語のカスタム404エラーページを作成する方法

サイトの言語の機能で表示されるカスタム404エラーページを作成する方法を探しています。

これまでのところ、error.phpを作成してそこに配置しました: "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; }

また、エラービュー404でブログビューをすべての言語に設定した非表示のメニューを作成しました。このメニューは、「error-404」カテゴリ(すべての言語)の記事に対応しています。

同じ記事にエイリアスを付ける必要はないので、error-404でフランス語の記事を作成し、error-404-enエイリアスで英語のカテゴリも作成しました。最後に、2つの記事をリンクする関連付けを作成しました。

すべての要素を「インデックスなし/フォローなし」に設定しました。

特定のerror.phpを使用して、一方の言語用に新しいテンプレートを作成し、もう一方を別の言語用に設定できることはわかっていますが、両方の言語で同じテンプレートを保持したいと思います。

ご協力いただきありがとうございます!

また、テンプレートが既に存在する場合は、テンプレートの標準の404(または同様の)phpファイルを使用することもできます。 Joomla!エイリアスの標準は、エイリアス処理のグローバル構成に応じて/ 404または/404.htmlになります。通常、この動作を手動でオーバーライドすることはお勧めできません。

私はただ使う

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

phpファイル内。したがって、タイトルなどに対応する言語文字列のオーバーライドを設定するだけで、phpファイルやテンプレートを分離する必要はありません。異なる言語の特別な変数をプッシュしたい場合は、例えば別の画像を渡す場合、利用可能なフレームワーク言語チェックを使用することもできます。

5
PCo

に基づく:

Joomla!ウェブサイトの現在の言語を検出する方法?

カスタム404エラーページの作成

$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;
  }

}

コードを調整する必要があります。「 カスタム404エラーページの作成 」をお読みください。

1
user9849