TopMovable Typeカスタマイズカテゴリー > 2009年2月
2009年2月10日

カテゴリーアーカイブページの最後に「続きを読む」のリンクを表示する

February 10,2009 1:35 AM
Tag:[, , ]
Permalink

カテゴリーアーカイブページで表示するブログ記事数を制限している場合、ページの最後に「続きを読む」のリンクを表示し、そのリンクをクリックすれば、月別カテゴリーアーカイブページにジャンプするカスタマイズです。

例えば、カテゴリーアーカイブページで新着5件のブログ記事を表示している場合、「続きを読む」のリンクをクリックすれば、新着6件目のブログ記事のある月別カテゴリーアーカイブページの該当記事の位置までジャンプします。

図にすると次のような感じです。

カテゴリーアーカイブページの最後に「続きを読む」のリンクを表示する

1.カスタマイズ

当サイトの配布テンプレートの場合、「ブログ記事リスト」を次のように変更します。他のテンプレートでも構造はそれほど大きく変わらないので利用できると思います。

変更前

...前略...
<mt:if name="datebased_archive">
  <mt:entries>
    <mt:entryTrackbackData />
    <mt:include module="ブログ記事の概要" />
  </mt:entries>
<mt:else>
  <mt:entries limit="auto">
    <mt:entryTrackbackData />
    <mt:include module="ブログ記事の概要" />
  </mt:entries>
</mt:if>
 
</div>
</div>
...後略...

変更後

...前略...
<mt:if name="datebased_archive">
  <mt:entries>
    <mt:entryTrackbackData />
    <mt:include module="ブログ記事の概要" />
  </mt:entries>
<mt:else>
  <mt:entries lastn="6">
    <mt:unless name="__last__">
      <mt:entryTrackbackData />
      <mt:include module="ブログ記事の概要" />
    <mt:else>
      <mt:entryDate format="/%Y/%m/" setvar="year_month" />
      <mt:entryID setvar="entry_id" pad="1" />
    </mt:unless>
  </mt:entries>
</mt:if>
 
<mt:if name="archive_class" eq="category-archive">
  <mt:ifArchiveTypeEnabled archive_type="Category-Monthly">
<div class="content-nav">
  <a href="<mt:blogURL /><mt:subCategoryPath separator="-" /><mt:getVar name="year_month" />#a<mt:getVar name="entry_id" />">続きを読む</a>
</div>
  </mt:ifArchiveTypeEnabled>
</mt:if>
 
</div>
</div>

limit モディファイアを lastn モディファイアに変更し、lastn モディファイアの値に、「カテゴリーアーカイブページに表示したい件数+1」を設定します(ここでは「6」)。

最後の1件はカテゴリーアーカイブページに表示せず、ブログ記事情報(投稿月日とブログ記事ID)だけを取得し、変数に保持します。

そのあと、カテゴリーアーカイブで、月別カテゴリーアーカイブのアーカイブマッピングがある場合
のみ、ブログURL・サブカテゴリーパスと変数の情報を使って、月別カテゴリーページの該当記事へのアンカーを生成します。

2.注意事項

余談です。

元テンプレートが limit モディファイア「auto」を使っているので、当初は次のように、limit モディファイアと unique モディファイアを組み合わせ、新着1件のブログ記事情報を取得しようと思いましたが、正常に動作しません(情報が取得できず)でした。

...前略...
<mt:if name="datebased_archive">
  <mt:entries>
    <mt:entryTrackbackData />
    <mt:include module="ブログ記事の概要" />
  </mt:entries>
<mt:else>
  <mt:entries limit="auto">
    <mt:entryTrackbackData />
    <mt:include module="ブログ記事の概要" />
  </mt:entries>
</mt:if>
 
<mt:if name="archive_class" eq="category-archive">
  <mt:ifArchiveTypeEnabled archive_type="Category-Monthly">
    <mt:entries unique="1" limit="1">
      <mt:entryDate format="/%Y/%m/" setvar="year_month" />
      <mt:entryID setvar="entry_id" pad="1" />
    </mt:entries>
<div class="content-nav">
  <a href="<mt:blogURL /><mt:subCategoryPath separator="-" /><mt:getVar name="year_month" />#a<mt:getVar name="entry_id" />">続きを読む</a>
</div>
  </mt:ifArchiveTypeEnabled>
</mt:if>
 
</div>
</div>
...後略...

3.関連記事

WolaWola - リアルタイプ:「アーカイブ」のリンク
Comments [13] | Trackbacks [1]
2009年2月 3日

Movable Type のカテゴリーリストで特定のカテゴリーを非表示にする

February 3,2009 1:31 AM
Tag:[, , ]
Permalink

Movable Type でカテゴリー一覧を表示するときに、特定のカテゴリーを非表示にするカスタマイズです。

1.基本

特定のカテゴリーを非表示にするには、次のように MTUnless タグと like モディファイアを組合わせて使用します。この例では、「cat1」「cat2」「cat3」のカテゴリーを、カテゴリー一覧に表示しません。

<mt:categories>
  <mt:unless tag="CategoryLabel" like="cat1|cat2|cat3">
カテゴリーの処理
  </mt:unless>
</mt:categories>

カテゴリーのフィルタリングでは、FilterCategories プラグインが有名で、上記のような書式でフィルタリングすることができますが、カテゴリー名が重複している場合は適正にフィルタリングできないという問題があります。

2.同名のカテゴリーが存在する場合

同名のカテゴリーが存在する場合は、tagモディファイア・like モディファイアとカテゴリーIDを組合わせてフィルタリングします。

<mt:categories>
  <mt:unless tag="CategoryID" like="^3$||^5$|^7$">
カテゴリーの処理
  </mt:unless>
</mt:categories>

likeモディファイアを使用する場合の注意点ですが、前述のサブテンプレートを、

<mt:categories>
  <mt:unless tag="CategoryID" like="3|5|7">
カテゴリーの処理
  </mt:unless>
</mt:categories>

と書くと、カテゴリーIDの番号が「3」「5」「7」を含むものすべてのID(「13」とか)が対象になってしまうため、正規表現の「^」と「$」を付与しています。

3.似たようなカテゴリー名が存在する場合

1項のようにカテゴリー名で判定するときも、冒頭の例では「cat1-1」なども含まれてしまうので、正規表現の「$」を付与して、

<mt:categories>
  <mt:unless tag="CategoryLabel" like="cat1$|cat2$|cat3$">
カテゴリーの処理
  </mt:unless>
</mt:categories>

とすると良いでしょう。

Comments [0] | Trackbacks [1]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3