オリジナルのエラーページ
イントロダクション
- 【2009-11-06 追記】
- 勘違いがあったので全面書き直し
MTWriteToFileプラグインでフォルダアーカイブ、特定のフォルダをフィルタリングという記事の続きです。
サーバーの出力するエラーページ(404.htmlなど)ではあまりにも淋しいので、検索窓や問い合わせ先が書いてあるオリジナルのエラーページをウェブページで作ることになりました。
(1)errorフォルダ(/error)を作ります。
(2)ここにウェブページでエラーページを作ります。
特定のフォルダをフィルタリングという記事のとおり、errorフォルダアーカイブは作成されません。
エラーページにはフォルダーアーカイブはいりませんから、errorフォルダにフィルタリングしたわけです。
(3).htaccessファイルに、以下の記述を加えてアップロードして完成です。
ErrorDocument 401 /error/401.html
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
次の課題
ところがいくつかのサーバーでは、エラーページがrootにいないと出力されませんでした。その場合、rootフォルダーに直接エラーページを作ることにします。また、.htaccessファイルも以下のようになります。
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html
さらに、サードバーには目次やらなんやらと、エラーページには要らないウイジットがありますが、フォルダーでフィルタリングが出来ないので、カスタムフィールド(名前:目次に表示、ベースネーム:show_list、テンプレートタグpagedata_show_list、種類:チェックボックス)を作ります。エラーページの編集画面で出来たチェックボックスにチェックを入れます。
次にサイドバーのところで、これを利用して2段階のフィルタリングをかけます。
<mt:SetVarBlock name="showlist"><mt:pagedata_show_list></mt:SetVarBlock>
<mt:If name="showlist" eq="1">
でエラーページ以外のウェブページに目次を出力させます。カスタムフィールドの値が1(チエックボックスにチェックした状態)を上記のコードで取得してフルタリングします。
さらに、そのままではウェブページの目次にエラーページも出力されて並んでしまうので、
<mt:Pages field:show_list="1" lastn="10">
<li><a href="<$mt:PagePermalink$>"><$mt:PageTitle encode_html="1"$></a></li>
</mt:Pages>
とMTPagesタグにfield:カスタムフィールドのベースネームを使ったフィルタリングをします。
<mt:If name="page_template">
<mt:SetVarBlock name="showlist"><mt:pagedata_show_list></mt:SetVarBlock>
<mt:If name="showlist" eq="1">
<h2>目次</h2>
<div class="widget-content">
<ul>
<mt:Pages field:show_list="1" lastn="10">
<li><a href="<$mt:PagePermalink$>"><$mt:PageTitle encode_html="1"$></a></li>
</mt:Pages>
</ul>
</div>
<$mt:Include module="sh_ダウンロード"$>
</mt:If>
<mt:ElseIf name="entry_template">
以下続く...
これで、エラーページ以外には目次が出力されます。ポイントはカスタムフィールドのベースネームとテンプレートタグの使い分けです。
コメント