お知らせ

作って覚えるPHP+MySQLアプリケーション 2008年6月24日

作って覚えるPHP+MySQLアプリケーション」が発売されました。
PHP+MySQL+Smartyを使って、ブログ/ショッピングサイト/マッシュアップの3つのWebアプリケーションを作る方法を解説しています。

他にも多数書籍を執筆しています。
こちらもぜひご覧ください。

RelatedEntriesプラグインの改造

| コメント(6) | トラックバック(1)

拙著「ブログ簡単パワーアップMovable Typeスーパーカスタマイズテクニック」の中で、「RelatedEntries」というプラグインを紹介しています。
このプラグインは、エントリー間の関連付けを設定して、エントリーに関連する他のエントリーを一覧表示できるようにするものです。

このプラグインに対して要望がありましたので、改造方法を紹介します。

1.すべてのBlogから関連するエントリーを取り出したい

RelatedEntriesプラグインの標準の動作では、エントリーと同一のブログからのみ関連するエントリーを取り出します。
しかし、複数のBlogを管理している場合、それらすべてのBlogから関連するエントリーを取り出したい場合もあります。
その場合は、RelaatedEntries.plの以下の2箇所を書き換えます。

・183行目
書き換え前:{ blog_id => $blog_id },
書き換え後:{},

・221行目
書き換え前:my $entry_count = MT::Entry->count({ blog_id => $blog_id });
書き換え後:my $entry_count = MT::Entry->count();

2.タイトル順に並べ替えて出力する

RelatedEntriesプラグインの標準の動作では、関連するエントリーは日付順に並べ替えて出力します。
ただ、これをタイトル順に変えたいという場合もあります。
それには、RelaatedEntries.plの34行目~48行目を以下のように差し替えます。

・差し替え前

# get attributes
$lastn = $args->{'lastn'} or $lastn = 0;
$sort_order = $args->{'sort_order'};
if ($sort_order ne 'ascend' && $sort_order ne 'descend') {
    $sort_order = $blog->sort_order_posts;
}

# load related entries
my @related_entries;
&load_related_entries($entry->id, \@related_entries);
if ($sort_order eq 'ascend') {
   @related_entries = sort { $a->created_on <=> $b->created_on } @related_entries;
} else {
   @related_entries = sort { $b->created_on <=> $a->created_on } @related_entries;
}

・差し替え後

# get attributes
$lastn = $args->{'lastn'} or $lastn = 0;
$sort_order = $args->{'sort_order'};
if ($sort_order ne 'ascend' && $sort_order ne 'descend') {
    $sort_order = $blog->sort_order_posts;
}
my $sort_by = $args->{'sort_by'};
$sort_by = '' if ($sort_by ne 'title');

# load related entries
my @related_entries;
&load_related_entries($entry->id, \@related_entries);
if ($sort_by eq 'title') {
    if ($sort_order eq 'ascend') {
        @related_entries = sort { $a->title cmp $b->title } @related_entries;
    } else {
        @related_entries = sort { $b->title cmp $a->title } @related_entries;
    }
}
else {
    if ($sort_order eq 'ascend') {
        @related_entries = sort { $a->created_on <=> $b->created_on } @related_entries;
    } else {
        @related_entries = sort { $b->created_on <=> $a->created_on } @related_entries;
    }
}

これにより、MTEntriesRelatedEntriesタグに「sort_by」というアトリビュートが追加されます。
「sort_by="title"」とすると、エントリーのタイトルで並べ替えられるようになります。それ以外の場合はエントリーの日付順で並べ替えられます。
また、「sort_order」アトリビュートと併用して、昇順/降順を切り替えることもできます。

トラックバック(1件)

このブログ記事を参照しているブログ一覧: RelatedEntriesプラグインの改造

このブログ記事に対するトラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/431.

» movabletypeカスタマイズテクニック(ブログで稼ぐアフィリエイト サイト構築マニュアル)からのトラックバック

Movabletypeカスタマイズの参考となるサイト 続きを読む

コメント(スレッド6件,コメント6件)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。

No.1 47th : (無題)

はじめまして。
MTスーパーカスタマイズテクニックに掲載されていたプラグイン(MT Related EntriesとMT Insert Link)をインストールしたところ、プラグインの管理画面では正常にリストアップされているのですが、設定をしようとしたり(Related Entries)、編集画面で使おうとすると(Insert Link)、ログイン情報の入力を求められるので、管理画面へのログイン情報と同じID、PWを入れたのですが、「ログインできません」と言われてしまいます。
これまでに入れたBIGAPIやStyle Catcherは問題なく動作しています。Cookieのキャッシュを削除したり、2日ぐらい間を置いてみたりもしてみましたが、やはりうまくいきません。
MTのVersionは3.2で、サーバーはLollipop、DBはSQLiteです。使い勝手の良さそうなプラグインなだけに、残念なのですが、何か解決法があれば教えて頂けないかと思いコメントさせて頂きました。

No.2  Author Profile Page: (無題)

>47thさん
こんにちは。プラグインご利用ありがとうございます。

ご質問の件ですが、こちらでは現象を再現できないので、申し訳ありませんが解決方法は不明です。

No.3 MTtype : (無題)

本に記載されていたzipファイルは商用利用しても良いのでしょうか?

No.4  Author Profile Page: (無題)

>MTTypeさん
こんにちは。

本に記載したプラグインそのものを販売したり、何かに添付して配布するといったことは、申し訳ありませんがご遠慮ください。

プラグインを商用サイト作成の道具として(商用サイト用のMTにインストールして)利用されるのであれば、それはかまいません。
その場合は、利用先のサイトをお教えいただきたく思います。

No.5 s.fujino : (無題)

こんにちは。
アップグレードのタイミングを失して、未だに3.171です。
サーバに何かが足りないのか、プラグイン一覧に表示されませんでした。
それで、ブラウザから直接 cgi を呼び出したら、今度は MT::PluginData のエラーになりました。やはり、3.171 では無理ですか。

No.6  Author Profile Page: (無題)

>s.fujinoさん
こんにちは。

このプラグインは、Movable Type 3.2以降の機能を利用していますので、3.171では動作させることはできません。

コメントする

管理者のみにコメントを送信したい場合は、「コメントを秘密にする」のチェックをオンにしてコメントを送信するか、メールフォームからメールをお送りください。

ブログ全体の感想など、この記事に直接に関係しないコメントは、ゲストブックにお気軽に投稿してください。


アーカイブ

ブログパーツ

ステータス