« Movable Type Open Source Project を活用しよう @ 関西オープンソース2007。 | メイン | 月別アーカイブのリストに「年度」見出しを付ける。 »

KOFの会場にACアダプタ忘れて来て凹む。

KOFで話して来た...のはいいんだけど帰ってみるとMacBookのACアダプタが無いことに気づく。事務局に確認するにしてもとたんに月曜日困るからなぁ...凹む。

ってかバレーの選手たちが頑張ってるのに凹んでる場合じゃないですぜ、旦那(笑)。

思い当たったのが、カテゴリでの絞り込みをした際の個別エントリーページの表示。この時、前のエントリーと次のエントリーへリンクを張るわけですが、ここのロジックがかなり地道な作業を行っており、一つエントリーを拾ってきてカテゴリを照会し、異なれば次のエントリーを拾って、ということをやっているんですね。で、コレで何がどうなるのかというと、膨大なエントリーがあるブログで、例えばとあるカテゴリーに1件しかエントリーがない場合、あるはずのない同一カテゴリーに所属するエントリーを求めて、端から端までなめる訳です。

もしもブログ内の各エントリーの authored_on (created_on) がユニークだと決めうちしちゃえるなら以下のような感じで。決めうちできないなら authored_on から数字を(足す|引く)してから数件取得すればいいと思います。でも僕だったらカテゴリーのエントリーをリストアップした時に前後のエントリーIDを引数にくっつけちゃいますけどね。...&next=131&prev=98 とか。


my $next = neighbor_entry($entry, $category->id, 'next');
my $prev = neighbor_entry($entry, $category->id, 'prev');

sub neighbor_entry {
    my ($entry, $category_id, $prev_or_next) = @_;
    my $direction = 'ascend';
    if ($prev_or_next eq 'prev') {
        $direction = 'descend';
    }
    return MT::Entry->load({ blog_id => $entry->blog_id,
                             status => 2 },
                           { sort => "authored_on",
                             start_val => $entry->authored_on,
                             direction => $direction,
                             limit => 1,
                             'join' => [ 'MT::Placement', 'entry_id',
                                       { blog_id => $entry->blog_id,
                                         category_id => $category_id },
                                       { unique => 1 } ],
                           } );
}

カテゴリー: MovableType

トラックバック

このエントリーのTBPingURL:
http://junnama.alfasado.net/mt/RRrt4444.mt/2287/kofac.html

この一覧は、次のエントリーを参照しています: KOFの会場にACアダプタ忘れて来て凹む。:

» Re: KOFの会場にACアダプタ忘れて来て凹む。 (Junnama Online (Mirror)) 送信元 talk to oneself 2
遅くなりましたがお返事エントリー。 [詳しくはこちら]

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


トップページ | アーカイブ(このブログの全てのエントリーの一覧)

最近のエントリー

このブログのフィードを取得
[フィードとは]