「WordPressで学ぶPHP(1)変数・制御構造編」が発売されました。
「WordPressで学ぶPHP」シリーズの第1巻で、WordPressを通してPHPを学んでいく本です。
この本では、PHPの基本となる変数と制御構造について解説します。
Kindle本で、定価500円です。
ブログ記事詳細検索プラグイン(その16・検索フォーム作成の基本)
SearchEntriesプラグインでは、いくつかのプラグインを組み合わせることで、フォームを使った動的な検索を行うこともできます。
今回は、検索フォームを作る際の基本を解説します。
1.必要なプラグイン
検索フォームでの検索を行う場合、まずリアルタイム再構築プラグイン(RealtimeRebuild)が必要です。
また、リアルタイム再構築プラグインは、「RebuildHelper」というプラグインと協調して動作します。
これら2つのプラグインは、リアルタイム再構築プラグインのページからダウンロードすることができます。
ダウンロードページの指示に従って、インストールを行ってください。
なお、RealtimeRebuild/RebuildHelperプラグインは、それぞれ1.72/1.04以降のバージョンが必要です。
また、フォームで入力された値をテンプレートの中で扱うために、GetQueryParamプラグインのバージョン1.14以降が必要です。
GetQueryParamプラグインは以下からダウンロードすることができます。
ダウンロードしたZipファイルを解凍すると、「GetQueryParam」というフォルダができます。
このフォルダを、Movable Typeの「plugins」ディレクトリにアップロードします。
2.検索フォームの基本的な書き方
フォームを使った検索では、以下のような処理手順を取ります。
- フォームで入力された条件を、リアルタイム再構築プラグインのCGIに送信します。
- CGIによって、検索結果を出力するためのテンプレートが読み込まれ、再構築されて、検索結果として表示されます。
この処理手順に沿うように、HTMLのform要素を使って検索フォームを作ります。
検索フォームの基本的なHTMLの組み方は、以下のようになります。
<form method="get" action="<$mt:RealtimeRebuildCGIPath$>"> <input type="hidden" name="blog_id" value="<$mt:BlogID$>" /> <input type="hidden" name="tmpl_id" value="<$mt:GetTemplateID tmpl_name="検索結果表示テンプレートの名前"$>" /> 検索条件を入力する各要素 </form>
1行目のformタグで、フォームのデータの送信先を、リアルタイム再構築プラグインのCGI(MTRealtimeRebuildCGIタグ)にします。
また、hiddenタイプのinput要素を使って、以下の2つの値をCGIに渡すことが必要です(2行目と3行目)。
name属性 | 内容 |
---|---|
blog_id | 検索結果表示テンプレートが属するブログのID |
tmpl_id | 検索結果表示テンプレートのID |
検索結果もテンプレートで出力します。
そのテンプレートのIDと、テンプレートが属するブログのIDをCGIに渡します。
テンプレートのIDは、「MTGetTemplateID」というテンプレートタグで表すことができます(このテンプレートタグは、RealtimeRebuildプラグインによって追加されます)。
そして、「検索条件を入力する各要素」の部分に、一般的なフォームの要素(inputやselectなど)を入れて、検索のフォームを作っていきます。
なお、検索結果表示テンプレートの基本的な作り方は、次回解説します。
3.検索フォームの基本的な例
例えば、タイトルに特定のキーワードを含むブログ記事を検索するために、検索フォームを作りたいとします。
キーワードはテキストで入力すれば良いので、フォームに「<input type="text"・・・>」のinput要素を入れます。
テキスト入力欄のname属性を、「title」にするとします。
また、検索結果を「詳細検索結果」というテンプレートで出力するとします。
この場合の検索フォームは、以下のように組みます。
<form method="get" action="<$mt:RealtimeRebuildCGIPath$>"> <input type="hidden" name="blog_id" value="<$mt:BlogID$>" /> <input type="hidden" name="tmpl_id" value="<$mt:GetTemplateID tmpl_name="詳細検索結果"$>" /> <p> <label for="title">キーワード</label><br /> <input type="text" id="title" name="title" /> </p> <p> <input type="submit" value="送信" /> </p> </form>
4.検索フォームをテンプレートに入れる
検索フォームを実際に使うには、何らかのテンプレートに入れます。
例えば、検索フォームを独立したページにしたい場合は、インデックステンプレートを新規作成し、メインページ等のテンプレートの内容を元にして、検索フォームを出力するようにテンプレートを作ります。
また、サイドバーに検索フォームを出力するなら、検索フォーム部分をウィジェット化して、サイドバーのウィジェットセットにそのウィジェットを入れると良いでしょう。
テンプレートを作り終わったら、保存しておきます。
ただし、今の時点ではまだ再構築しません(検索結果表示用のテンプレートがないため、再構築するとエラーが発生します)。
検索結果表示用のテンプレートを作ってから、再構築を行います。
なお、サンプルのテンプレートとして、「タイトルに○○を含む」という条件で検索するフォームを、独立したページに入れた例を用意しました。
Movable Type標準の「クラシックブログ」テーマに合わせた構造になっています。
以下のリンクからダウンロードすることができます。
5.SearchEntriesプラグイン関係の記事の一覧
SearchEntriesプラグイン関係のその他の記事は、以下のリンクから参照できます。
- ブログ記事詳細検索プラグイン(その1・概要/インストール/ライセンス)
- ブログ記事詳細検索プラグイン(その2・「ブログ記事のフィールドの値が○○に等しい」場合の検索)
- ブログ記事詳細検索プラグイン(その3・「ブログ記事のフィールドの値に○○を含む」場合の検索)
- ブログ記事詳細検索プラグイン(その4・「ブログ記事のフィールドの値が○○以上」等の場合の検索)
- ブログ記事詳細検索プラグイン(その5・ブログ記事のフィールドどうしでのOR検索)
- ブログ記事詳細検索プラグイン(その6・カテゴリのOR検索)
- ブログ記事詳細検索プラグイン(その7・カテゴリのAND検索)
- ブログ記事詳細検索プラグイン(その8・タグの検索)
- ブログ記事詳細検索プラグイン(その9・カスタムフィールドでの検索の基本)
- ブログ記事詳細検索プラグイン(その10・カスタムフィールドでの検索の応用)
- ブログ記事詳細検索プラグイン(その11・各種の検索条件の指定)
- ブログ記事詳細検索プラグイン(その12・ブログ記事の並べ替え)
- ブログ記事詳細検索プラグイン(その13・検索結果の一部を読み込む)
- ブログ記事詳細検索プラグイン(その14・複雑なOR検索)
- ブログ記事詳細検索プラグイン(その15・検索結果の件数の出力)
- ブログ記事詳細検索プラグイン(その16・検索フォーム作成の基本)
- ブログ記事詳細検索プラグイン(その17・検索結果表示テンプレート作成の基本)
- ブログ記事詳細検索プラグイン(その18・検索を動作させるための設定)
- ブログ記事詳細検索プラグイン(その19・検索フォーム/検索結果表示の事例・1つの数値で検索)
- ブログ記事詳細検索プラグイン(その20・検索フォーム/検索結果表示の事例・数値の範囲で検索)
- ブログ記事詳細検索プラグイン(その21・検索フォーム/検索結果表示の事例・数値の範囲をselectで選択)
- ブログ記事詳細検索プラグイン(その22・検索フォーム/検索結果表示の事例・日付で検索)
- ブログ記事詳細検索プラグイン(その23・検索フォーム/検索結果表示の事例・期間で検索)
- ブログ記事詳細検索プラグイン(その24・検索フォーム/検索結果表示の事例・カテゴリのOR検索)
- ブログ記事詳細検索プラグイン(その25・検索フォーム/検索結果表示の事例・カテゴリのAND検索)
- ブログ記事詳細検索プラグイン(その26・検索フォーム/検索結果表示の事例・タグのOR検索)
- ブログ記事詳細検索プラグイン(その27・検索フォーム/検索結果表示の事例・タグのAND検索)
- ブログ記事詳細検索プラグイン(その28・検索フォーム/検索結果表示の事例・ドロップダウン/ラジオボタンのカスタムフィールドの検索)
- ブログ記事詳細検索プラグイン(その29・検索結果のページ分割/静的な検索の場合)
- ブログ記事詳細検索プラグイン(その30・検索結果のページ分割/動的な検索の場合)
- ブログ記事詳細検索プラグイン(その31・検索結果のページ分割/PHPによるキャッシュ)
- SearchEntriesプラグインでMore Custom FieldsプラグインのCheckbox Groupを検索する(静的編)
- SearchEntries プラグインでMore Custom FieldsプラグインのCheckbox Groupを検索する(動的編)
- SearchEntriesプラグイン不具合修正