http://cross-breed.com/archives/200401251333.php
これだと、エントリーが1000以上ある場合に、1ページ10エントリーに分割した場合、≪前のページ 次のページ≫1 2 3 4 5 6 7 8 9 10 11 12・・・100とすべてのページ番号が表示されてしまいます。
これを▼以下のURLのように、現在閲覧中のページの直近の5ページのみを表示する方法はMTでありませんでしょうか?
Page 5 of 9 pages « First < 3 4 5 6 7 > Last »
http://veerle.duoh.com/blog/archive-summary/category/Design/P40/ (Expression Engineを使用)
ページ分割、前後、直近など思いつく限りのキーワードで検索してみましたが見つかりませんでした。ご存知の方がいらっしゃいましたら教えていただければ幸いです。
<$MTPaginateNavigator$>
の代わりに
<?php
$my_page_width = 2;//カレントページの前後に表示するページ数
if ($paginate_num_pages - ($paginate_current_page + $my_page_width) < 0){
for($i=($paginate_num_pages - (($my_page_width*2)+1)); $i<=$paginate_num_pages; $i++) {paginate_custum($i);}
}else if(($paginate_current_page - $my_page_width)<1){
for($i=1; $i<=(($my_page_width*2)+1); $i++) {paginate_custum($i);}
}else{
for($i=($paginate_current_page - $my_page_width); $i <=($paginate_current_page + $my_page_width); $i++) {paginate_custum($i);}
}
function paginate_custum($i){
global $paginate_current_page,$paginate_self;
if($i > 1){echo ' | ';}
if($i == $paginate_current_page) {
echo sprintf(" %d ", $i);
} else {
echo "<a href=\"$paginate_self=$i\"" . sprintf('> %d ', $i) . '</a>';
}
}
?>
とか。
ちょっとおかしかったので、治しました。
<?php
$my_page_width = 4;//カレントページの前後に表示するページ数
if ($paginate_num_pages < (($my_page_width*2)+1)){
for($i=1; $i<=$paginate_num_pages; $i++) {paginate_custum($i);}
}else{
if ($paginate_num_pages < ($paginate_current_page + $my_page_width)){
for($i=($paginate_num_pages - (($my_page_width*2)+1)); $i<=$paginate_num_pages; $i++) {paginate_custum($i);}
}else if(($paginate_current_page - $my_page_width)<1){
for($i=1; $i<=(($my_page_width*2)+1); $i++) {paginate_custum($i);}
}else{
for($i=($paginate_current_page - $my_page_width); $i <=($paginate_current_page + $my_page_width); $i++) {paginate_custum($i);}
}
}
function paginate_custum($i){
global $paginate_current_page,$paginate_self;
if($i > 1){echo ' | ';}
if($i == $paginate_current_page) {
echo sprintf(" %d ", $i);
} else {
echo "<a href=\"$paginate_self=$i\"" . sprintf('> %d ', $i) . '</a>';
}
}
?>
お返事遅くなって大変申し訳ありませんでした。
いろいろテストしてみたのですが、どうしても2点、解決しないところがあります。
○1点目
▼以下のURLではエントリーの上下2箇所に、ページ数が表示されるようになっています。
http://cross-breed.com/archives/200401251333.php
教えていただいたとおり、<$MTPaginateNavigator$>の代わりにphpのコードを置き換えてみました。
これが上1箇所だけなら、問題なく表示されます。
しかし上下2箇所になると下のようなエラーメッセージが表示され、下側のページ数の下に表示されてしまいます。
いろいろ変更してみたのですがphpのコードがよくわからないため解決にいたりませんでした。
Fatal error: Cannot redeclare paginate_custum() (previously declared in /●●/XXXX/www/blog/topic/index.php:114) in /●●/XXXX/www/blog2/topic/index.php on line 759
○2点目
100ページあるカテゴリーだと、1ページ目と100ページ目へのアクセスが困難になります。
そのため▼下のように表示したいと考えています。
最初のページ1と最後のページ100はどのように表示したらよいのでしょうか?(<>は前のページ、次のページへのリンク)
<> 1...16|17|18|19|20...100
もしお手数でなければ教えていただけませんでしょうか。
ヤフーオークションや楽天でもこれに近いページ構成になっており、需要は少なくはないと思うのですが、紹介しているページが見当たりません。
お知恵をお借りできれば幸いです。
お返事が遅くなってスミマセン!
時間が取れずにまだ動作確認ができておりません。
近日中に改めてお返事いたします。
本当に申し訳ありません。