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

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

Posted at February 10,2009 1:35 AM
Tag:[Category, Customize, MovableType]

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

例えば、カテゴリーアーカイブページで新着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 - リアルタイプ:「アーカイブ」のリンク
関連記事
トラックバックURL


トラックバック

リアルタイプ:「アーカイブ」のリンク from WolaWola
インデックステンプレートの下部には、そこに表示されていない他のブログ記事へ誘導する為の「アーカイブ」というリンクがあります。このリンク先がアーカイブインデ... [続きを読む]

Tracked on February 11, 2009 4:59 PM
コメント

お忙しいところ大変申し訳ありません、質問があります。
「続きを読む」を押した後、ページ上部に「カテゴリ月別」のリンクが現れます。
このリンクをページ下に、あるいは上下に表示させることは可能でしょうか?

[1] Posted by taki : May 4, 2009 10:34 PM

>takiさん
こんばんは。
ご質問の件で確認ですが、「ページ上部に「カテゴリ月別」のリンク」というのは、例えば「ハンドメイドギア」カテゴリページに移動した後の

« ハンドメイドギア: 2007年3月 | Main | ハンドメイドギア: 2007年9月 »

というリンクのことでしょうか。
であれば、「ブログ記事リスト」アーカイブテンプレートの、この記事の1項で追加した下(</div> が2つ並んでいる直前)に下記のタグを追加してください。

<div class="content-nav">
    <mt:archivePrevious>
    <a href="<mt:ArchiveLink />">&laquo; <mt:archiveTitle /></a> |
    </mt:archivePrevious>
    <a href="<mt:Link template="main_index" />">Main</a>
    <mt:archiveNext>
    | <a href="<mt:ArchiveLink />"><mt:archiveTitle /> &raquo;</a>
    </mt:archiveNext>
</div>

それではよろしくお願い致します。

[2] Posted by yujiro logo : May 4, 2009 11:46 PM

お忙しいところ、回答いただきましてありがとうございました!

[3] Posted by taki : May 5, 2009 9:13 PM

はじめまして。
いつも大変役立たせていただいております。
また、ご挨拶もせず、大変失礼しておりました。

現在、拙ブログはMT4.24で稼動しており、当エントリーのカスタマイズを試してみました。
しかし、IDは取得している模様なのですが、「続きを読む」をクリックしても、「ページがみつかりません」のエラーが出てしまいます。
ブログ記事リストには、月別カテゴリーアーカイブのアーカイブマッピングは存在しています。
原因としては何が考えられますでしょうか。

また、
<mt:entries>には、 lastn="11"を設定しているのですが、10件以下のカテゴリーにも「続きを読む」の表示が出てしまうのは仕様でしょうか?

うまく説明できなくて申し訳ありませんが、よろしくお願い致します。

[4] Posted by やまだ : May 8, 2009 11:03 AM

お騒がせ致しました・・・
上記コメントの件に関しましては、あれこれ考えてみましたが・・・諦めました(*_*)
月別カテゴリーアーカイブでお茶を濁します。

ただ、月別カテゴリーアーカイブからページを表示させると、レイアウトが崩れてしまいます(拙ブログは3カラムです)。
右カラムが、左カラム下や、コンテナ内に入り込んだりします。
困ったことに、崩れない月も存在したりします・・・

こうなってしまうと、もうお手上げです・・・
お騒がせついでと言ってはなんですが、お助けいただけますでしょうか。

[5] Posted by やまだ : May 8, 2009 4:16 PM

>やまださん
こんばんは。
テンプレートご利用ありがとうございます。
ご質問の件ですが、こちらからいくつかの月別カテゴリーアーカイブページを拝見させていただいたところ、正常に表示されているようです。
まだ解消していないようでしたら、お手数ですが、該当のページのURLとご利用のブラウザ名をお知らせください。
それではよろしくお願い致します。

[6] Posted by yujiro logo : May 9, 2009 2:16 AM

yujiro様
お手数をおかけして申し訳ありません。
実は現在、初期状態に戻しておりまして、私も正常に稼動しているのを確認しております。
レイアウトが崩れるのは、月別アーカイブの年別折りたたみのスクリプトが原因のようなのです。
本日、現状のアーカイブの下に追加しておきますので、症状を確認をしていただければ幸いです。

よろしくお願い致します。

[7] Posted by やまだ : May 9, 2009 8:39 AM

申し訳ありません、

ブラウザは、IE6。
URLは一例として、
http://sarayama-prs.com/blog/archive/cat25/cat26/2009/05/

サブカテゴリー(どこでも)を表示して、
月別カテゴリーアーカイブのリンクからページを表示させれば症状は発生します。
IE7では、回り込みは発生しませんが、
月別アーカイブの年別折りたたみ以下のサイドメニューの表示がおかしくなります。
opra9.5、Firefox2.0では正常に表示されるようです。

何度も書き込んでしまい、コメント欄汚しのようで申し訳ありません・・・

[8] Posted by やまだ : May 9, 2009 9:11 AM

何度も何度も申し訳ありません。

月別アーカイブの、
<dd class="side">の次に、<div id="categories">を挿入したところ、解決しました。
このやり方で合っているのかわかりませんが、レイアウトの崩れはなくなりました。

本当にお騒がせしてしまいましたが、
これからもよろしくお願い致します。

yujiroさんのご活躍を、心より祈念しております。

[9] Posted by やまだ : May 9, 2009 2:51 PM

>やまださん
こんばんは。
ご質問の件ですが、[9]のコメントで書いていただいた対処方法は好ましくありません。
ページのソースを拝見させていただいたところ、おそらく月別アーカイブリストのツリー化?の設定が間違っているように思います。
月別アーカイブリストのツリー化で参考にした記事を再度ご覧になり、設定しなおしてみてください。
再設定して不具合が直らない場合、お手数ですが、参考にした記事のURLをご連絡ください(当方のカスタマイズ記事が間違っているかもしれないので)。
それではよろしくお願い致します。

[10] Posted by yujiro logo : May 10, 2009 12:48 AM

yujiro様
拙ブログなどを気に留めていただきありがとうございます。

参考にさせていただいた記事は、
http://www.koikikukan.com/archives/2006/12/18-003923.php
他、ツリー化、折りたたみ関連。
それから、
http://www.koikikukan.com/archives/cat_26.php
です。

実は私、
<div>なのか、<dt>、<dd>なのかもよくわからないヘタレです・・・
div要素だと、IE6においては、フォント表示が極小になってしまいます。
dt、ddを用いると、レイアウトが崩れます。

何度かやり直してみましたが、どうしてもうまくいきません。
諦めの境地に入り始めました^^;

ちなみに現在は、div要素を用いたものを置いてあります。

[11] Posted by やまだ : May 10, 2009 11:05 PM

>やまださん
こんにちは。
それでは、
http://www.koikikukan.com/archives/2006/12/18-003923.php
のリスト7.2のサンプルコードは以下のものを使ってください(一字一句変更せず)。

<dt class="sidetitle" id="monthlyname">
Monthly Archives
</dt>
 
<dd class="side" id="monthlylist">
<MTArchiveList archive_type="Monthly">
<MTArchiveDateHeader><div id="archive<$MTArchiveDate format="%Y"$>name"><span><$MTArchiveDate format="%Y年"$></span></div><ul id="archive<$MTArchiveDate format="%Y"$>list" class="tree"></MTArchiveDateHeader>
<li class="tree<MTArchiveDateFooter>_end</MTArchiveDateFooter>"><a href="<$MTArchiveLink$>"><$MTArchiveDate format="%B月"$></a> [<$MTArchiveCount$>]</li><MTArchiveDateFooter></ul></MTArchiveDateFooter>
</MTArchiveList>
</dd>
 
<dd> 
<script type="text/javascript">
//<![CDATA[
<MTArchiveList archive_type="Monthly"><MTArchiveDateHeader>FoldNavigation('archive<$MTArchiveDate format="%Y"$>','off',false);</MTArchiveDateHeader>
</MTArchiveList>
FoldNavigation('monthly','off',false);
//]]>
</script>
</dd>

あと、一点確認ですが、ArchiveDateFooterプラグインは4.2対応のものをお使いかご確認ください。
それではよろしくお願い致します。

[12] Posted by yujiro logo : May 12, 2009 1:54 PM

yujiro様
本当に何度もすみませんでした。
ありがとうございます。

残念ながら、不具合は解消しませんでした。
アドバイスを頂いたとおり、プラグインのバージョン等は確認いたしました。
しかし、</ul>が付いたり付かなかったり・・・
付けば正常表示なのですが、付かなければ・・・
きっと他に原因があるのでしょう。

まだまだ、月別アーカイブを折りたたむほど歴史のあるサイトではないので、今はオリジナルに戻すことにします。

ご多忙中の中、本当にありがとうございました。
また、何かございましたら、よろしくお願い致します。

[13] Posted by やまだ : May 12, 2009 10:07 PM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)