| Как изменить пагинацию в joomla 1.5 |
| 31.07.11 11:52 |
Пагинация в joomla 1.5Не знаю как Вам, но меня с первого знакомства с CMS Joomla удивляла убогость класса пагинации Joomla JPagination. Но не будем кидать упреков в адрес разработчиков этой замечательной системы управления контентом. Они нам предоставили замечательный конструктор, а что из него «свинтить» и как, дело нас самих. Тем более, разработчики сделали для нас «отмычку» в классе Joomla JPagination. Что конкретно мне не нравится в пагинации Joomla и что я в нем хотел изменитьСловами описывать долго, лучше разок увидеть, покажу на примере. Взгляните как выглядит стандартная пагинация После непродолжительных размышлений я решил, что пагинация должна выглядеть так Недостатки найденных решений пагинации для JoomlaКак-то на досуге я поглядел, какие идеи на сей счет есть у других. Оказалось есть. Есть даже модуль и плагин пагинации для Joomla. Разобравшись в статьях подробнее, выяснились недостатки всех предложенных решений. Многие статей о пагинации Joomla предлагают какие-то хаки – залезьте в сырцы класса JPagination, исправьте и вставьте строки. Но что будет, если Вы вдруг решите заменить версию движка? Опять искать заветные строки? Не хочу плохо отзываться об авторах этих статей, тем более они дали пищу для размышлений. Пусть это будет их правильное решение. Что касается модулей и плагинов пагинации – каждый из них отъедает дополнительные ресурсы, ведь каждая Ваша статья проходит обработку этим плагином или модулем. Что нам позволяет класс пагинации для Joomla JPaginationКласс пагинации Joomla находится в файле libraries/joomla/html/pagination.php. При его изучении выяснилось, что методы getPagesLinks() и getListFooter() могут работать с переопределенными обработчиками, которые переопределяются в директории используемого шаблона, а именно, templates/шаблон/html/pagination.php. Если в Вашем шаблоне этой директории с файлом нет, будьте добры, скопируйте их из шаблона rhuk_milkyway, он входит в стандартную поставку CMS Joomla. В этом файле находятся функции-обработчики:
Переопределение пагинации в JoomlaСразу оговорюсь – я делал пагинацию для вполне определенного проекта, в нем использовался вывод только методом getPagesLinks(), все изменения производились соответственно только в функции pagination_list_render. Метод getListFooter() и функцию pagination_list_footer я оставил неизменными, Вы можете либо вернуть пустую строку при возврате из функции, если не хотите его видеть на страницах сайта, или изменить ее по своему желанию. Функции pagination_item_active и pagination_item_inactive также были оставлены без изменений, хотя часть рутины можно было достигнуть их изменением. Вот и добрались до функции построения списка пагинатора для метода getPagesLinks(), коментировать ее я не буду, кто знает PHP, тот поймет, кто не поймет – просто скопирует.
function pagination_list_render($list)
{
$html = "<span class=\"pagination\">";
if ( strpos( $list['start']['data'], '<a' ) !== false ) {
$begin = strpos( $list['start']['data'], 'href="' );
$begin += strlen( 'href="' );
$end = strpos( $list['start']['data'], '"', $begin );
$link = substr( $list['start']['data'], $begin, $end - $begin );
$title = 'В начало';
$html .= '<a href="'.$link.'" title="'.$title.'"><img src="/files/pagination/page-start.png" /></a>';
$begin = strpos( $list['previous']['data'], 'href="' );
$begin += strlen( 'href="' );
$end = strpos( $list['previous']['data'], '"', $begin );
$link = substr( $list['previous']['data'], $begin, $end - $begin );
$title = 'Предыдущая';
$html .= '<a href="'.$link.'" title="'.$title.'"><img src="/files/pagination/page-previous.png" /></a>';
} else {
$html .= '<img src="/files/pagination/page-start.png" />';
$html .= '<img src="/files/pagination/page-previous.png" />';
}
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' ) !== false ) {
$begin = strpos( $list['next']['data'], 'href="' );
$begin += strlen( 'href="' );
$end = strpos( $list['next']['data'], '"', $begin );
$link = substr( $list['next']['data'], $begin, $end - $begin );
$title = 'Следующая';
$html .= '<a href="'.$link.'" title="'.$title.'"><img src="/files/pagination/page-next.png" /></a>';
$begin = strpos( $list['end']['data'], 'href="' );
$begin += strlen( 'href="' );
$end = strpos( $list['end']['data'], '"', $begin );
$link = substr( $list['end']['data'], $begin, $end - $begin );
$title = 'В конец';
$html .= '<a href="'.$link.'" title="'.$title.'"><img src="/files/pagination/page-last.png" /></a>';
} else {
$html .= '<img src="/files/pagination/page-next.png" />';
$html .= '<img src="/files/pagination/page-last.png" />';
}
$html .= "</span>";
return $html;
}
В заключении необходимо выложить еще и файлы с картинками «В начало», «Предыдущая» и т.д. Лично я их положил в директорию files/pagination, вы вправе изменить расположение этих файлов по своему усмотрению. Скачать файлы переопределения пагинации в JoomlaВсе пути к директориям в статье даны относительно корневой папки сайта! файлы пагинацииПагинация с последней страницы
Посмотрите на этто файл libraries/joomla/html/pagination.php
В функции function _buildDataObject() найдите строки
|


Комментарии
Но, скорее всего, это надо решать средствами порядка (ordering).
Как это предлагаете вы - надо лезть в движок, не в моих правилах, но все же я дополнил статью, прочтите.
Вывод статей без разбиения на страницы
Установить limit=0. Как пример:
_http://e-kzn.ru/index.php?limit=0&limitstart=0
Да, я не спец по части рисования. В паинтбраше прозрачный фон нет возможности сделать.
Прозрачный - чтобы не на шаблон любого цвета натянуть и не править. Кто поможет, буду признателен.
Уважаемый администратор, подскажите пожалуйста, если знаете, как сделать секретный раздел на Joomla 1.5.22 сайте.Чтобы в секретный раздел могли попадать только подписчики на рассылку по предоставленном у коду.Пытался сделать по уроку Е.Попова, но у него там пример приводиться на рнр сайте, а не на Joomla и обращение идет к БД в Mayadvin.А как это сделать на Joomlaи в каких файлах- пробовал ничего не вышло.Для меня файловая система Joomla-лес дремучий.Облазил почти весь рунет ничего подобного не нашел.Из-за этого вся работа встала. Люди добрые,кто знает помогите.
Где можно посмотреть этот урок?
находите строку
// Set the pagination iteration loop values
$displayedPages = 10;
Вставляете нужное значение
RSS лента комментариев этой записи