TopMovable Typeカスタマイズページ分割 > 2004年7月
2004年7月31日

カテゴリーアーカイブと月別アーカイブのページ分割

July 31,2004 2:15 AM
Tag:[, , , ]
Permalink


Movable Type でのカテゴリーアーカイブと月別アーカイブのページ分割方法をご紹介します。

参照サイトはMagic whiteさんの「カスタマイズメモその2」経由できままにポロポロさんの「ページ分割」です。あっさりできました。ありがとうございます。
ということで以下に設定方法(プラグインファイルの配置は自宅サーバ用)を記しておきます。

1.プラグインファイルのダウンロード

MT Extensions より MTPaginate をダウンロード(ページ上の方にある「Download」をクリック)。ファイルは任意のフォルダ(デスクトップ等)に保存します。

2.プラグインファイルのアップロード

ダウンロードしたファイルを解凍し、その中の MTPaginate.pl を plugins ディレクトリにアップロードします。

注:この情報はバージョン1.28のものです。
ダウンロードしたファイルを解凍し、その中の MTPaginate ディレクトリを下記のディレクトリ構成になるように plugins ディレクトリに丸ごとアップロードします。

plugins/MTPaginate/lib/MTPaginate.pm
plugins/MTPaginate/MTPaginate.pl

2.1 アーカイブURL/アーカイブ・パスの設定(Movable Type 3.2-ja 以降の場合)

管理メニューの「設定」→「公開」にある「アーカイブの設定」のチェックボックスをチェックします。チェックするとその下に「アーカイブURL」「アーカイブ・パス」の項目が表示されるので、下記のように設定します。

アーカイブURL:サイトURL/archives/
アーカイブ・パス:サイト・パス/archives

サイトURLとサイト・パスは同じページに表示されている「サイトURL」「サイト・パス」の内容をそのままあてはめてください。例えばサイトURLが http://www.koikikukan.com/ であれば、アーカイブURLは

http://www.koikikukan.com/archives/

となります。
なおこれらはページ分割を行わない場合も設定することをお勧めします。

3.アーカイブファイル名の変更

Movable Type のバージョンによって3.1項または3.2項のいずれかを実施してください。

3.1 Movable Type 3.2-ja 以降の場合

管理メニュー左の「設定」→「公開」で「アーカイブ・マッピング」の「出力フォーマット」のテキストボックス欄で「カスタマイズ」を選択して下記を設定します。

  • カテゴリーアーカイブ(「カテゴリー」行)
    cat_<$MTCategoryID$>.php *1
  • 月別アーカイブ(「月別」行)
    %y/%m/index.php
  • 日別アーカイブ(「日別」行)
    %y/%m/%d/index.php

をそれぞれ設定し「変更を保存」をクリックしてください。

*1:カテゴリーアーカイブのファイル名にはカテゴリーIDを設定するためにMTタグを使用することを推奨します。

3.2 Movable Type 3.1x 以前の場合

管理メニュー左の「ウェブログの設定」→「アーカイブの設定」で「アーカイブ」の「アーカイブ・ファイルのテンプレート」のテキストボックス欄に下記を設定します。

  • カテゴリーアーカイブ(「カテゴリー」行)
    cat_<$MTCategoryID$>.php
  • 月別アーカイブ(「月別」行)
    <$MTArchiveDate format="%Y/%m/"$>index.php
  • 日別アーカイブ(「日別」行) *2
    <$MTArchiveDate format="%Y/%m/%d/"$>index.php

をそれぞれ設定し「変更を保存」をクリックしてください。*3 *4

*2:カレンダーのリンク等で「日別」を使用されている場合は設定が必要です。
*3:すでに「アーカイブ・ファイルのテンプレート(3.2 は「出力フォーマット」)」へカスタマイズされたフォーマットを設定されている場合は「.html」となっている部分を「.php」に修正すればOKです。
*4:フォーマットは一例ですので、任意のフォーマットを設定してください。また 3.2-ja 以降ではフォーマットの指定方法が変更されていますが、3.1x 以前のMTタグを利用した設定でも正常に動作します。

4.ページ分割の設定

カテゴリーアーカイブテンプレート・日別アーカイブテンプレートに以下の青色部分を設定します。

カテゴリーアーカイブの場合

<div class="blog">
<MTPaginate>
<MTPaginateContent max_sections="8">
<MTEntries>
     :
     :
<$MTPaginateSectionBreak$>
</MTEntries>
</MTPaginateContent>
<MTPaginateIfMultiplePages>
<div class="paginate">
<MTPaginateIfPreviousPage_>
<a href="<$MTPaginatePreviousPageLink$>">&#65308;</a>
</MTPaginateIfPreviousPage_>
<$MTPaginateNavigator style="links" format_all="All pages" place_all="after" separator=" | ">
<MTPaginateIfNextPage_>
<a href="<$MTPaginateNextPageLink$>">&#65310;</a>
</MTPaginateIfNextPage_>
</div>
</MTPaginateIfMultiplePages>
</MTPaginate>
</div>

日付アーカイブの場合

<div class="blog">
<div id="menu">
<MTArchivePrevious>
<a href="<$MTArchiveLink$>"><< <$MTArchiveTitle$></a> |
</MTArchivePrevious>
<a href="<$MTBlogURL$>">Main</a>
<MTArchiveNext>
| <a href="<$MTArchiveLink$>"><$MTArchiveTitle$> >></a>
</MTArchiveNext>
</div>
<MTPaginate>
<MTPaginateContent max_sections="8">
<MTEntries>
     :
     :
<$MTPaginateSectionBreak$>
</MTEntries>
</MTPaginateContent>
<MTPaginateIfMultiplePages>
<div class="paginate">
<MTPaginateIfPreviousPage_>
<a href="<$MTPaginatePreviousPageLink$>">&#65308;</a>
</MTPaginateIfPreviousPage_>
<$MTPaginateNavigator style="links" format_all="All pages" place_all="after" separator=" | ">
<MTPaginateIfNextPage_>
<a href="<$MTPaginateNextPageLink$>">&#65310;</a>
</MTPaginateIfNextPage_>
</div>
</MTPaginateIfMultiplePages>
</MTPaginate>
</div>

赤色部分は中央に配置スタイルシート(styles-site.css)に ".paginate" というクラスセレクタを作成し、ページリンクのスタイルを設定するためのタグです。スタイルシートには必要に応じて

.paginate {
    text-align: center;
    font-size: 9px;
}

という風に設定してください。
設定が完了したら「保存」をクリックします。

追記.XML宣言の修正

拡張子を .html から .php に変更したテンプレートの1行目が

<?xml version="1.0" encoding="<$MTPublishCharset$>"?>

となっている場合は

<? echo('<?xml version="1.0" encoding="<$MTPublishCharset$>"?>') ?>

に修正してください(XML宣言が存在しない場合はこの対処自体不要です)。この修正を行わないとページ表示時に

Parse error: parse error, unexpected T_STRING in [...] on line 1

というエラー(またはページが真っ白)が発生します。

5.サイトの再構築

4項まで完了したら再構築を実施し、ページ分割を設定したアーカイブのページを開き、分割されていればOKです。

6.その他

きままにポロポロさんのページで

<$MTPaginateNavigator format_current="<font size=+1>%d</font>">

と書けば現在のページ番号の文字を装飾できるようですが、上の例ではfontタグの"<"と">"(計4ヶ所)を"&lt;"と"&gt;"で記述する必要があります。具体的には青色で表示してある

<$MTPaginateNavigator format_current="&lt;font size=+1&gt;%d&lt;/font&gt;">

となります。なお、XHTMLでは各要素の属性(ここでは font 要素の size 属性)はダブルクォーテーションで括る仕様となっているため、ここでは非推奨とします。font 要素自体も非推奨です。

なお月別アーカイブはjolie'sさんの【長くなったページを分割】でやってみたところ再構築でInvalid Argumentというエラーになりました。原因は、そのページに表示されていたアーカイブファイル名のテンプレート名をそのままコピー&ペーストして使ったのですが、そのタグの"<"と">"が全角になっているせいでした。こういうのって意外に気がつかないものです

2004.10.04 追記
【PHPのバージョンについて】
ページ分割はPHP4.1以下では正常に動作しないようです。詳細については先と同様、Cool Gaming ! weBlogさんのカテゴリ、月別アーカイブのページ分割を参照ください。

2005.03.01 追記
日付アーカイブの設定について追加しました。

2005.04.13 追記
SWEET WATER Web Server さんの記事を参考に、日付アーカイブの設定について追加しました。

2005.11.11 追記
3.2-ja 用の設定を追記しました。

2005.11.20 追記
3.2-ja 用の設定をさらに追記しました。

2005.11.28 追記
3.2-ja 用の出力フォーマットを 3.1x 以前のものと分割しました。またページリンクのタグを改善しました。具体的には、MTPaginateIfMultiplePages タグと div 要素の位置を入れ替えて、ページ分割が行われない場合に不要な div 要素を生成しないようにしました。さらに div 要素に設定していた align 属性を削除しました。

2006.02.19 追記
XML宣言の修正について記述を追加しました。

2006.04.25 追記
XML宣言の修正について記述を修正しました(XML宣言がない場合は不要である旨)。

2007.05.04 追記
プラグインのバージョンアップに伴い、アップロード方法を修正しました。

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

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

AMN
Categories
Monthly Archives
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