Блок пользователя
Регистрация на нашем сайте позволит вам общаться на форумах и получить доступ к другому полезному функционалу
Вы вошли как Гость

Оформляем паджинацию в ajax-ответе

  • 302 просмотра
  • 26 сентября, 2023
  • Обновлено: 16 октября, 2023
  • admin
  • Время чтения: 2 минуты
  • 1 (Подробно)

Развернутый ответ на вопрос, заданный в форумной ветке по плагину Comlist:

Суть проблемы

Разметка паджинации часто переопределяется, например, в файлах темы оформления под Bootstrap. Примерно так:

$R['link_pagenav_current']  = '<li class="page-item active"><a href="{$url}" class="page-link {$class}" {$rel}>{$num}</a></li>';

$R['link_pagenav_first']    = '<li class="page-item"><a href="{$url}" class="page-link {$class}" {$rel}>'.$R['icon-arrow-left'].'</a></li>';
$R['link_pagenav_prev']     = '<li class="page-item"><a href="{$url}" class="page-link {$class}" {$rel}>'.$R['icon-chevron-left'].'</a></li>';
$R['link_pagenav_main']     = '<li class="page-item"><a href="{$url}" class="page-link {$class}" {$rel}>{$num}</a></li>';
$R['link_pagenav_next']     = '<li class="page-item"><a href="{$url}" class="page-link {$class}" {$rel}>'.$R['icon-chevron-right'].'</a></li>';
$R['link_pagenav_last']     = '<li class="page-item"><a href="{$url}" class="page-link {$class}" {$rel}>'.$R['icon-arrow-right'].'</a></li>';

$R['link_pagenav_gap']      = '<li class="page-item disabled"><span class="page-link">...</span></li>';

В ajax-ответе это переназначение не "подтянется", и будет использована дефолтная разметка из системного файла ресурсов:

$R['link_pagenav_current'] = '<span class="pagenav pagenav_current"><a href="{$url}" class="{$class}" {$rel}>{$num}</a></span>';
$R['link_pagenav_first']   = '<span class="pagenav pagenav_first"><a href="{$url}" class="{$class}" {$rel}>'.$L['pagenav_first'].'</a></span>';
$R['link_pagenav_gap']     = '<span class="pagenav pagenav_gap">...</span>';
$R['link_pagenav_last']    = '<span class="pagenav pagenav pagenav_last"><a href="{$url}" class="{$class}" {$rel}>'.$L['pagenav_last'].'</a></span>';
$R['link_pagenav_main']    = '<span class="pagenav pagenav_pages"><a href="{$url}" class="{$class}" {$rel}>{$num}</a></span>';
$R['link_pagenav_next']    = '<span class="pagenav pagenav_next"><a href="{$url}" class="{$class}" {$rel}>'.$L['pagenav_next'].'</a></span>';
$R['link_pagenav_prev']    = '<span class="pagenav pagenav_prev"><a href="{$url}" class="{$class}" {$rel}>'.$L['pagenav_prev'].'</a></span>';

Как видим, две большие разницы. Поэтому если очень хочется свою разметку, ее в таком случае необходимо продублировать. Для того, чтобы не дублировать лишнее, кастомную разметку паджинации вынесем в отдельный файл, например mytheme.rc.pagination.php. Разместим его в папке с темой и подключим в mytheme.rc.php:

require_once cot_incfile('mytheme', 'theme', 'rc.pagination');

Теперь такое же подключение необходимо оформить для аякс-ответа. Для этого создадим или используем отдельный плагин. В него добавим часть с хуком comlist.ajax.first. Назовем этот файл myplug.ajax.first.php и добавим в него всего одну строку:

<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=comlist.ajax.first
[END_COT_EXT]
==================== */

defined('COT_CODE') or die('Wrong URL');

require_once cot_incfile('mytheme', 'theme', 'rc.pagination');

Обновим наш плагин и получим подгрузку кастомной паджинации в аякс-ответах для плагина Comlist. Аналогичным образом прописаны хуки для других наших плагинов, использующих аякс-паджинацию: Catlist, Forman, Oneline, Pagelist и Thanks. Но создавать для каждого из них отдельный плагин нет необходимости. Можно просто указать необходимые хуки через запятую:

<?php
/* ====================
[BEGIN_COT_EXT]
Hooks=catlist.ajax.first, comlist.ajax.first, forman.ajax.first, oneline.ajax.first, pagelist.ajax.first, thanks.ajax.first
[END_COT_EXT]
==================== */

defined('COT_CODE') or die('Wrong URL');

require_once cot_incfile('mytheme', 'theme', 'rc.pagination');

Новый комментарий

Имя:
Для редактирования комментария осталось 10 минут
Комментарии отсутствуют