我在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> | '. $stranky .' | </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> | '. $stranky .' | </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> | '. $counter .' | </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
希望有帮助