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

Movable Type 7 ManualMovable Type 7 マニュアル

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

最終更新日: 2019.04.01

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

コンテンデータの検索に利用する 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 が「cdsearchresults」であるテンプレートが利用されます。

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

コンテンツデータの検索では、いくつかのパラメータを指定することができます。

IncludeBlogs

検索対象にする blog_id をカンマ区切りで指定します。

ExcludeBlogs

検索対象にしない blog_id をカンマ区切りで指定します。

SearchContentTypes

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

SearchSortBy

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

SearchResultDisplay

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

Template

検索結果テンプレートを指定します。

archive_type

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

author

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

blog_id

検索のベースになる blog_id を指定します。

content_field

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

count、limit

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

date_field

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

day

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

limit_by

検索条件を指定します。 * all: AND * any: OR * exclude: AND NOT

month

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

offset、startIndex

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

page

検索結果のページ数を指定します。

search, searchTerms

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

template_id

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

year

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

目次