45式::雑記
45式::雑記は、日々の事を記してないから日記ではなく雑記です。

投稿日時順の記事一覧から最新更新日時を探す方法

コメント
0件
トラックバック
0件

きっかけ

Atomフィードの更新日時を出力するコードが気になりました。
テンプレートは自作ではなく、規定のブログテンプレートセットから拝借したものです。

<updated><MTEntries lastn="1"><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></MTEntries></updated>

どうしてフィードの更新日時に、最新記事の更新日時を使っているのでしょうか。

最新記事に拘って参照するなら投稿日時、MTEntryDateタグの方が相応しいと思うのです。

<updated><MTEntries lastn="1"><$MTEntryDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></MTEntries></updated>

でも更新日時に拘って参照するなら、それは最新記事からではなく配信している記事中で一番新しい更新日時の方が相応しいと私は思います。

そんなわけで、投稿日時順中の記事一覧から最新の更新日時を取得してみました。

コード

私が思いついた方法は二つです。

個別に比較して探す方法

こちらの方法では、更新日時を一件ずつ比較して、最新のものを探しています。

<MTEntries sort_by="created_on" lastn="15">
    <$MTEntryModifiedDate format="%Y%m%d%H%M%S" setvar="entry_date"$>
    <MTIf name="entry_date" ge="$date"$>
        <$MTEntryModifiedDate format="%Y%m%d%H%M%S" setvar="date"$>
    </MTIf>
</MTEntries>

<updated><MTDate ts="$date" utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></updated>

ハッシュを作って探す方法

こちらの方法では、ハッシュを利用して更新日時の一覧を作り、時系列に並べ替え、最新のものを探しています。

<MTSetHashVar name="date">
    <MTEntries sort_by="created_on" lastn="15">
        <$MTEntryModifiedDate format="%Y%m%d%H%M%S" setvar="$__counter__"$>
    </MTEntries>
</MTSetHashVar>

<MTLoop name="date" sort_by="value numeric reverse">
    <MTIf name="__first__">
        <updated><$MTDate ts="$__value__" utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></updated>
    </MTIf>
</MTLoop>

参考情報

コメント[0]

コメントはまだありません。

コメント投稿フォーム

コメントを投稿するにはJavaScirptが必要です。ブラウザのJavaScriptを有効にしてください。

コメント投稿フォーム

トラックバック[0]

トラックバックはまだありません。

カテゴリ
アーカイブ
ヘルプ
Feed

フィードとは