Movable Type CMSプラットフォーム Movable Type
ドキュメントサイト

Movable Type 7 ManualMovable Type 7 マニュアル

コンテンツタイプの検索の概要

最終更新日: 2019.07.03

サイトに検索フォームを設置することでコンテンツデータを検索できます。コンテンツデータの検索では、コンテンツフィールドを指定して検索できるので、記事とウェブページの検索よりも柔軟な検索を実現できます。

コンテンツデータの検索に利用する CGI スクリプト

コンテンツデータの検索は、記事やウェブページの検索で利用される mt-search.cgi では行えません。Movable Type 7 から用意されている mt-cdsearch.cgi を利用します。

mt-cdsearch.cgi は、コンテンツデータの検索専用となっており、同時に記事やウェブページを検索することはできません。

mt-cdsearch.cgi のスクリプト名は、ContentDataSearchScript 環境変数で変更できます。

PSGI 環境においては、CGI ファイル名を変更しただけではスクリプトファイル名の変更が行われません。必ず ContentDataSearchScript 環境変数で新しいスクリプト名を指定してください。

コンテンツタイプの指定

コンテンツデータの検索では、検索対象となるコンテンツタイプを SearchContentTypes パラメーターで指定する必要があります。指定できるのはコンテンツタイプの名前IDユニークIDのいずれかです。

mt-cdsearch.cgi?SearchContentTypes=Page&search=foo

コンテンツデータの検索対象

コンテンツデータの検索では、ほぼすべてのフィールドが検索の対象となりますが、以下のフィールドは検索対象から除外されます。また、それ以外のフィールドでもいくつかの制限があります。

検索対象とならないフィールド

  • データ識別ラベル(手入力の場合)
  • 公開日、公開終了日、日付、日付と時刻フィールド(日時の範囲指定による検索のみ可能)
  • テーブルフィールド

また、Movable Type の標準では提供しているフィールドはありませんが、blob タイプのフィールドも検索対象となりません。

条件付きで検索対象となるフィールド

セレクトボックス、ラジオボタン、チェックボックスについては、入力されているラベルは検索できません。フィールドの値として選択されている値が検索対象となります。

ラベル: 単身
値: Single

上記例の場合、search=single は検索にマッチしますが、search=単身 はマッチしません。

リンクされているオブジェクトの検索

アセット、カテゴリセット、タグ、コンテンツタイプのフィールドも検索対象となりますが、検索対象となるフィールドはそれぞれによって違います。

アセット(アセット、画像、オーディオ、ビデオ)

リンクされているアセットの説明ファイル名ラベルが検索対象となります。

カテゴリセット

リンクされているカテゴリのベースネーム説明ラベルが検索対象となります。

タグ

リンクされているタグの名前が検索対象となります。

コンテンツタイプ

リンクされているコンテンツタイプに含まれるフィールドについて検索がおこなわれます。リンク先のコンテンツタイプに含まれるコンテンツタイプフィールドは検索対象となりません。(1階層のみ検索される)

日付範囲の指定

コンテンツデータ検索では、公開日以外にも日付フィールド日付と時刻フィールドを指定して範囲検索ができます。

フィールドの指定は date_field パラメーターに日付と時刻フィールドまたは日付フィールドの名前かユニーク ID を指定します。指定がない場合は、公開日(authored_on)が利用されます。

検索する範囲は、archive_type パラメーターにアーカイブタイプ名を指定することで決定されます。例えば、archive_type=Yearly と指定した場合は、year パラメーターで指定された年のコンテンツデータが検索されます。指定したアーカイブタイプでどの範囲が検索されるかは、以下のルールに従います。

  • archive_type に Daily が含まれる場合、指定した日に検索範囲を絞る
  • archive_type に Weekly が含まれる場合、指定した日を含む週に検索範囲を絞る
  • archive_type に Monthly が含まれる場合、指定した日を含む月に検索範囲を絞る
  • archive_type に Yearly が含まれる場合、指定した日を含む年に検索範囲を絞る

また、日付の範囲指定に関連するパラメータは下表のとおりです。

パラメーター 必須 説明
archive_type 必須 有効なアーカイブタイプを指定して検索範囲を決定します。
year 必須 検索範囲の「年」の部分を指定します。
month 検索範囲の「月」の部分を指定します。省略された場合「01」がセットされます。
day 検索範囲の「日」の部分を指定します。省略された場合「01」がセットされます。
date_field 検索範囲として使う日付フィールドまたは、日付と時刻フィールドの名前かユニーク ID を指定します。省略された場合は、公開日が利用されます。

検索結果のソート

コンテンツデータ検索では、検索結果のソートと並び順の指定に SearchSortBy と SearchResultDisplay パラメーターを使用します。各パラメーターが指定されていない場合は、環境変数 ContentDataSearchSortByContentDataSearchResultDisplay の内容が利用されます。

指定できる値は以下のとおりです。

ContentDataSearchSortBy

  • authored_on
    コンテンツデータの「公開日」の日時でソートします。
  • author_id
    コンテンツデータの作成ユーザー ID でソートします。
  • identifier
    「出力ファイル名」でソートします。
  • created_on
    コンテンツデータの作成日時でソートします。
  • modified_on
    コンテンツデータの変更日時でソートします。
  • field:コンテンツフィールドの名前、ユニーク ID
    コンテンツフィールドでソートします。通常、文字列としてソートされますが、指定されたフィールドが数値型である場合は数値としてソートします。

ContentDataSearchResultDisplay

  • ascend
    古い方(小さい方)から順に表示します。
  • descend
    新しい方(大きい方)から順に表示します。

検索結果テンプレート

コンテンツデータの検索結果は、特に指定がない場合は type が「cd_search_results」であるテンプレートが利用されます。

検索時に設定できるパラメーター

コンテンツデータの検索では、いくつかのパラメーターを指定することができます。大文字小文字は区別されます。

IncludeBlogs

検索対象にするサイトの ID(blog_id)をカンマ区切りで指定します。

ExcludeBlogs

検索対象にしないサイトの ID(blog_id)をカンマ区切りで指定します。

SearchContentTypes

検索対象にするコンテンツタイプの ID、名前、ユニーク ID を指定します。複数のコンテンツタイプを指定することはできません。

SearchSortBy

検索データをソートするフィールドを指定します。

SearchResultDisplay

検索データのソート順を指定します。

Template

検索結果テンプレートのフォーマットを指定します。 値には、mt-config.cgi に記述した SearchAltTemplate で設定したフォーマット名を使用します。 例えば、mt-config.cgi での SearchAltTemplate の設定が以下の場合、このテンプレートファイルを検索結果の表示に使用するには Template パラメーターの値を work にします。

SearchAltTemplate work work.tmpl

archive_type

範囲指定するとき、対象となるアーカイブタイプを指定します

author

コンテンツデータの作成者ででフィルタリングする場合、ユーザーの表示名を指定します。

blog_id

検索のベースになる blog_id を指定します。template_id や Template パラメーターが未指定の場合、blog_id で指定したサイトの検索結果テンプレートが検索結果の表示で利用されます。

content_field

コンテンツフィールドでフィルタリングする場合、コンテンツフィールドの ユニーク ID か名前を指定します。コンテンツフィールドが日付、日付と時刻、バイナリ以外のフィールドが指定できます。指定可能なコンテンツフィールドはひとつのみで、複数フィールドの指定はできません。また、コンテンツフィールドが数値の場合は完全一致検索します。それ以外のフィールドでは、部分一致検索します。AND OR NOT を組み合わせて指定できます。

limit

1 ページあたりの検索数を指定します。

date_field

範囲指定に使う 日付、日付と時刻のフィールドを指定します。

day

日付範囲指定の「日」を指定します。

limit_by

search パラメーターによるキーワード検索の際、複数の検索ワードを半角スペースで区切ったときの検索条件を指定します。

  • all (デフォルト)
    • AND 検索(指定したすべての検索ワードを含む)
  • any
    • OR 検索(指定したいずれかの検索ワードを含む)
  • exclude
    • AND NOT 検索(指定したどの検索ワードも含まない)

month

日付範囲指定の「月」を指定します。

offset

検索結果のうち、スキップしたい件数を指定します。

page

検索結果が複数ページに分かれる場合、表示したい検索結果ページの数値を指定します。

search

検索する文字列を指定します。

template_id

検索結果の表示に利用するテンプレートの ID を指定します。

year

日付範囲指定の「年」を指定します。

関連するテンプレートタグ

こちらのテンプレートタグリファレンスをご参照ください。

関連する環境変数

こちらの環境変数リファレンスをご参照ください。

目次