Movable Type 備忘録

 キャッシュを使ってカテゴリ内の最近のエントリ一覧表示

  • Dec072008
  • Vote:
    http://bizcaz.com/archives/2008/12/07-165509.php
  • Categories: Tips
  • Tags: , ,
  • Social Bookmark

こんにちわ^^

東京の今日の天気は快晴です。雲ひとつない、とっても気分がいい青空でした (●´∀`●) ♪
お洗濯も済ませ、買い物も散歩がてら午前中に済ませてきました。なので残りは猫たんと遊んだり、英語の勉強したりなどして過ごしました。

さて、今回はキャッシュを使ってカテゴリ内での最近のエントリ一覧表示についてです。
このサイトの「最近のエントリ一覧」は以下のように分類して表示してます。

  • カテゴリに依存する場合

    • ブログ記事ページ
    • カテゴリページ
  • カテゴリに依存しない場合

    • 各インデックスページ
    • 各ウェブページ
    • 日別/月別/年別アーカイブページ

上記のようにカテゴリに依存するページとそれ以外と分けて表示してます。
カテゴリに依存する場合には、文字通りカテゴリ内で最新 10 件分のエントリ一覧の表示を、依存しない場合にはサイト内で最新 10 件分のエントリ一覧の表示というような分け方です。

見比べてみると分かると思いますが、一覧の内容がページによって異なります。
これは関連( カテゴリ )した記事を探しやすいようなわたしなりの配慮で、直近の記事、過去の記事すべてにおいて同じ表示されるようにしてます。

キャッシュを使ってカテゴリごとの最近のエントリ一覧表示

具体的には以下の手順で表示できます。

  1. 「最近のエントリ一覧」ウィジェット

    1. <mt:Ignore>▼表示件数(=10)▼</mt:Ignore>
    2. <mt:SetVar name="entcnt" value="10">
    3.  
    4. <mt:Ignore>▼カテゴリページ用エントリ一覧▼</mt:Ignore>
    5. <mt:If name="category_archive">
    6.     <$MTCategoryLabel setvar="catname"$>
    7.     <ul>
    8.     <MTEntries lastn="$entcnt" category="$catname"><li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li></MTEntries>
    9.     </ul>
    10.     <div><a href="<$MTBlogArchiveURL$>#cat<$MTCategoryID$>">ARCHIVES</a></div>
    11.  
    12. <mt:Ignore>▼ブログ記事ページ用エントリ一覧▼</mt:Ignore>
    13. <mt:ElseIf name="entry_template">
    14.     <MTEntryCategories lastn="1"><$MTCategoryLabel setvar="catname"$><$MTCategoryID setvar="catid"$></MTEntryCategories>
    15.     <ul>
    16.     <MTEntries lastn="$entcnt" category="$catname"><li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li></MTEntries>
    17.     </ul>
    18.     <div><a href="<$MTBlogArchiveURL$>#cat<$mt:GetVar name="catid"$>">ARCHIVES</a></div>
    19.  
    20. <mt:Ignore>▼他ページ用エントリ一覧▼</mt:Ignore>
    21. <mt:Else>
    22.     <ul>
    23.     <MTEntries lastn="$entcnt"><li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li></MTEntries>
    24.     </ul>
    25.     <div><a href="<$MTBlogArchiveURL$>">ARCHIVES</a></div>
    26. </mt:If>

    青字の部分がカテゴリページ用の「最近のエントリ一覧」になります。
    赤字の部分がブログ記事ページ用で、緑字がそれ以外のページ用の「最近のエントリ一覧」が表示されるようになります。
    カテゴリページとブログ記事ページは結果的には同じものが表示されます。 同じものが表示されますが、その方法が少し違うので MTIf タグで括って別条件にしてるわけですね。

  2. 各テンプレート内で個別キャッシュ名を定義

    各テンプレート内からキャッシュ名を定義します。
    先ほど記したように、各カテゴリごとの一覧+他ページ用の一覧を作成するためです。 厳密にはカテゴリ数+ 1 数分の一覧が作成されます。

    具体的に記します。
    まずはカテゴリテンプレート内の先頭辺りに以下を追加します。

    カテゴリアーカイブテンプレートのキャッシュ名

    1. <$MTArchiveTitle setvar="cache_key"$>

    キャッシュ名にはカテゴリ名称を使用してます。
    同様にブログ記事テンプレート内の先頭に以下を追加します。

    ブログ記事テンプレートのキャッシュ名

    1. <$MTEntryCategory setvar="cache_key"$>

    そして最後に上記以外のテンプレートには以下を追加します。

    ブログ記事テンプレートのキャッシュ名

    1. <mt:SetVar name="cache_key" value="general">

    これでカテゴリ数+ 1 の数だけエントリ一覧ができあがります。

  3. キャッシュ付きで「最近のエントリ一覧」再構築

    最後の「最近のエントリ一覧」をキャッシュ付きで再構築されるよう以下のように変更します。

    キャッシュ付きで再構築

    1. <$mt:Include widget="<__trans phrase="Recent Entries List">" cache="1" key="$cache_key" ttl="600"$>

    青字の cache モディファイアでキャッシュ機能を有効にします。必須です。キャッシュを使わない場合には 0 を指定すれば OK です。
    赤字の key モディファイアでキャッシュのキーを指定します。ここには先ほど各テンプレートで追加したキャッシュ名を指定します。必須です。
    緑字の ttl でキャッシュの有効時間を秒単位で指定できます。オプションです。指定しない場合にはデフォルトの 60 分間になります。上記では 10 分間有効となります。

以上です。

 Trackback Pings(0)

No trackbacks found.

 Comments(0)

No comments found.

 Post a Comment

 

コメント用フィード