検索結果画面のページ分割が正常に動作しない不具合を解消する

検索結果画面のページ分割が正常に動作しない不具合を解消する

Posted at May 27,2007 1:23 AM
Tag:[MTPaginate, SearchResult, TroubleShooting]

Movable Type では MTPaginate を利用して、各アーカイブをページ分割することが可能ですが、MTPaginate は検索結果画面のページ分割も可能です。

ですが、デフォルトテンプレートの検索結果画面にある検索フォームから検索を実行した場合、その後のページ分割機能が有効にならない、というご質問を頂きました。ご本人は既にお分かりのようでしたが、折角なので情報展開しておきます。

1.問題

下記のような検索結果画面の状態から、ページ送りのリンク(赤枠部分)をクリックすると、

下のように、検索文字列が何も設定されていない状態で検索した結果画面になります。

2.対処方法

検索結果テンプレートの form の method 属性、

<form method="post" action="<$MTCGIPath$><$MTSearchScript$>" id="search-form">

<form method="get" action="<$MTCGIPath$><$MTSearchScript$>" id="search-form">

に変更するだけです。これで正常にページ送りができるようになります。

なおメインページの検索フォームは get になっていますので、修正の必要はありません。

3.原因

フォームの method 属性が get の場合は、フォームデータを URL の後ろにクエリー(URLエンコードしたデータ)として送信します。つまり post になっていたため、ページ送り時に検索文字列やブログID等、必要な情報が全て欠落していた、というのがこの問題の原因です。

GET と POST については下記のページが参考になるでしょう。

4.その他

ということで、GET メソッドを用いれば問題は解消しますが、フォームデータを URL として表示させたくない場合は post にしてください(ページ分割が機能しないとう制約が残りますが)。

また、Movable Type の検索はどちらの method 属性も対応しているということが分かりました。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)