カスタム404ページをメインコンテンツ部分に表示する

既に削除されたページ、存在しないURLが指定された時に表示するのが404ページです。Joomla!の場合、標準で次の様なページが表示されます。
検索モジュールの準備
404ページへ埋め込む検索モジュールを用意します。検索モジュールを作成(またはコピー)し、「有効」を「はい」に、「配置」にはテンプレートに存在しないポジション名を入力します。ここでは「404search」にしました。
404ページの作成
通常の記事を作成するように404ページを作成します。WYSIWYGエディタを使用して自由に編集して構いません。先ほど作成した検索モジュールを読み込むため、loadpositionタグを文末に記述します。セクションを「未分類」、カテゴリを「未分類」にして保存して下さい。
404ページへリンクするメニューアイテムの作成
上記で作成した404記事へリンクするためのメニューアイテムを作成します。このメニューアイテムは非公開にするため、作成するメニューはどこでも構いません(例えばメインメニューなど)。
メニューアイテム作成画面から「新規」→「記事」→「スタンダード記事レイアウト」を選択します。
タイトルやエイリアス(別名)を入力し、公開を「いいえ」に設定します。
先ほど作成した記事を選択したら「適用」をクリックします。
次に「リンク」の欄に表示されたURLをコピーします。このURLは後で必要になりますので、メモ帳などに貼り付けておくと良いでしょう。
エラーページのオーバーライド
Joomla!では存在しないURLが指定された場合、/templates/system/error.phpファイルを返す仕組みになっています。このファイルをテンプレート側でオーバーライドして利用します。
/templates/system/error.phpを使用中のテンプレートディレクトリ直下にコピーして下さい(/templates/テンプレート名/error.phpとなるように)。
error.phpの編集
コピーしたerror.phpファイルを開き、13行目付近を次の様に編集します。
編集前
編集後(2009/12/01修正)
「上記でコピーしたURL」の部分は、先ほどコピーしておいたURLと置き換えて下さい。
また最終行へ以下の様に追加します。
編集前
編集後
ちなみに・・・
- SEFコンポーネント(sh404sef、JoomSEF、AceSEFなど)を利用すると、こんな面倒な事をしなくても同じ事ができます。
- FirefoxのLive HTTP Headersでステータスコードを確認すると、正しく404を返しているようですがその後の文字列が文字化けしています。なんでだろう?問題はなさそうなので様子見です。
( 3 Votes )
はじめまして :D <br />いつも参考にさせてもらっ てます。<br /><br />早速、試してみたのですが 、以下のようなエラーとなり、表 示がされませんでした。<br /><br />403 Forbidden<br />You don't have permission to access /index.php on this server<br /><br />index.phpのアクセス権を変更してみ ましたが、どのファイルかも検討 が付かず、改善されませんでした 。何かがアクセス禁止になってい るのでしょうか?<br /><br />お手が空いたときにでも確 認して頂ければ幸いです。




RSS