Форум русской поддержки Joomla!® CMS
03.12.2016, 15:43:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

как изменить вывод постраничной навигации?

 (Прочитано 18234 раз)
0 Пользователей и 1 Гость смотрят эту тему.
maxvolume
Новичок
*

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 8


« : 25.11.2009, 19:52:44 »

как изменить вид постраничной навигации? Joomla 1.5.9
сейчас она выглядит так-

«ПерваяПредыдущая12СледующаяПоследняя»

                   Страница 1 из 2

хочется так чтобы выглядела

страница 1  2 3 4 5 6 7 8

подскажите
« Последнее редактирование: 25.11.2009, 20:04:16 от maxvolume » Записан
Kostelano
Давно я тут
****

Репутация: +27/-0
Offline Offline

Пол: Мужской
Сообщений: 350


Константин


« Ответ #1 : 11.02.2010, 20:04:00 »

Делается все достаточно просто, расскажу о методике Azn

1. Открываем pagination.php ( libraries\joomla\html )

2. Исходя из того, что в файле pagination.php наверняка прописаны параметры "Первая", "Предыдущая", "Следующая" и "Последняя", ищем кусок кода с JText. Конечно же, в процессе поиска вы анализируете тот код, который выдает вам как результат поиска, т.е. примерно то, или вообще не то Azn

3. В итоге найдем куски кода:

$data->start = new JPaginationObject(JText::_('Start')); - Первая
$data->previous = new JPaginationObject(JText::_('Prev')); - Предыдущая

и немного ниже:

$data->next = new JPaginationObject(JText::_('Next')); - Следующая
$data->end = new JPaginationObject(JText::_('End')); - Последняя

Закомментируйте строки, которые вам не нужны...

-----------------------------------------------------------------------------------------------------------------

С этим справились, однако на станице остались символы вида ">>" и ">". Открываем исходный код, выясняем что там за символы:

Цитировать
<<, <, >, >>

Опять открываем pagination.php, в поиск вбиваем любой из них, например >, результат:

Код:
$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 .= ' >>';

Стираем символы из соответствующих параметров, оставляя только кавычки, сохраняем и смотрим на страницу!

По поводу вопроса товарища maxvolume, которому необходимо еще вставить слово "Страница" перед перечнем страниц: вы стираете все символы, а в первой строке кода, приведенного выше напишите вместо символов слово "Страница" (вобщем-то, какое пожелаете), сохраните файл в кодировке UTF-8!

-----------------------------------------------------------------------------------------------------------------

Чтобы удалить фразу "Страница n из m", закомментируйте строку:

Код:
$html .= JText::sprintf('JPAGE_CURRENT_OF_TOTAL', $this->get('pages.current'), $this->get('pages.total'));

-----------------------------------------------------------------------------------------------------------------

На всякий случай приложу файл pagination.php - все 4 строки закомментированы, удалены все символы.

[вложение удалено Администратором]
« Последнее редактирование: 11.02.2010, 20:48:28 от Kostelano » Записан
jeka2608
Гость
« Ответ #2 : 12.02.2010, 12:07:54 »

Спасибо, ваш совет помог
Записан
SLZZZ
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 157


« Ответ #3 : 24.02.2010, 21:55:08 »

не могу найти, а где сами эти слова "следующая" "Предыдущая" как мне их заменить? поиском и вручную все облазил.
Записан
Kostelano
Давно я тут
****

Репутация: +27/-0
Offline Offline

Пол: Мужской
Сообщений: 350


Константин


« Ответ #4 : 24.02.2010, 21:58:32 »

не могу найти, а где сами эти слова "следующая" "Предыдущая" как мне их заменить? поиском и вручную все облазил.

САЙТ/tamara/language/ru-RU - файл ru-RU.іni
Записан
SLZZZ
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 157


« Ответ #5 : 24.02.2010, 22:16:30 »

САЙТ/tamara/language/ru-RU - файл ru-RU.іni

Ураааа! теперь возник вопрос, а почему поиск по словам ни чего не дал? искал и стандартным поиском и Directory Opusом
Записан
Kostelano
Давно я тут
****

Репутация: +27/-0
Offline Offline

Пол: Мужской
Сообщений: 350


Константин


« Ответ #6 : 24.02.2010, 23:37:22 »

Потому что файлы в кодировке UTF-8.
Записан
gimnasist
Гость
« Ответ #7 : 02.05.2010, 03:22:00 »

А как уменьшить количество страниц, ато 10 не вписываются в шаблон? Нужно чтобы страниц было 7, а всё остальное осталось как и было. !
Записан
jem777
Практически профи
*******

Репутация: +118/-2
Offline Offline

Сообщений: 1650



« Ответ #8 : 02.05.2010, 06:40:53 »

Строка №96:
Код:
$displayedPages = 10;
Записан
sega
Давно я тут
****

Репутация: +4/-0
Offline Offline

Сообщений: 250


« Ответ #9 : 04.05.2010, 18:13:44 »

а можно ли как то вытащить пагинацию за пределы контента, например как модуль?
Записан
like2dev
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #10 : 29.05.2010, 21:48:03 »

Вообще-то неправильно менять ядро Joomla. Если вы внимательно посмотрите то у рендера есть такая проверка

Код:
$chromePath = JPATH_THEMES.DS.$mainframe->getTemplate().DS.'html'.DS.'pagination.php';
if (file_exists($chromePath))

То есть он смотрит есть ли в вашем шаблоне своя реализация вывода.

Создаем в папке с шаблоном в папке HTML файл pagination.php и создаем там такие функции:
pagination_item_active и pagination_item_inactive
pagination_list_render

И настраиваем вывод.
Записан
andreyy05
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 9


« Ответ #11 : 12.06.2010, 13:30:22 »

Вообще-то неправильно менять ядро Joomla. Если вы внимательно посмотрите то у рендера есть такая проверка

Код:
$chromePath = JPATH_THEMES.DS.$mainframe->getTemplate().DS.'html'.DS.'pagination.php';
if (file_exists($chromePath))

То есть он смотрит есть ли в вашем шаблоне своя реализация вывода.

Создаем в папке с шаблоном в папке HTML файл pagination.php и создаем там такие функции:
pagination_item_active и pagination_item_inactive
pagination_list_render

И настраиваем вывод.

Получается, что только вывод  можно переопределить непосредственно в шаблоне?
А что если я хочу $displayedPages изменить, или убрать надпись Страница n из m? это можно только в ядре поправить, или можно также в шаблоне?
Записан
Maxum
Завсегдатай
*****

Репутация: +32/-1
Offline Offline

Сообщений: 689


« Ответ #12 : 02.07.2010, 11:40:33 »

А что если я хочу ... убрать надпись Страница n из m? это можно только в ядре поправить, или можно также в шаблоне?
Присоединяюсь к вопросу. Если убирать вывод "страница n из m" системном pagination.php, то у меня в категориях постраничная навигация вообще исчезает.
Записан
Kostelano
Давно я тут
****

Репутация: +27/-0
Offline Offline

Пол: Мужской
Сообщений: 350


Константин


« Ответ #13 : 02.07.2010, 12:51:46 »

Если убирать вывод "страница n из m" системном pagination.php, то у меня в категориях постраничная навигация вообще исчезает.

Значит ты что-то делаешь неверно. У меня ничего не исчезает. Скрин:



Есть и другой вариант скрыть строку "Страница n из m":

Найти код:

Код:
if ($this->get('pages.total') > 1)

Изменить значение "1", например, на "1000". Т.е. пока не наберется 1000 страниц, строка не будет выводится.
Записан
Maxum
Завсегдатай
*****

Репутация: +32/-1
Offline Offline

Сообщений: 689


« Ответ #14 : 02.07.2010, 14:24:26 »

Да уже и комментировалась строка
Код:
$html .= JText::sprintf('JPAGE_CURRENT_OF_TOTAL', $this->get('pages.current'), $this->get('pages.total'));
, и удалялась - результат один: в разделах всё о'к, а в категориях навигация исчезает.
Попробую выставить 1000, спасибо.

Тот же результат. Это шаблон гонит, с milkyway'ем всё нормально. Любые изменения function getPagesCounter приводят к исчезновению навигации в категориях.
« Последнее редактирование: 02.07.2010, 14:31:42 от Maxum » Записан
SpecTR
Осваиваюсь на форуме
***

Репутация: +10/-0
Offline Offline

Пол: Мужской
Сообщений: 109



« Ответ #15 : 02.07.2010, 14:25:08 »

или убрать надпись Страница n из m?
Эту строчку убрать в шаблоне для контента можно. (joomla 1.5.18)
Делаем pagination.php в шаблоне:
"pagination.php"
А если нужно вывести Страница n из m, то в коде шаблона компонента добавляем:
"Часть моего кода с шаблона content/category/blog.php"
Записан
romawgo
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 11


« Ответ #16 : 29.08.2010, 16:43:59 »

Можно ли изменить слова "Следующая" и "Предыдущая" на свои картинки? В php, к сожалению, не разбираюсь. Спасибо
Записан
vtx
Давно я тут
****

Репутация: +19/-0
Offline Offline

Пол: Мужской
Сообщений: 223



« Ответ #17 : 19.09.2010, 13:20:15 »

Можно ли изменить слова "Следующая" и "Предыдущая" на свои картинки? В php, к сожалению, не разбираюсь. Спасибо
присоединяюсь к вопросу.
Записан
Elektra
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 63



« Ответ #18 : 10.12.2010, 18:43:24 »

Здравствуйте! У меня вместо m из n выводится JPAGE_CURRENT_OF_TOTAL как избавиться от этого.
Удалила эту фразу между кавычками, но тогда выводится прямоугольник цветной шаблона.

Записан
jem777
Практически профи
*******

Репутация: +118/-2
Offline Offline

Сообщений: 1650



« Ответ #19 : 10.12.2010, 20:08:15 »

Обновить языковые файлы Joomla.
Записан
dennioushen
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 86


Don Corleone


« Ответ #20 : 06.02.2012, 04:36:28 »

Ребят, подскажите пож. как сделать навигации как на скриншоте

Как изменить "Следующая, Предыдущая" с этим понятно.
А как сделать "1 2 3 ... 40" ?! Отображается 10 страниц и после десятой, номер последний страницы?!
И как сделать стиль, ссылки ("a") одного цвета с пробелами , а на который ты страницы ("span") другого.
У меня сливается фон.... Смотрите скриншот
Может в файле pagination.php надо добавлять пробелы?!
Код:
div.pagination a{
         font-size: 12px;
         background:#fff;
         color:#444;
         padding:3px 8px 3px 8px;}

div.pagination a:hover{
        font-size: 12px;
        background:#656A8C;
        color:#fff;
        padding:3px 8px 3px 8px;
        text-decoration:none;}

div.pagination span{
        font-size: 12px;
        background:#656A8C;
        color:#fff;
        padding:3px 8px 3px 8px;}

Записан
dennioushen
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 86


Don Corleone


« Ответ #21 : 06.02.2012, 18:27:52 »

Разобрался сам. Под спойлер не убрал, потому что при добавлении тега код все сжимается

Если вдруг кому понадобится. В файле pagination.php (который лежит по пути "mysait.ru\templates\theme\html" или "mysait\libraries\joomla\html"  - смотря где вы правили)
Меняем span на div, в коде (см. ниже) думаю видно...
Так же можете сделать отдельное выделение для ссылок вперед, назад и для цифр.
Код:
$html .= "<div class=\"pagination\">";
$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'];
$html .= $list['end']['data'];
$html .= "</div>";
return $html;

Вот мой CSS, для выделения ссылок в квадратики (прямоугольники). У активной черный фон, у ссылки белый фон, при наведении черный фон.
Пример на скриншоте
Код:
div.pagination a:visited{
         font-size: 12px;
         background:#FFFAFA;
         color:#000;
         margin-right:3px;
         margin-left:3px;
padding: 5px 5px 5px 5px;
                }
div.pagination a:link{
         font-size: 12px;
         background:#FFFAFA;
         color:#000;
         margin-right:3px;
         margin-left:3px;
padding: 5px 5px 5px 5px;
                }
div.pagination a:hover{
        font-size: 12px;
background:#4F4F4F;
        color:#fff;
padding: 5px 5px 5px 5px;  
        }
div.pagination span{
        font-size: 12px;
        background:#363636;
        color:#fff;
        margin-right:3px;
        margin-left:3px;
padding: 5px 5px 5px 5px;
        }

Вот еще вариант выделения, снизу маленький прямоугольник. У активной оранжевый, у ссылки голубой, при выделении оранжевый.
Пример на скриншоте
Код:
div.pagination a:visited{
         font-size: 12px;
background:#FFFAFA;
         color:#000;
         margin-right:3px;
         margin-left:3px;
border-bottom:5px solid #2E98C3;
         width:10px;
                }
div.pagination a:link{
         font-size: 12px;
background:#FFFAFA;
         color:#000;
         margin-right:3px;
         margin-left:3px;
border-bottom:5px solid #2E98C3;
         width:10px;
                }


div.pagination a:hover{
        font-size: 12px;
background:#FFFAFA;
         color:#000;
border-bottom:3px solid #ff6633;
margin-right:3px;
        margin-left:3px;
               }
div.pagination span{
        font-size: 12px;
background:#FFFAFA;
         color:#000;
        border-bottom:3px solid #ff6633;
        margin-right:3px;
        margin-left:3px;
        }

Вот так могу реализовать:
" |1| 2 3 4 5 ...Последняя" - Щас мы на первой странице, отображается только 5 страниц.
" Первая...3 4 |5| 6 7...Последняя" - Щас мы на пятой странице, отображается только 5 страниц.
" Первая...6 7 8 9 |10|" - Щас мы на десятой странице, отображается только 5 страниц.

Код:
       $html = "<div class=\"pagination\">";
 if(strpos($list['start']['data'], "<a") === 0)
        $html .= $list['start']['data'];
 foreach( $list['pages'] as $page )
{
if($page['data']['active']) {
$html .= '<strong>';
}

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

if($page['data']['active']) {
$html .= '</strong>';
}
}
 if(strpos($list['end']['data'], "<a") === 0)
$html .= $list['end']['data'];
$html .= "</div>";
return $html;

Чтобы поменять title навигации (К примеру отображается "Начало", а при наведении отображается "Перейти на первую страницу")

Код:
       $list['start']['data'] = str_replace("title=\"Первая\"","title=\"Перейти в начало\"",$list['start']['data']);
$html .= $list['start']['data'];
« Последнее редактирование: 07.02.2012, 22:42:19 от dennioushen » Записан
dennioushen
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 86


Don Corleone


« Ответ #22 : 06.02.2012, 19:11:24 »

Вопрос.
В файле "mysait.ru\language\ru-RU\ru-RU.ini" вместо слов  "Первая < Предыдущая , Следующая > Последняя" вставил стрелочки "←" .
На самом сайте стрелочки отображаются, а при наведении на нее (за это отвечает тег title) отображается квадратик, то бишь не читает символ.
« Последнее редактирование: 07.02.2012, 19:20:18 от dennioushen » Записан
vtx
Давно я тут
****

Репутация: +19/-0
Offline Offline

Пол: Мужской
Сообщений: 223



« Ответ #23 : 07.02.2012, 03:16:48 »

в языковом файле
Записан
prayer
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #24 : 07.02.2012, 12:07:30 »

Хочу изменить стандартную постраничную навигацию на такого вида "<< пред   1   ...   13   14   15   16   17   18   19   ...   30   след >> А то при стандартном выводе по 10 страниц пользователь не всегда догадывается что есть 11я  Grin Поставил вывод всех страниц, но выглядит как-то не очень. Заранее спасибо за ответ.
Записан
xaocbozzz
Давно я тут
****

Репутация: +8/-0
Offline Offline

Сообщений: 205


Котэ просит! Не обижайте котэ!


« Ответ #25 : 07.02.2012, 12:29:35 »

...Если вдруг кому понадобится....
А как к навигации VirtueMart это прилепить?
Записан
dennioushen
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 86


Don Corleone


« Ответ #26 : 07.02.2012, 19:19:29 »

vtx
Неправильно описал проблему.
В файле "mysait.ru\language\ru-RU\ru-RU.ini" вместо слов  "Первая < Предыдущая , Следующая > Последняя" вставил стрелочки "←" .
На самом сайте стрелочки отображаются, а при наведении на нее (за это отвечает тег title) отображается квадратик, то бишь не читает символ.

xaocbozzz
Ну в этом компоненте наверно тоже есть файл, который отвечает за вывод навигации...

prayer
Присоединяюсь к данной просьбе. Просто тут последняя страница отображается и вместо слова последняя, должна отображаться последняя страница цифрами.
Наверно, что-то в этом роде. А при переходе на последнюю страницу, будет отображаться страница из списка, как это сделать знаю. А вот отображение цифры нет.

Вот так вот, это я представляю:
" |1| 2 3 4 5 ...10" - Щас мы на первой странице, отображается только 5 страниц.
" 1...3 4 |5| 6 7...10" - Щас мы на пятой странице, отображается только 5 страниц.
" 1...6 7 8 9 |10|" - Щас мы на десятой странице, отображается только 5 страниц.

Вот так могу реализовать:
" |1| 2 3 4 5 ...Последняя" - Щас мы на первой странице, отображается только 5 страниц.
" Первая...3 4 |5| 6 7...Последняя" - Щас мы на пятой странице, отображается только 5 страниц.
" Первая...6 7 8 9 |10|" - Щас мы на десятой странице, отображается только 5 страниц.
« Последнее редактирование: 07.02.2012, 20:51:24 от dennioushen » Записан
prayer
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #27 : 07.02.2012, 22:03:38 »

Вот так могу реализовать:
" |1| 2 3 4 5 ...Последняя" - Щас мы на первой странице, отображается только 5 страниц.
" Первая...3 4 |5| 6 7...Последняя" - Щас мы на пятой странице, отображается только 5 страниц.
" Первая...6 7 8 9 |10|" - Щас мы на десятой странице, отображается только 5 страниц.
Напиши пожалуйста как так реализовать. Все равно лучше чем у меня сейчас.
Записан
dennioushen
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 86


Don Corleone


« Ответ #28 : 07.02.2012, 22:24:12 »

prayer
Должно работать, у себя не проверял...
Код:
       $html = "<div class=\"pagination\">";
 if(strpos($list['start']['data'], "<a") === 0)
        $html .= $list['start']['data'];
 foreach( $list['pages'] as $page )
{
if($page['data']['active']) {
$html .= '<strong>';
}

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

if($page['data']['active']) {
$html .= '</strong>';
}
}
 if(strpos($list['end']['data'], "<a") === 0)
$html .= $list['end']['data'];
$html .= "</div>";
return $html;

Чтобы поменять title навигации (К примеру отображается "Начало", а при наведении отображается "Перейти на первую страницу")

Разобрался сам.

В файле "mysait.ru\language\ru-RU\ru-RU.ini" вместо слов  "Первая < Предыдущая , Следующая > Последняя" вставляем после равно стрелочки "&rarr;" или Ваше значение.
И в файле pagination.php (который лежит по пути "mysait.ru\templates\theme\html" или "mysait\libraries\joomla\html"  - смотря где вы правили)
вставляете код на примере снизу (сохранив его в UTF8)

Код:
       $list['start']['data'] = str_replace("title=\"Первая\"","title=\"Перейти в начало\"",$list['start']['data']);
$html .= $list['start']['data'];

Ниже список стрелок:
** - признает только Tahoma.

&larr;     ←     ←     стрелка влево
&uarr;    ↑    ↑    стрелка вверх
&rarr;    →    →    стрелка вправо
&darr;    ↓    ↓    стрелка вниз
&harr;    ↔    ↔    стрелка влево-вправо
&rArr;    ⇒    ⇒    двойная стрелка вправо
&lArr;    ⇐    ⇐    двойная стрелка влево **
&hArr;    ⇔    ⇔    двойная стрелка влево-вправо
&uArr;    ⇑    ⇑    двойная стрелка вверх **
&dArr;    ⇓    ⇓    двойная стрелка вниз **
&crarr;    ↵    ↵    стрелка вниз и влево – знак возврата каретки  **

Другие символы
« Последнее редактирование: 07.02.2012, 23:42:35 от dennioushen » Записан
prayer
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #29 : 11.02.2012, 23:05:03 »

Это все хорошо, но что мне делать если у меня файл pagination.php влияет исключительно на вывод страниц в админке, а на вывод страничек сайта влияет administrator/components/com_virtuemart/classes/pageNavigation.class.php ? (joomla 1.5.25, VirtueMart 1.1.7)

Разобрался как сделать для виртуемарта пагинацию. Сорри за беспокойство и спасибо за советы.
« Последнее редактирование: 13.02.2012, 23:33:57 от prayer » Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet