ArchivePage

| コメント(5) | トラックバック(1)

MovableTypeにおいて問題となる点として、アーカイブページ(カテゴリや日付)です。
エントリ数が多くなると1枚のページで全ての属するエントリが表示されてしまい、ページ表示がかなり遅くなってしまいますし、稀にブラウザが落ちてしまうこともあります。

現在では「MTPagenate」というページ分割をしてくれるプラグインがあって、これを利用すれば実現はできるのですが、PHPが動く環境でないとダメという制約があります。そもそもPHPが動くのならダイナミックページ機能を使えばいいわけですし、タグの書き方もそこそこ手間がかかってしまいます。

ここでひとつ、

静的なHTMLページで画面分割できてページ送り機能が使えれば問題は解決できるのでは??

という思いがありまして、このようなプラグインを作りました。

  1. 概要・注意事項 静的なHTMLページを分割して生成、ページ送り機能をつけられるようにします。 まだ開発途中ですので利用においては各自の責任のもとに利用していただき、また、利用にあたってはデータのバックアップ等を行うようにしてください。現状では以下のアーカイブタイプのみに対応しています。
    • カテゴリアーカイブ
    • 日付アーカイブ
    • 週別アーカイブ
    • 月別アーカイブ

    また、MovableTypeのバージョンは3.3以上となっておりますのでご注意ください。

  2. ダウンロード
    こちらのダウンロードページからダウンロードしてください。
  3. インストール
    MovableTypeインストールディレクトリ内の「plugins」ディレクトリにダウンロードしたファイルを展開してください。「ArchivePage」というディレクトリ名で展開されます。
  4. 利用方法
    各ブログの設定画面にあります「プラグイン」リンクを選択しますと、「ArchivePage」が表示されていると思います。表示されていない場合は正常にインストールができていませんのでインストール場所等確認してください。
    「ArchivePage」の「設定を表示」リンクをクリックしますと、各アーカイブページでの表示させたいエントリ数設定ができますので適切な値を入力してください。0を設定した場合はページ分割はされません。

    次に各アーカイブテンプレートページを「5. タグ一覧」を参照して書き込んでください。「MTArchive...」のタグなどと似たような感じで利用ができるようにしてあります。また、「6. サンプル」も参照してください。

  5. タグ一覧

    MTIfArchivePage

    テンプレートがページ分割設定されているときの条件タグです。

    MTArchivePageFirst

    ページ分割した際の最初のページ情報を出力する条件タグです。

    MTArchivePagePrevious

    ページ分割した際の前のページ情報を出力する条件タグです。

    MTArchivePageNext

    ページ分割した際の次のページ情報を出力する条件タグです。

    MTArchivePageLast

    ページ分割した際の最後のページ情報を出力する条件タグです。

    MTArchivePageLink

    分割したページへのリンクを出力するタグです。
    「MTArchivePageFirst」、「MTArchivePagePrevious」、「MTArchivePageNext」、「MTArchivePageLast」内で利用できます。

    MTArchivePageTitle

    分割したページのタイトルを出力するタグです。
    「MTArchivePageFirst」、「MTArchivePagePrevious」、「MTArchivePageNext」、「MTArchivePageLast」内で利用できます。

    text="ラベル文字列"

    出力するタイトルを設定できます。

    MTArchivePager

    ページ送りリンクを出力するタグです。

    class="スタイルクラス名"

    size="ページ表示数"

    separator="区切り文字"

  6. サンプル
    スタイルシート、テキストなどの設定はご自身の環境にあわせてください。

    <MTIfArchivePage>
    <div class="pagelinks">
    <MTArchivePageFirst>
    <a href="<$MTArchivePageLink$>"><$MTArchivePageTitle text="最初"$></a>
    </MTArchivePageFirst>
    <MTArchivePagePrevious>
    <a href="<$MTArchivePageLink$>"><$MTArchivePageTitle text="前のページ"$></a>
    </MTArchivePagePrevious>
    <$MTArchivePager class="blink"$>
    <MTArchivePageNext>
    <a href="<$MTArchivePageLink$>"><$MTArchivePageTitle text="次のページ"$></a>
    </MTArchivePageNext>
    <MTArchivePageLast>
    <a href="<$MTArchivePageLink$>"><$MTArchivePageTitle text="最後"$></a>
    </MTArchivePageLast>
    </div>
    </MTIfArchivePage>

    上記のようにしますと、以下のようなHTMLが展開されるはずです。

    <div class="pagelinks">
    <a href="アーカイブURL/index.html">最初</a>
    <a href="アーカイブURL/index.html" class="blink">1</a>,
    <a href="アーカイブURL/index_1.html">2</a>,
    <a href="アーカイブURL/index_2.html">3</a>
    <a href="アーカイブURL/index_1.html">次のページ</a>
    <a href="アーカイブURL/index_2.html">最後</a>
    </div>

トラックバック(1)

トラックバックURL: http://www.boundless-ocean.ne.jp/mt/mt-tb.cgi/452

SevenStyleWeb | Blog - ArchivePage (2008年2月12日 15:32)

さきほどの、PageButeと同じようなプラグイン。http://www.bou... 続きを読む

コメント(5)

MT3.3で使用させていただいています。
分割はされているのですが、
「ArchivePage」は、次の理由で使えません
Can't use an undefined value as an ARRAY reference at ***/plugins/ArchivePage/ArchivePage.pl line 55.
と表示されます。どうしたらいいのでしょうか?

ご回答有難う御座います。
MovableTypeの詳細なバージョンはMT-3.33-jaです。

1. プラグイン設定
「ブログを選択→設定→プラグイン→ArchivePageの設定を表示」から、各アーカイブの表示件数設定にて数値は1以上が入っていますでしょうか。

>カテゴリアーカイブのみ分割したいので日別/週別/月別は0の設定です。
エントリー/カテゴリー/日付アーカイブ(月別)のみ出力しています。
エントリー/日付アーカイブ(月別)のテンプレートにはタグを記述していません。

2. アーカイブ設定
「ブログを選択→設定→公開」から、アーカイブ・マッピングにて、ファイル名の設定に特殊なことはしていますでしょうか。
また、エントリー/日別/週別/月別/カテゴリー以外でマッピングを設定していますでしょうか。

>いいえしていません。
アーカイブ・マッピング、アーカイブ種類にはエントリー/月別/カテゴリーにチェックが入っています。

宜しくお願いします。

MTのバージョンは3.33-jaが既に入手できなかったため、3.33で確認をしましたが、同一の設定をしても現象が発生しませんでした。

で、ここからはできればのお願いなのですが、プラグインにデバッグコードを仕込んでもらい、以下のことを確認していただきたいと考えています。

1. デバッグコードの仕込み
プラグイン内のファイル「ArchivePage.pl」の関数「ap_build_file」にて以下のコードを記述してください。
行数は51行目、関数で引数を受け取ったあとぐらいにお願いします。

open(DEBUG_IN, ">> /tmp/dump.log");
print DEBUG_IN "==========\n";
for my $dk (keys %args) {
print DEBUG_IN $dk . " => " . $args{$dk} . "\n";
}
close(DEBUG_IN);

なお、ファイル「/tmp/dump.log」はLinux上の/tmpディレクトリ以下に出力されるようにしていますが、環境がWindowsだとパスが異なるかと思いますので、CGIを実行するユーザが出力できる場所を指定してください。

2. ファイルの削除
この関数は再構築対象となるファイルが更新されているとファイル生成が実行されます。そのため、エントリ等更新がないとファイル生成関数は呼び出されません。
そのため、一度対象となるエントリファイル(ken様の場合はカテゴリファイル)を削除してください。
なお、削除する前にはバックアップ等をとっておいてください。

3. 再構築の実行とファイルチェック
再構築をしますと、1.で指定したファイルに引数の情報が出力されます。以下のような感じになるかと思います。

FileInfo =>
Entry => MT::Entry=HASH(0xa711e38)
Template => MT::Template=HASH(0xa98fa9c)
BuildResult => SCALAR(0xa7228cc)
Context => MT::Template::Context=HASH(0xa6fc820)
RawContent => SCALAR(0xa7228cc)
TemplateMap => MT::TemplateMap=HASH(0xa6fc940)
ArchiveType => Individual
PeriodStart =>
File => /xxx/post_9.html
Content => SCALAR(0xa722a4c)
Category =>
Blog => MT::Blog=HASH(0xa73ee94)

もしこの内容が出力されていないようでしたらプラグイン側ではなくMT側からの問題になりますため、当方では調査が困難な状況になります。

また、以下のURLにてMT-3.33のアーカイブがダウンロードできます。当方はこれにて確認しておりまして、こちらでは問題なく動きましたので、もし時間や手間がかからないようでしたらこちらのバージョンでも試してみてください。

http://www.movabletype.org/opensource/downloads/archives/3.x/MT-3.33.zip

コメントする

人気ブログランキングへ
track feed BoundlessOcean
フィードメーター - BoundlessOcean
あわせて読みたいブログパーツ
OpenID対応しています OpenIDについて

BlogPeople

Powered by Movable Type 4.27-ja
アダルトアニメDVD通販

このブログ記事について

このページは、Tomochikaが2007年2月27日 12:55に書いたブログ記事です。

ひとつ前のブログ記事は「nine」です。

次のブログ記事は「Mirror」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。