SearchEntries

対応バージョン:MovableType7

準備作業

更新日:2024.02.01

SearchEntriesプラグインを、Movable Type 6のData APIに対応させました。
複数ブログにまたがる検索も可能です。
検索条件は従来通りテンプレートタグで書き、検索結果をData APIで得る形を取ります。
Data APIで検索する際の準備作業を解説します。

Movable Typeのコアのコードの書き換え

当プラグインでは、Movable Typeのコアのコードを一部書き換える必要があります。

1.並べ替えのための書き換え

カスタムフィールドの値で記事を並べ替える必要がある場合は、「lib」→「MT」→「ObjectDriver」→「Driver」ディレクトリにある「DBI.pm」の550行目~575行目を書き換えます。
書き換え方は、Movable Type 5.2の場合と同じです。
なお、この書き換えは、Data APIで検索しない場合でも行います。

2.Data API用の書き換え

Data APIで検索するために、Movable Typeのインストール先で、「lib」→「MT」→「DataAPI」→「Endpoint」ディレクトリにある「Common.pm」の378行目~400行目を、以下のように書き換えます。

書き換え前

my %load_options = (
    terms => { %$terms, @blog_id_term },
    args  => {%$args},
    sort_by    => $q->param('sortBy')    || '',
    sort_order => $q->param('sortOrder') || '',
    limit      => $limit,
    offset     => $offset,
    scope      => $scope,
    blog       => $blog,
    blog_id    => $blog_id,
    blog_ids   => $blog_ids,
    %$options,
);
 
my %count_options = (
    terms    => { %$terms, @blog_id_term },
    args     => {%$args},
    scope    => $scope,
    blog     => $blog,
    blog_id  => $blog_id,
    blog_ids => $blog_ids,
    %$options,
);

書き換え後

my $opt_terms;
if (ref $terms eq 'HASH') {
    $opt_terms = { %$terms, @blog_id_term };
}
else {
    $opt_terms = [ @$terms ];
    if (@blog_id_term) {
        push @{$opt_terms}, (
            '-and',
            { blog_id => $blog_id_term[1] }
        );
    };
}
my %load_options = (
    terms => $opt_terms,
    args  => {%$args},
    sort_by    => $q->param('sortBy')    || '',
    sort_order => $q->param('sortOrder') || '',
    limit      => $limit,
    offset     => $offset,
    scope      => $scope,
    blog       => $blog,
    blog_id    => $blog_id,
    blog_ids   => $blog_ids,
    %$options,
);
 
my %count_options = (
    terms => $opt_terms,
    args     => {%$args},
    scope    => $scope,
    blog     => $blog,
    blog_id  => $blog_id,
    blog_ids => $blog_ids,
    %$options,
);

検索用テンプレートを判別するためのカスタムフィールドの作成

Data APIの検索用テンプレートかどうかを判断するために、検索対象のブログ(またはウェブサイト)に、以下のカスタムフィールドを作成します。

システムオブジェクトテンプレート
名前DataAPI検索
種類チェックボックス
必須?チェックをオフにする
規定値チェックをオフにする
ベースネームdata_api_search_template

なお、説明とテンプレートタグは、自由に決めていただいて構いません。
また、複数のブログ(ウェブサイト)にまたがって検索する場合は、その中のどれか1つで上記のカスタムフィールドを作ります。

前へ
プラグインTOP
次へ
目次