我需要对WordPress插件生成的输出进行分页。该插件从日期库中检索某个产品组的所有产品。基本代码是:
<?php
foreach ((array)$this->view['data']['produkte'] as $p)
{ ?>
...some html code here
}
?>
其中$p
是一个包含单个产品数据的多维数组。
我想将输出限制为10个产品,并为此创建一个简单的分页。该插件非常复杂并且使用嵌套模板,因此在这种情况下自定义查询可能不是一个选项。
如果有人能指出我正确的方向,那会很棒。谢谢!
这是最终的代码。非常感谢您的宝贵帮助!!
<?php
$nb_elem_per_page = 3;
$page = isset($_GET['seite'])?intval($_GET['seite']-1):0;
$data = (array)$this->view['data']['produkte'];
$number_of_pages = intval(count($data)/$nb_elem_per_page)+2;
$page_no = $_REQUEST['seite'];
foreach (array_slice($data, $page*$nb_elem_per_page, $nb_elem_per_page) as $p)
{ ?> some HTML here... <?php } ?>
<?php if (count($data) > $nb_elem_per_page) { ?>
<ul id='paginator'>
<?php
for($i=1;$i<$number_of_pages;$i++){
if ($i == $page_no) {?>
<li><?php echo $i ?></li>
<?php }
else { ?>
<li><a href="<?php echo get_permalink(); ?>?show=<?php echo $_REQUEST['show']; ?>&seite=<?=$i?>"><?php echo $i ?></a></li>
<?php }} ?>
</ul>
<?php { ?>
由于默认网址已包含查询字符串,因此我不得不修改代码。我不希望当前网站在分页中有链接。这会得到分页查询字符串的编号:
$page_no = $_REQUEST['seite'];
然后,我可以使用简单的if语句轻松更改分页链接:
if ($i == $page_no) {...}?>
再次感谢!
答案 0 :(得分:4)
您可能需要稍微修改一下,但这将是类似的事情:
$nb_elem_per_page = 10;
$page = isset($_GET['page'])?intval($_GET['page']-1):0;
$data = (array)$this->view['data']['produkte'];
$number_of_pages = intval(count($data)/$nb_elem_per_page)+1;
<?php foreach (array_slice($data, $page*$nb_elem_per_page, $nb_elem_per_page) as $p) { ?>
...some html code here
<?php} ?>
<ul id='paginator'>
<?php
for($i=1;$i<$number_of_pages;$i++){?>
<li><a href='./?page=<?=$i?>'>$i</a></li>
<?php}?>
</ul>
答案 1 :(得分:0)
您可以使用array_splice(两次)来获取仅包含所需产品的新阵列。 假设您要在每页显示10个项目并从第3页开始:
<?php
$all_products = (array)$this->view['data']['produkte'];
$all_products = array_splice($all_products, 20); //select where to start
$all_products = array_splice($all_products, 0, count($all_products) - 10); //select how many products to show
foreach ($all_products as $p) {
//...some html code here
}
?>
(未经测试)
编辑:@Loïc的答案更好,因为它只使用一个array_splice。