mtde.info

Movable Type Developers Express

ハッシュ変数を使って同一カテゴリ内の前・次リンク表示(エントリベースネーム順)

2008年3月27日 00:00 | Writer: apstar | 記事本文

ハッシュ変数を用い、同一カテゴリ内エントリのみの前のリンク・次のリンクを、エントリのベースネーム(ファイル名)順に取得します。別のカテゴリのリンクは生成されません。

サイトをファイル名で厳密に管理運用する場合には、カテゴリ内の次・前のエントリへのリンクは、エントリベースネーム順で生成したい場合があります。例えば、このサイト(mtde.info)ではエントリベースネーム名に10番単位でソート用インデックスを付加しており、あとからエントリとエントリの間へ別のエントリを追加して挟むことができる設計となっており、そのような理由でエントリベースネームで判断するコードを先行実装しています。

コード

コードは、先のエントリでも紹介しました、こちらのものを改造させて頂きました。

Movable Type 備忘録ハッシュ変数を使って同一カテゴリ内の前・次リンク表示
<MTIf name="entry_template">
<ul>
<MTIfNonEmpty tag="EntryCategory">
    <MTEntryCategories>
        <MTSetVarBlock name="cat_name"><$MTCategoryLabel$></MTSetVarBlock>
    </MTEntryCategories>
<MTSetVarBlock name="cat"><MTGetVar name="cat_name" index="0"></MTSetVarBlock>
<MTSetVarBlock name="EntBaseName"><$MTEntryBaseName$></MTSetVarBlock>
<MTEntries lastn="0" category="$cat">
        <MTSetVarBlock name="LopEntBaseName"><$MTEntryBaseName$></MTSetVarBlock>
        <MTSetVarBlock name="ent_name" key="$LopEntBaseName"><$MTEntryTitle$></MTSetVarBlock>
        <MTSetVarBlock name="ent_link" key="$LopEntBaseName"><$MTEntryPermalink$></MTSetVarBlock>
</MTEntries>
<MTLoop name="ent_name" sort_by="key value reverse">
        <MTIf name="EntBaseName" eq="$__key__">
            <$MTSetVar name="find" value="1"$>
        <MTElseIf name="find">
            <li class="prev">前のエントリ: <a href="<MTGetVar name="ent_link" key="$__key__">" title="前のエントリ"><MTGetVar name="ent_name" key="$__key__"></a></li>
            <$MTSetVar name="find" value="0"$>
        </MTIf>
</MTLoop>
<MTLoop name="ent_name" sort_by="key value">
        <MTIf name="EntBaseName" eq="$__key__">
            <$MTSetVar name="find" value="1"$>
        <MTElseIf name="find">
            <li class="next">次のエントリ: <a href="<MTGetVar name="ent_link" key="$__key__">" title="次のエントリ"><MTGetVar name="ent_name" key="$__key__"></a></li>
            <$MTSetVar name="find" value="0"$>
        </MTIf>
</MTLoop>
<MTElse>
    <MTEntryPrevious><li class="prev">前のエントリ: <a href="<$MTEntryPermalink$>" title="前のエントリ"><$MTEntryTitle$></a></li></MTEntryPrevious>
    <MTEntryNext><li class="next">次のエントリ: <a href="<$MTEntryPermalink$>" title="次のエントリ"><$MTEntryTitle$></a></li></MTEntryNext>
</MTIfNonEmpty>
</ul>
</MTIf>

このコードは、通常「ブログ記事の詳細」モジュールの一箇所へ貼ります。

動作サンプル

2008年3月現在、このサイトに実装しています。そちらでご確認ください。

ナビゲーション関連サンプル

2008 mtde.info