这可能是一个非常愚蠢的问题,但我无法解决任何可能有助于我走得更远的问题。我希望缩短页面导航中的NUMBERS数量。
而不是: 1,2,3,4,5,6,7,8
我希望它像: 1,2 ... 7,8
当我转到 2 时,现在应该在数字组中看到数字 3 。
以下是我负责页码的代码:
<div id="user_nav_bottom">
<?php for($i=1; $i < sizeof($pages)+1; $i++) {
$strong = ($_GET['page'] == $i) ? ' dark bold' : '';
echo '<span class="normal' . $strong . '"><a href="imgit_images.php?page=' . $i . '">' . $i . ', </a></span>';
} ?>
</div>
答案 0 :(得分:2)
这是我为分页论坛编写的经过修改的代码块。
它的输出并不完全是你展示的方式,但应该只是一个调整问题。
<?php
//Set up vars
$currentPage = isset($_GET["page"])? $_GET["page"] : 1;
$numPages = count($pages);
$numPages = 7;//cause I don't have the real var for testing
$howMany = 1;
?>
<?php if ($numPages > 1): ?>
<li>Page <?php echo $currentPage?> of <?php echo $numPages?></li>
<?php if ($currentPage > 1): ?>
<li><a href="imgit_images.php?page=1">First</a></li>
<li><a href="imgit_images.php?page=<?php echo $currentPage-1?>"><</a></li>
<?php endif; ?>
<?php if ($currentPage > $howMany + 1): ?>
<li>...</li>
<?php endif; ?>
<?php for ($pageIndex = $currentPage - $howMany; $pageIndex <= $currentPage + $howMany; $pageIndex++): ?>
<?php if ($pageIndex >= 1 && $pageIndex <= $numPages): ?>
<li>
<?php if ($pageIndex == $currentPage): ?>
<u>
<?php endif; ?>
<a href="imgit_images.php?page=<?php echo $pageIndex?>"><?php echo $pageIndex?></a>
<?php if ($pageIndex == $currentPage): ?>
</u>
<?php endif; ?>
</li>
<?php endif; ?>
<?php endfor; ?>
<?php if ($currentPage < $numPages - $howMany): ?>
<li>...</li>
<?php endif; ?>
<?php if ($currentPage < $numPages): ?>
<li><a href="imgit_images.php?page=<?php echo $currentPage+1?>">></a></li>
<li><a href="imgit_images.php?page=-1">Last</a></li>
<?php endif; ?>
<?php endif; ?>
答案 1 :(得分:2)
检查出来:https://codereview.stackexchange.com/a/10292。此解决方案应解决您的问题。我认为这是一个非常好的方法。
答案 2 :(得分:2)
这一个显示当前请求的链接之前和之后的两个链接:
<div id="user_nav_bottom">
<?php
$current = $_GET['page'];
$last = count($pages)+1;
$curr0 = $current-2;
$curr1 = $current+2;
if ($curr0<=1) {
$curr0 = 1;
$curr1 = $last>5? 5 : $last;
}
if ($curr1>=$last) {
$curr0 = $last-4 < 1 ? 1 : $last-4;
$curr1 = $last;
}
// now print all links:
echo '<a href="imgit_images.php?page=1">«</a> ';
for ($i=$curr0; $i<=$curr1; $i++) {
$style = ($i==$current)? 'font-weight:bold':'';
echo ' <a href="imgit_images.php?page='.$i.'" style="'.$style.'">'.$i.'</a> ';
}
echo '<a href="imgit_images.php?page='.$last.'">»</a> ';
?>
</div>
这显示如下链接:«13 14 15 16 17»
Imho通过添加适当的条件来添加前五个和后五个链接并不困难。
答案 3 :(得分:0)
您可能想要做的是使用我的答案中描述的“对数”分页技术:
How to do page navigation for many, many pages? Logarithmic page navigation
如果将LINKS_PER_STEP设置为2或3之类的低值,它将产生非常紧凑的输出。