Так что я делаю это на PHP, но это логическая проблема, поэтому я постараюсь написать это как можно более обобщенно.
Для начала вот как работает этот скрипт нумерации страниц:
- для ( ссылки на первые три страницы )
- if ( нарисуйте многоточие (...), если между страницами # 1 и # 3 есть страницы )
- для ( рисовать текущую страницу и две страницы на каждой стороне ссылки) )
- if ( рисовать элипсис (...), если есть страницы между страницами # 3 и # 5 )
- для ( нарисуйте последние три страницы ссылки )
Проблема в том, что при небольшом количестве страниц (я заметил это, когда число страниц было равно 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;
}
Так что я считаю, что лучшей идеей было бы изменить один из двух многоточий, если в предложения включается такой случай, как бы то ни было, но я пытался и озадачен.
Также обратите внимание, что я сжал этот код для удобства чтения, поэтому, пожалуйста, не давайте советов типа «циклы неэффективны, потому что они будут пересчитывать current_page - 2 для каждой итерации», потому что я знаю:)
Для тех, кто хочет увидеть подробности о том, как работает эта логика, вот пример выходных данных (измененных) с повторением $ page_count и $ current_page.
http://rafb.net/p/TNa56h71.html