的確な答えが無かったので、
再質問させていただきます。
カテゴリーページを分割しようと考えています。
条件として、
1.静的に書き出すことが出来る。
2.htmlのタイトルにページ数を表示することが出来る。
MTPaginateだと、PHP化で静的のHTMLになりませんが
<$MTPaginateCurrentPage>というタグを使用すれば、
タイトルにページ数を入れられる。
Paged Archives Plugin、PageButeだと静的ですが、
ページごとにタイトルを変更することが出来ない。
MTPaginate、Paged Archives Plugin、PageBute
という3種類以外にページを静的に分割できて、
なおかつタイトルにページ数を表示できるプラグインはありますでしょうか?
また、今使用させていただこうと考えているのは
PageButeですが、
ちょっとしたカスタマイズで、
ページの番号をタイトルに入れることが
出来るなどありましたら、
どうぞよろしくお願いいたします。
これまで MT に触ったことはなかったのですが、興味深い質問でしたのでこれを機会に使ってみました。
結果だけ見るとたったの一行なのですが、ここにたどり着くまで丸1日かかりました。
PageBute.pl の変更範囲で対応を考えたのですが、私の知識の範囲ではこの中でタイトル単体を制御すること
ができませんでした。そのため、タイトルに使用されているタグを目安にこれを置換する方法で処理をしました。
なので、今回の方法はあまり汎用性がありませんし、場合によっては使用できない可能性もあります。
前置きはこのくらいにして、実際の方法です。
PageBute.pl の _page_bute 関数部分を下記のように変更して保存後、対象の部分を再構築してみてください。
sub _page_bute { my ($cb, %opt) = @_; my $ctx = $opt{Context}; my $pb = $ctx->stash('PageBute'); return 1 unless($pb); #Get file information my ($filename, $file_ext); my $file = $opt{File}; my $blog = $ctx->stash('blog'); my $site_url = $blog->{column_values}->{site_url}; $site_url = $site_url . '/' unless ($site_url =~ /\/$/); my $site_path = $blog->{column_values}->{site_path}; $site_path = $site_path . "/" unless ($site_path =~ /\/$/); my $file_path = substr($file, length($site_path)); if ( $file_path =~ /^[\/\\]?(.*)\.(.*?)$/ ) { $filename = $1; $file_ext = $2; } else { $filename = $file_path; $file_ext = ''; } my $contents = $opt{Content}; my $split_count = $pb->{count}; my $delim = $pb->{page_delim}; my @entries = split(/$garbage{Separator}/, $pb->{contents}); my $page_limit = ceil( $#entries / $split_count ); my $page_count = 1; my $output_page_contents = ''; my $fmgr = $blog->file_mgr; for (my $i=0; $i < $#entries; $i++) { $output_page_contents .= $entries[$i]; if( ($i + 1) % $split_count == 0 || $i == $#entries - 1) { $file = $page_count == 1 ? $file : "${site_path}${filename}_${page_count}.${file_ext}"; my $output = $$contents; #----------------------------------------------------------------- # Page 付加処理 : "</a></h1>" を検索してその前にページ情報を追加 #----------------------------------------------------------------- $output =~ s/<\/a><\/h1>/ [$page_count\/$page_limit]<\/a><\/h1>/g; #----------------------------------------------------------------- $output =~ s/$garbage{Contents}/$output_page_contents/g; my $lists = &_create_lists($page_count, $page_limit); my $before = $lists->{before} ? &_create_link($page_count - 1, $site_url . $filename, $file_ext, $pb->{before_delim}) : ''; my $next = $lists->{next} ? &_create_link($page_count + 1, $site_url . $filename, $file_ext, $pb->{next_delim}) : ''; my $page_lists = ''; for (my $i = $lists->{min_page}; $i <= $lists->{max_page}; $i++) { $page_lists .= $i == $lists->{min_page} ? '' : $delim; $page_lists .= $i == $page_count ? $page_count : &_create_link($i, $site_url . $filename, $file_ext, $i); } #replace before link if ($before) { $output =~ s/$garbage{IfPageBefore}//g; $output =~ s/$garbage{BeforeLink}/$before/g; } else { $output =~ s/$garbage{IfPageBefore}.*$garbage{IfPageBefore}//g; } #replace next link if ($next) { $output =~ s/$garbage{IfPageNext}//g; $output =~ s/$garbage{NextLink}/$next/g; } else { $output =~ s/$garbage{IfPageNext}.*$garbage{IfPageNext}//g; } #replace page lists $output =~ s/$garbage{PageLists}/$page_lists/g; $fmgr->put_data($output,"${file}.new"); $fmgr->rename("${file}.new",$file); if($page_count == 1) { $ctx->stash('FirstContents', $output); $ctx->stash('FirstFileName', $file); } $output_page_contents = ''; $page_count++; } } $ctx->stash('PageBute', 0); 1; }
今回のケースではタイトルは
<h1><a ~>タイトル</a></h1>
となっていることを想定していますが、ここがお使いのテンプレートで異なっている場合はタイトルに使われている
タグに合わせて変更ください。
不明な点はコメントで対応しますので、コメントを有効にしてください。
http://pulltab.info/2007/12/13101208.html
変更量はたいしたことないのですが、今回は結構苦労しました。
もしお役に立ったのであれば、いるか賞を頂けると幸いです。
これまで MT に触ったことはなかったのですが、興味深い質問でしたのでこれを機会に使ってみました。
結果だけ見るとたったの一行なのですが、ここにたどり着くまで丸1日かかりました。
PageBute.pl の変更範囲で対応を考えたのですが、私の知識の範囲ではこの中でタイトル単体を制御すること
ができませんでした。そのため、タイトルに使用されているタグを目安にこれを置換する方法で処理をしました。
なので、今回の方法はあまり汎用性がありませんし、場合によっては使用できない可能性もあります。
前置きはこのくらいにして、実際の方法です。
PageBute.pl の _page_bute 関数部分を下記のように変更して保存後、対象の部分を再構築してみてください。
sub _page_bute { my ($cb, %opt) = @_; my $ctx = $opt{Context}; my $pb = $ctx->stash('PageBute'); return 1 unless($pb); #Get file information my ($filename, $file_ext); my $file = $opt{File}; my $blog = $ctx->stash('blog'); my $site_url = $blog->{column_values}->{site_url}; $site_url = $site_url . '/' unless ($site_url =~ /\/$/); my $site_path = $blog->{column_values}->{site_path}; $site_path = $site_path . "/" unless ($site_path =~ /\/$/); my $file_path = substr($file, length($site_path)); if ( $file_path =~ /^[\/\\]?(.*)\.(.*?)$/ ) { $filename = $1; $file_ext = $2; } else { $filename = $file_path; $file_ext = ''; } my $contents = $opt{Content}; my $split_count = $pb->{count}; my $delim = $pb->{page_delim}; my @entries = split(/$garbage{Separator}/, $pb->{contents}); my $page_limit = ceil( $#entries / $split_count ); my $page_count = 1; my $output_page_contents = ''; my $fmgr = $blog->file_mgr; for (my $i=0; $i < $#entries; $i++) { $output_page_contents .= $entries[$i]; if( ($i + 1) % $split_count == 0 || $i == $#entries - 1) { $file = $page_count == 1 ? $file : "${site_path}${filename}_${page_count}.${file_ext}"; my $output = $$contents; #----------------------------------------------------------------- # Page 付加処理 : "</a></h1>" を検索してその前にページ情報を追加 #----------------------------------------------------------------- $output =~ s/<\/a><\/h1>/ [$page_count\/$page_limit]<\/a><\/h1>/g; #----------------------------------------------------------------- $output =~ s/$garbage{Contents}/$output_page_contents/g; my $lists = &_create_lists($page_count, $page_limit); my $before = $lists->{before} ? &_create_link($page_count - 1, $site_url . $filename, $file_ext, $pb->{before_delim}) : ''; my $next = $lists->{next} ? &_create_link($page_count + 1, $site_url . $filename, $file_ext, $pb->{next_delim}) : ''; my $page_lists = ''; for (my $i = $lists->{min_page}; $i <= $lists->{max_page}; $i++) { $page_lists .= $i == $lists->{min_page} ? '' : $delim; $page_lists .= $i == $page_count ? $page_count : &_create_link($i, $site_url . $filename, $file_ext, $i); } #replace before link if ($before) { $output =~ s/$garbage{IfPageBefore}//g; $output =~ s/$garbage{BeforeLink}/$before/g; } else { $output =~ s/$garbage{IfPageBefore}.*$garbage{IfPageBefore}//g; } #replace next link if ($next) { $output =~ s/$garbage{IfPageNext}//g; $output =~ s/$garbage{NextLink}/$next/g; } else { $output =~ s/$garbage{IfPageNext}.*$garbage{IfPageNext}//g; } #replace page lists $output =~ s/$garbage{PageLists}/$page_lists/g; $fmgr->put_data($output,"${file}.new"); $fmgr->rename("${file}.new",$file); if($page_count == 1) { $ctx->stash('FirstContents', $output); $ctx->stash('FirstFileName', $file); } $output_page_contents = ''; $page_count++; } } $ctx->stash('PageBute', 0); 1; }
今回のケースではタイトルは
<h1><a ~>タイトル</a></h1>
となっていることを想定していますが、ここがお使いのテンプレートで異なっている場合はタイトルに使われている
タグに合わせて変更ください。
不明な点はコメントで対応しますので、コメントを有効にしてください。
http://pulltab.info/2007/12/13101208.html
変更量はたいしたことないのですが、今回は結構苦労しました。
もしお役に立ったのであれば、いるか賞を頂けると幸いです。
mookさま
どうもありがとうございます。
出来ました。
ついでに質問させてください。
[$page_count]としましてページ番号だけを
表示するようにさせていただきました。
その際に、たとえば1ページ目の表示の場合、
[1]では無くて1ページと表示するようにしたいです。
これって簡単に出来ますでしょうか?
どうぞよろしくお願いいたします。
mookさま
どうもありがとうございます。
出来ました。
ついでに質問させてください。
[$page_count]としましてページ番号だけを
表示するようにさせていただきました。
その際に、たとえば1ページ目の表示の場合、
[1]では無くて1ページと表示するようにしたいです。
これって簡単に出来ますでしょうか?
どうぞよろしくお願いいたします。