Joomla 2.5分页覆盖


Joomla 2.5 pagination override

我在libraries/html文件夹中更改了core 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;
   }

这个变化工作得很好,但我想要实现的是在覆盖这段代码。因此,我将相同的代码放在pagination。php中在模板文件夹的HTML文件夹中并将函数名称更改为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();问题是…在核心文件,它工作,在覆盖文件不。什么好主意吗?

您的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页。

我在模板中更改了默认分页:

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

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

你可以用任何东西代替分页。类似地,你可以改变它的子元素li

希望有帮助