admin 发表于 2024-5-26 13:14:08

微擎移动端使用pagination函数自定义

在site.php中定义:
//页码
      function mpagination($total, $pageIndex, $pageSize = 15, $url = '', $context = array('before' => 5, 'after' => 4, 'ajaxcallback' => '', 'callbackfuncname' => '')) {
            global $_W;
            $pdata = array(
                  'tcount' => 0,
                  'tpage' => 0,
                  'cindex' => 0,
                  'findex' => 0,
                  'pindex' => 0,
                  'nindex' => 0,
                  'lindex' => 0,
                  'options' => '',
            );
            if (empty($context['before'])) {
                  $context['before'] = 5;
            }
            if (empty($context['after'])) {
                  $context['after'] = 4;
            }
   
            if ($context['ajaxcallback']) {
                  $context['isajax'] = true;
            }
   
            if ($context['callbackfuncname']) {
                  $callbackfunc = $context['callbackfuncname'];
            }
   
            $pdata['tcount'] = $total;
            $pdata['tpage'] = (empty($pageSize) || $pageSize < 0) ? 1 : ceil($total / $pageSize);
            if ($pdata['tpage'] <= 1) {
                  return '';
            }
            $cindex = $pageIndex;
            $cindex = min($cindex, $pdata['tpage']);
            $cindex = max($cindex, 1);
            $pdata['cindex'] = $cindex;
            $pdata['findex'] = 1;
            $pdata['pindex'] = $cindex > 1 ? $cindex - 1 : 1;
            $pdata['nindex'] = $cindex < $pdata['tpage'] ? $cindex + 1 : $pdata['tpage'];
            $pdata['lindex'] = $pdata['tpage'];
   
            if ($context['isajax']) {
                  if (empty($url)) {
                            $url = $_W['script_name'] . '?' . http_build_query($_GET);
                  }
                  $pdata['faa'] = 'href="javascript:;" page="' . $pdata['findex'] . '" ' . ($callbackfunc ? 'ng-click="' . $callbackfunc . '(\'' . $url . '\', \'' . $pdata['findex'] . '\', this);"' : '');
                  $pdata['paa'] = 'href="javascript:;" page="' . $pdata['pindex'] . '" ' . ($callbackfunc ? 'ng-click="' . $callbackfunc . '(\'' . $url . '\', \'' . $pdata['pindex'] . '\', this);"' : '');
                  $pdata['naa'] = 'href="javascript:;" page="' . $pdata['nindex'] . '" ' . ($callbackfunc ? 'ng-click="' . $callbackfunc . '(\'' . $url . '\', \'' . $pdata['nindex'] . '\', this);"' : '');
                  $pdata['laa'] = 'href="javascript:;" page="' . $pdata['lindex'] . '" ' . ($callbackfunc ? 'ng-click="' . $callbackfunc . '(\'' . $url . '\', \'' . $pdata['lindex'] . '\', this);"' : '');
            } else {
                  if ($url) {
                            $pdata['faa'] = 'href="?' . str_replace('*', $pdata['findex'], $url) . '"';
                            $pdata['paa'] = 'href="?' . str_replace('*', $pdata['pindex'], $url) . '"';
                            $pdata['naa'] = 'href="?' . str_replace('*', $pdata['nindex'], $url) . '"';
                            $pdata['laa'] = 'href="?' . str_replace('*', $pdata['lindex'], $url) . '"';
                  } else {
                            $_GET['page'] = $pdata['findex'];
                            $pdata['faa'] = 'href="' . $_W['script_name'] . '?' . http_build_query($_GET) . '"';
                            $_GET['page'] = $pdata['pindex'];
                            $pdata['paa'] = 'href="' . $_W['script_name'] . '?' . http_build_query($_GET) . '"';
                            $_GET['page'] = $pdata['nindex'];
                            $pdata['naa'] = 'href="' . $_W['script_name'] . '?' . http_build_query($_GET) . '"';
                            $_GET['page'] = $pdata['lindex'];
                            $pdata['laa'] = 'href="' . $_W['script_name'] . '?' . http_build_query($_GET) . '"';
                  }
            }
   
            $html = '<div><ul class="pagination pagination-centered">';
            $html .= "<li><a {$pdata['faa']} class=\"pager-nav\">首页</a></li>";
            empty($callbackfunc) && $html .= "<li><a {$pdata['paa']} class=\"pager-nav\">«上一页</a></li>";
   
                  if (!$context['before'] && 0 != $context['before']) {
                  $context['before'] = 5;
            }
            if (!$context['after'] && 0 != $context['after']) {
                  $context['after'] = 4;
            }
   
            if (0 != $context['after'] && 0 != $context['before']) {
                  $range = array();
                  $range['start'] = max(1, $pdata['cindex'] - $context['before']);
                  $range['end'] = min($pdata['tpage'], $pdata['cindex'] + $context['after']);
                  if ($range['end'] - $range['start'] < $context['before'] + $context['after']) {
                            $range['end'] = min($pdata['tpage'], $range['start'] + $context['before'] + $context['after']);
                            $range['start'] = max(1, $range['end'] - $context['before'] - $context['after']);
                  }
                  for ($i = $range['start']; $i <= $range['end']; ++$i) {
                            if ($context['isajax']) {
                                    $aa = 'href="javascript:;" page="' . $i . '" ' . ($callbackfunc ? 'ng-click="' . $callbackfunc . '(\'' . $url . '\', \'' . $i . '\', this);"' : '');
                            } else {
                                    if ($url) {
                                          $aa = 'href="'.$_W['siteroot'].'app/index.php?' . str_replace('*', $i, $url) . '"';
                                    } else {
                                          $_GET['page'] = $i;
                                          $aa = 'href="'.$_W['siteroot'].'app/index.php?' . http_build_query($_GET) . '"';
                                    }
                            }
                            if (!empty($context['isajax'])) {
                                    $html .= ($i == $pdata['cindex'] ? '<li class="active">' : '<li>') . "<a {$aa}>" . $i . '</a></li>';
                            } else {
                                    $html .= ($i == $pdata['cindex'] ? '<li class="active"><a href="javascript:;">' . $i . '</a></li>' : "<li><a {$aa}>" . $i . '</a></li>');
                            }
                  }
            }
   
            if ($pdata['cindex'] < $pdata['tpage']) {
                  empty($callbackfunc) && $html .= "<li><a {$pdata['naa']} class=\"pager-nav\">下一页»</a></li>";
                  $html .= "<li><a {$pdata['laa']} class=\"pager-nav\">尾页</a></li>";
            }
            $html .= '</ul></div>';
   
            return $html;
    }可以使用$this->mpagination($total, $pindex, $psize);来调用。
页: [1]
查看完整版本: 微擎移动端使用pagination函数自定义