Оформляем паджинацию в ajax-ответе
Популярные запросы: тема Omnis, плагин Pagelist, Cotonti 0.9.24.2, ЧПУ, Font Face
- 429 просмотров
- 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');
Новый комментарий