だから私はPHPでこれをやっていますが、それは論理的な問題なので、できるだけ一般的に書き込もうとします.
まず、このページネーション スクリプトの仕組みは次のとおりです。
- for (最初の 3 ページのリンクを描画する)
- if ( #1 のページと #3 のページの間にページがある場合は、省略記号 (...) を描画します)
- for (現在のページとその両側にある 2 つのページのリンクを描画)
- if ( #3 のページと #5 のページの間にページがある場合は、省略記号 (...) を描画します)
- for (最後の 3 ページのリンクを描く)
問題は、ページ数が少ない場合 (ページ数が 10 のときにこれに気付きました)、省略記号が表示されるはずですが、何も描画されないことです。
コードに:
$page_count = 10; //in actual code this is set properly
$current_page = 1; //in actual code this is set properly
for ($i = 1;$i <= 3;$i++)
{
if ($page_count >= $i)
echo $i;
}
if ($page_count > 3 && $current_page >= 7)
echo "...";
for ($i = $current_page - 2;$i <= current_page + 2;$i++)
{
if ($i > 3 && $i < $page_count - 2)
echo $i;
}
if ($page_count > 13 && $current_page < $page_count - 5)
echo "...";
for ($i = $page_count - 2;$i <= $page_count;$i++)
{
if ($page_count > 3)
echo $i;
}
したがって、2 つの省略記号 if ステートメントのいずれかを変更して、このようなケースを含めるのが最善の方法だと思いますが、試してみて困惑しています。
また、読みやすくするためにこのコードを要約したことに注意してください。「ループのループは、各反復で current_page - 2 を再計算するため、効果がありません」などのヒントを与えないでください。
このロジックが現在どのように機能しているかの内訳を確認したい人のために、$page_count と $current_page を繰り返した出力例 (変更済み) を次に示します。 http://rafb.net/p/TNa56h71.html