2

我已经更改了libraries/html文件夹中核心pagination.php中的一个函数

protected function _list_render($list)
   {  
$stranky = JPagination::getPagesCounter();

      $html = '<ul>';
      $html .= '<li class="pagination-prev">' . $list['previous']['data'] . '</li>';


    $html .= '<li> &nbsp; | '. $stranky .' |&nbsp; </li>';

      $html .= '<li class="pagination-next">' . $list['next']['data'] . '</li>';
      $html .= '</ul>';

      return $html;
   }

此更改效果很好,但我想要实现的是覆盖此代码。所以我将相同的代码放在我模板文件夹的 html 文件夹中的 pagination.php 中,并将函数的名称更改为 pagination_list_render($list)

function pagination_list_render($list)
   {  

$stranky = JPagination::getPagesCounter();


      $html = '<ul>';
      $html .= '<li class="pagination-prev">' . $list['previous']['data'] . '</li>';

        $html .= '<li> &nbsp; | '. $stranky .' |&nbsp; </li>';

      $html .= '<li class="pagination-next">' . $list['next']['data'] . '</li>';
      $html .= '</ul>';

      return $html;
   }

但现在它不再工作了,整个页面都坏了。

似乎 $stranky = JPagination::getPagesCounter(); 是问题..在核心文件中有效,在覆盖文件中无效。有任何想法吗?

4

2 回答 2

3

您的 chrome 文件(分页模板覆盖)无权访问 JPagination 对象,因此您必须自己计算值。

public function pagination_list_render($list)
{
    $total   = count($list['pages']);
    $current = 0;
    foreach ($list['pages'] as $i => $page) {
        if (!$page['active']) {
            $current = $i;
            break;
        }
    }
    $counter = JText::sprintf('JLIB_HTML_PAGE_CURRENT_OF_TOTAL', $current, $total); 

    $html .= '<ul>';
    $html .= '<li class="pagination-prev">' . $list['previous']['data'] . '</li>';
    $html .= '<li> &nbsp; | '. $counter .' | &nbsp; </li>';
    $html .= '<li class="pagination-next">' . $list['next']['data'] . '</li>';
    $html .= '</ul>';

    return $html;
}

如果有超过 1 页,也许你想添加一个测试。

于 2013-05-13T12:09:54.743 回答
1

我更改了模板中的默认分页,如下所示:

如果你使用 jQuery,它真的很简单

    $(document).ready(function() {
        $( '.pagenav' ).removeClass( 'pagenav' ).addClass( 'pagination' );
    });

你可以用任何东西代替“分页”。同样你可以改变它的孩子 li

希望有帮助

于 2013-10-18T11:32:44.310 回答