Может кому понадобиться: Изменение постраничной навигации Joomla

Автор Mihail152150, 10-08-2011, 22:45:46

« назад - далее »

Mihail152150Topic starter

Здравствуйте уважаемые джумляне!! Очень часто на разных форумах посвященных joomla слышу такой вопрос: "Как изменить постраничную навигацию (пагинацию)?". Все очень просто ,в этой статье я попробую подробно описать изменение пагинации Joomla1.5. Стандартный вывод постраничной навигации Joomla  выглядит так:


          << Начало  Предыдущая  1 2 3 4 5 6 7 8 9 10  Следующая  Последняя >>


Иногда требуется изменить количество выводимых страниц, например сократить до пяти или же наоборот увеличить. Делается это следующим образом. Открываем в редакторе  файл pagination.php который находится по адресу \libraries\joomla\html и редактируем  96 строку
$displayedPages = 10;
ставим свое значение . Если нужно что бы выводились все страницы вставляем следующий код:
$displayedPages = $this->total;
Если же нам нужно избавиться от слов "Начало" "Предыдущая" "Следующая" и т.д.  Тогда в этом же файле нужно закоментировать следующие строки:

$data->start = new JPaginationObject(JText::_('Start'));
$data->previous = new JPaginationObject(JText::_('Prev'));
$data->next  = new JPaginationObject(JText::_('Next')); 
$data->end  = new JPaginationObject(JText::_('End'));
Соответственно  "Начало" "Предыдущая" "Следующая" "Последняя" . Это 482,483.498, и 499 строки в файле .Теперь пагинация выглядит так...

      << 1 2 3 4 5 6 7 8 9 10 >>

Если вам понадобится убрать символы  << >> , то находим блок кода который находится с 423 по 434 строки и убираем все подобные символы &gt , &lt оставляя только кавычки. Выглядеть это должно так:

$html .= ' ';
$html .= $list['start']['data'];
$html .= '  ';
$html .= $list['previous']['data'];
foreach( $list['pages'] as $page ) {
$html .= ' '.$page['data'];
}
$html .= ' '. $list['next']['data'];
$html .= ' ';
$html .= ' '. $list['end']['data'];
$html .= ' ';
Что бы убрать  надпись ниже , например "Страница 1 из 10" нужно закоментировать 151 строку

$html .= JText::sprintf('JPAGE_CURRENT_OF_TOTAL', $this->get('pages.current'), $this->get('pages.total'));
Если вам вдруг понадобиться просто изменить значения  "Начало" "Предыдущая" "Следующая" "Последняя" , то открываем на редактирование  файл ru-RU.ini , он проживает по адресу \language\ru-RU находим эти слова и меняем как хотим.



Теперь давайте разберемся как убрать текст "Начало" если мы итак находимся на первой странице и как убрать "Последняя" когда мы находимся на последней странице. Делать мы это будем на примере стандартного шаблона rhuk_milkyway ,версия движка  1.5.23  Избавляемся от слова "Начало"

Находим 85 строку в файле "pagination.php" шаблона  rhuk_milkyway который находтся по адресу ...\joomla\templates\rhuk_milkyway\html\pagination.php

$html .= '<span>«</span>'.$list['start']['data'];<strong> </strong>
Для удобства разбиваем эту строку , то есть переносим пристековку. Теперь  делаем условие....

if(strpos($list['start']['data'],"<a")===0)
Все вместе это должно выглядеть примерно так:

$html = "<span class=\"pagination\">";
$html .= '<span>«</span>';
if(strpos($list['start']['data'],"<a")===0)
$html .=$list['start']['data'];
$html .= $list['previous']['data'];
Таким же образом убираем "Последняя" если мы находимся на последней странице. Находим в том же файле 102 строку

$html .= $list['end']['data'];
и перед ней добавляем условие

if(strpos($list['end']['data'],"<a")===0)
Вся функция должна выглядеть так:

function pagination_list_render($list)
{
// Initialize variables
$html = "<span class=\"pagination\">";
$html .= '<span>«</span>';
if(strpos($list['start']['data'],"<a")===0)
$html .=$list['start']['data'];
$html .= $list['previous']['data'];

foreach( $list['pages'] as $page )
{
if($page['data']['active']) {
$html .= '<strong>';
}

$html .= $page['data'];

if($page['data']['active']) {
$html .= '</strong>';
}
}

$html .= $list['next']['data'];
if(strpos($list['end']['data'],"<a")===0)
$html .= $list['end']['data'];
$html .= '<span>»</span>';

$html .= "</span>";
return $html;
}
Теперь будем менять текст всплывающей подсказки, по умолчанию он совпадает с ссылкой . К примеру мы хотим сделать что бы при наведение курсора на  "Следующая" всплывающая  подсказка была "Вперед". В этом нам поможет функция str_replace() .

находим следующую строку...

$html .= $list['next']['data'];
и прямо  перед ней прописываем следующее..

$list['next']['data']=str_replace("title=\"Следующая\"","title=\"Вперед \"",$list['next']['data'] );
Обязательно сохраняем файл в кодировке UTF-8(без BOM) !! Это можно сделать с помощью обычного блокнота или  в Notepad++.

Ну и конечно с помощью CSS можно менять оформление . Размер шрифта, цвет , фон, и так далее...
http://miruzhasa.ru/ - Обзор фильмов ужасов, все о фильмах ужасов!
  •  


Vasiliy111

может кто знает как убрать из url "?start=" при постраничной навигации
  •  


Dimas

Цитата: Vasiliy111 от 30-10-2012, 16:22:19
может кто знает как убрать из url "?start=" при постраничной навигации

Да тоже интересен этот вопрос. К тому же, что бы еще автоматически добавляла в тайтл номер странице, например если открыта 2 страница категории, то к названию категории добавлял page2.
  •