« MT-Mobile | メイン | Poderosa4 orz »

ArchivePage

http://lab.fancs.com/ArchivePage をインストールしました。
エントリー数が増えてきて、アーカイブのページが大きくなりすぎてきたので、小分けにしてページ遷移できるようにしようと思い、プラグインを探していたら ArchivePage が見つかりました。
特徴は php なしでページ分割を実現してくれるとこです。

設定をしてみたのですが、まだバージョンも 0.0.2 で作りが不十分なようです。
コメントを見ていると、Widget では上手く動かないらしいです。
ボクも Widget に設定したのですが、カテゴリーを再構築してもページ分割してくれません。
でも、1つのエントリーを選んで再構築すると、そのエントリーのカテゴリーはページ分割されます。

また、ページ送りリンクを出力するタグ MTArchivePager の属性に separator="区切り文字" が使えると書いてあるのですが、実際には機能しません。
plugins/ArchivePage/ArchivePage.pl の 241行目を改修すると機能します。

$ diff -u ArchivePage.pl.orig ArchivePage.pl
--- ArchivePage.pl.orig Thu Nov 2 12:32:51 2006
+++ ArchivePage.pl      Wed Mar 21 16:09:50 2007
@@ -238,7 +238,7 @@
        my $path = ap_page_link($ctx, $args, $cond);
        my $_class = ($i == $current) ? $class : '';
        my $html = sprintf($format, $path, $_class, ($i + 1));
-       $res .= ',' if $res;
+       $res .= $separator if $res;
        $res .= $html;
     }
     $ctx->stash('ap_link_number', $orig_number);

何件ずつページ分割するかは、プラグインの設定ページで設定できるのだけれど、その「何件」という区切りの数字を表示してくれるタグも用意して欲しかった。
というわけで、自分で実装してみた。MTArchivePageLimit タグ。
同じく ArchivePage.pl を改修しています。勝手に改造してパッチ載せると怒られるかな?
コードはこんな感じ。改造前と後で diff を取ってます。上記の separator fix パッチも含んでます。

$ diff -u ArchivePage.pl.orig ArchivePage.pl
--- ArchivePage.pl.orig Thu Nov 2 12:32:51 2006
+++ ArchivePage.pl      Wed Mar 21 16:32:33 2007
@@ -33,6 +33,7 @@
     MT::Template::Context->add_tag(ArchivePageLink => \&ap_page_link);
     MT::Template::Context->add_tag(ArchivePageTitle => \&ap_page_title);
     MT::Template::Context->add_tag(ArchivePager => \&ap_pager);
+    MT::Template::Context->add_tag(ArchivePageLimit => \&ap_page_limit);
 
     MT->add_callback('BuildFile', 1, $plugin, \&ap_build_file);
 }
@@ -238,11 +239,18 @@
        my $path = ap_page_link($ctx, $args, $cond);
        my $_class = ($i == $current) ? $class : '';
        my $html = sprintf($format, $path, $_class, ($i + 1));
-       $res .= ',' if $res;
+       $res .= $separator if $res;
        $res .= $html;
     }
     $ctx->stash('ap_link_number', $orig_number);
     $res;
+}
+
+sub ap_page_limit
+{
+    my ($ctx, $args, $cond) = @_;
+    my $limit = $ctx->stash('ap_limit');
+    $limit;
 }
 
 sub _ap_page_count

それで、ボクのアーカイブのウィジェットはこんな感じ。

<MTIfArchivePage>
<p><$MTArchivePageLimit$>エントリー毎に分割して表示しています。</p>
<div class="pagelinks">
<ul>
<MTArchivePageFirst>
<li><a href="<$MTArchivePageLink$>"><$MTArchivePageTitle text="最初"$></a>
</MTArchivePageFirst>
<MTArchivePagePrevious>
<li><a href="<$MTArchivePageLink$>"><$MTArchivePageTitle text="前のページ"$></a>
</MTArchivePagePrevious>
<li> <small>ページ <$MTArchivePager class="blink" separator=" "$></small>
<MTArchivePageNext>
<li><a href="<$MTArchivePageLink$>"><$MTArchivePageTitle text="次のページ"$></a>
</MTArchivePageNext>
<MTArchivePageLast>
<li><a href="<$MTArchivePageLink$>"><$MTArchivePageTitle text="最後"$></a>
</MTArchivePageLast>
</ul>
</div>
</MTIfArchivePage>

とりあえず、カテゴリーアーカイブにだけ適用してみました。

トラックバック

このエントリーのトラックバックURL:
http://hagyroom.sakura.ne.jp/mt/mt-tb.cgi/672

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年03月15日 00:00に投稿されたエントリーのページです。

ひとつ前の投稿は「MT-Mobile」です。

次の投稿は「Poderosa4 orz」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

アーカイブ

お薦めショップ

  • HagyShop   ボクの大好きな作品だけ、
      お薦めの本と映画をご紹介。