向分页添加过渡页面

时间:2020-07-06 06:20:52

标签: php wordpress pagination

当一个页面有9个页面时,我现在需要向临时页面添加分页: 1 2 3 ... 9

我想给出一个3到9之间的中间点,即

1 2 3 ... 6 ... 9

当我位于最后一页/中间页面时,我还希望具有相同的中间子页面。但这应该由您自己知道如何迈出第一步来完成。

我所有的想法都失败了。有人对这种解决方案有想法吗?

此处提供完整的工作代码:

io_context.run()

1 个答案:

答案 0 :(得分:1)

一般的分页代码流可能如下所示:

<?php

function getPageDisplayArray(int $currentPage, int $totalCount, int $pageLen = 10): array
{
   $paginationArr[$currentPage] = 1;
   $totalPagesToDisplay = floor(($totalCount) / $pageLen);
   
   //Get preceding pages logic
   $pagesBefore = $currentPage - 1;
   $iBefore = 2; //Number of pages you want befpre the current page
   while($pagesBefore > 0 && $iBefore > 0) { 
       $paginationArr[$pagesBefore--] = 0;
       $iBefore--;
   }

   //Get anteceding pages
   $pagesAfter = $totalPagesToDisplay - ($pagesBefore + 1);
   $iAfter = min([$pagesAfter, 2]); //Number of pages you want after your current page
   while(-$iAfter < 0) { 
       //Either return the two pages after or don't if there are no pages after
       $paginationArr[$iAfter + $currentPage] = 0;
       $iAfter--;
   }

   if($pagesAfter > 2) {
       //Calcluate Midpoint
       $midpoint = floor($totalPagesToDisplay / 2) + 1;
       if(!isset($paginationArr[$midpoint])) {
           $paginationArr[$midpoint] = 0;
       }
   }
   //Link the first page always if it hasn't already been set
   if(!isset($paginationArr[1])) {
       $paginationArr[1] = 0;
   }

   //Link the final page if it has not already been set.
   if(!isset($paginationArr[$totalPagesToDisplay])) {
      $paginationArr[$totalPagesToDisplay] = 0;
   }
   ksort($paginationArr);
   return $paginationArr;
}

其中“当前页面”,“页面长度”和“总数”是您的参数。此处将在任一侧显示两个页面作为“显示”页面,以及任何arbitrart集合的集合的第一,最后和中间页面。这将返回一个配置数组,该数组将“活动”页面的值设置为1,将所有其他页面的键号设置为页面号,并将值设置为零。剩下的事情就是根据需要在布局中显示值。