Joomla 2.5分页覆盖

时间:2013-05-12 21:09:08

标签: php joomla override joomla2.5

我更改了库/ 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(); 是问题..在核心文件中它工作,在覆盖文件中没有。 有什么想法吗?

2 个答案:

答案 0 :(得分: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页,也许您想要添加测试。

答案 1 :(得分:1)

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

如果你使用jQuery

,它真的很简单
    $(document).ready(function() {
        $( '.pagenav' ).removeClass( 'pagenav' ).addClass( 'pagination' );
    });

你可以用任何东西代替“分页”。 同样,你可以为其子女改变

希望有所帮助