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

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

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 } ],
                           } );
}

トラックバック(1)

トラックバックURL: http://junnama.alfasado.net/cgi/mt/mt-tb.cgi/149

コメントする

Facebook

Twitter

このブログ記事について

このページは、Junnama Nodaが2007年11月11日 06:04に書いたブログ記事です。

ひとつ前のブログ記事は「Movable Type Open Source Project を活用しよう @ 関西オープンソース2007。」です。

次のブログ記事は「月別アーカイブのリストに「年度」見出しを付ける。」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.2.6