2013-05-12 2 views
2

Я изменил одну функции в основном pagination.php в библиотеках/HTML папке, как этотJoomla 2.5 пагинации переопределение

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 (список $)

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(); проблема .. в основном файле это работает, в файле overriden нет. Любые идеи?

ответ

2

Ваш хром-файл (переопределение шаблона страницы) не имеет доступа к объекту 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 страницы.

+0

Если я называю getPagesCounter() статический или с мотивационным $ этого, изменение основного файла даст хороший результат. Но если я поместил один и тот же код (статически или с $ this) в хром-файл, результат всегда будет одним и тем же, сломанными страницами. Нибра, не могли бы вы подтвердить, что вы пытались переопределить это, и это сработало для вас? Если вы попытаетесь, возможно, вы узнаете, где проблема с этим переопределением. Спасибо – Matop79

+0

Извините, я не тестировал его. Вы правы, объект JPagination недоступен в переопределении. Исправлен (и протестирован) ответ. – nibra

+0

Ваше решение работает! Благодарю. Я принимаю ваш ответ. Но еще один вопрос. Не существует способа включить (вызвать) объект JPagination в этот метод переопределения? Я бы предпочел использовать элегантный способ использования объекта JPagination вместо его вычисления. – Matop79

1

Я изменил нумерацию страниц по умолчанию в шаблоне так:

Ее очень просто, если вы используете JQuery

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

Вы можете положить что-нибудь вместо «пагинацией». Точно так же вы можете изменить его для детей лития

Надежды, что помогает