Функция cot_generatePaginationTags в Cotonti
Функция cot_generatePaginationTags предназначена для генерации тегов для пагинации, которые будут использоваться в XTemplate шаблонах. Она принимает результат работы функции cot_pagenav() и преобразует его в массив, где каждый элемент — это пара "ключ-значение", которая будет подставлена в шаблон.
Вот подробное объяснение кода:
/**
* Generate pagination XTemplate tags
* @param array $pagination cot_pagenav() result array
* @param string $prefix
* @return array
* @see cot_pagenav()
*/
function cot_generatePaginationTags($pagination, $prefix = '')
{
if (empty($pagination)) {
$pagination = [];
}
return [
$prefix . 'PAGINATION' => isset($pagination['main']) ? $pagination['main'] : '',
$prefix . 'PREVIOUS_PAGE' => isset($pagination['prev']) ? $pagination['prev'] : '',
$prefix . 'NEXT_PAGE' => isset($pagination['next']) ? $pagination['next'] : '',
$prefix . 'CURRENT_PAGE' => isset($pagination['current']) ? $pagination['current'] : 1,
$prefix . 'TOTAL_ENTRIES' => isset($pagination['entries']) ? $pagination['entries'] : 0,
$prefix . 'ENTRIES_ON_CURRENT_PAGE' => isset($pagination['onpage']) ? $pagination['onpage'] : 0,
$prefix . 'ENTRIES_PER_PAGE' => isset($pagination['perPage']) ? $pagination['perPage'] : 0,
$prefix . 'TOTAL_PAGES' => isset($pagination['total']) ? $pagination['total'] : 0,
// @todo what are they needed for? $pagination['first'] is always empty. $pagination['last'] too
$prefix . 'FIRST_PAGE' => isset($pagination['first']) ? $pagination['first'] : '',
$prefix . 'LAST_PAGE' => isset($pagination['last']) ? $pagination['last'] : '',
];
}
Параметры функции:
$pagination: Это массив, полученный из функции cot_pagenav(). Этот массив содержит информацию о пагинации, например, ссылки на страницы, количество элементов и т. д.
$prefix: Это префикс, который будет добавлен к каждому ключу в результирующем массиве. Обычно используется для именования тегов в XTemplate, чтобы избежать конфликтов с другими тегами.
Проверка на пустой массив:
Если $pagination пустой, то присваиваем ему пустой массив []. Это защитит от ошибок, если функция cot_pagenav() по каким-то причинам не вернула данные.
Возвращаемый массив:
Каждый элемент массива представляет собой тег, который будет доступен в шаблоне. Ключи массива — это теги, которые будут подставлены в шаблон, а значения — это данные из массива пагинации.
Теги:
PAGINATION: Содержит основной блок пагинации (страницы).
PREVIOUS_PAGE: Ссылка на предыдущую страницу.
NEXT_PAGE: Ссылка на следующую страницу.
CURRENT_PAGE: Номер текущей страницы.
TOTAL_ENTRIES: Общее количество записей.
ENTRIES_ON_CURRENT_PAGE: Количество записей на текущей странице.
ENTRIES_PER_PAGE: Количество записей на странице.
TOTAL_PAGES: Общее количество страниц.
Теги для первой и последней страницы (по сути, всегда пустые):
FIRST_PAGE: Ссылка на первую страницу (по умолчанию всегда пустая).
LAST_PAGE: Ссылка на последнюю страницу (по умолчанию всегда пустая).
Заметка TODO:
В коде есть комментарий @todo, который указывает на то, что теги FIRST_PAGE и LAST_PAGE всегда пустые. Это может быть связано с тем, что эти элементы пагинации не всегда используются или не генерируются в текущей реализации функции cot_pagenav().
Пример использования:
Если cot_pagenav() вернула следующий массив:
$pagination = [
'main' => '<ul>...</ul>',
'prev' => '<a href="page/1">Previous</a>',
'next' => '<a href="page/3">Next</a>',
'current' => 2,
'entries' => 100,
'onpage' => 20,
'perPage' => 20,
'total' => 5,
'first' => '',
'last' => '',
];
То функция cot_generatePaginationTags с префиксом pagination_ вернет:
[
'XXX_PAGINATION' => '<ul>...</ul>',
'XXX_PREVIOUS_PAGE' => '<a href="page/1">Previous</a>',
'XXX_NEXT_PAGE' => '<a href="page/3">Next</a>',
'XXX_CURRENT_PAGE' => 2,
'XXX_TOTAL_ENTRIES' => 100,
'XXX_ENTRIES_ON_CURRENT_PAGE' => 20,
'XXX_ENTRIES_PER_PAGE' => 20,
'XXX_TOTAL_PAGES' => 5,
'XXX_FIRST_PAGE' => '',
'XXX_LAST_PAGE' => '',
]
Эти теги можно использовать в XTemplate, подставив нужные значения в шаблон пагинации.
Пример использования шаблонах котонти в списке категорий:
<!-- IF {LIST_CAT_PAGINATION} -->
<p class="paging clear">
<span>{PHP.L.Page} {LIST_CAT_CURRENT_PAGE} {PHP.L.Of} {LIST_CAT_TOTAL_PAGES}</span>
{LIST_CAT_PREVIOUS_PAGE}{LIST_CAT_PAGINATION}{LIST_CAT_NEXT_PAGE}
</p>
<!-- ENDIF -->
Пример использования шаблонах котонти в списке статей:
<!-- IF {PAGINATION} -->
<p class="paging clear">
<span>{PHP.L.Page} {CURRENT_PAGE} {PHP.L.Of} {TOTAL_PAGES}</span>
{PREVIOUS_PAGE}{PAGINATION}{NEXT_PAGE}
</p>
<!-- ENDIF -->
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 05.07.2026 18:32
- Страница размещена: 22.01.2025 20:36
- Последнее обновление: 22.01.2025 20:38