Функция 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 -->

 

 

3 minutes read Administrator

Comments (0)

No comments yet
Only registered users can post new comments

Content author

Administrator

Offline

Administrator

Last logged: 2026-07-05 18:32

  • Page published: 2025-01-22 20:36
  • Last update: 2025-01-22 20:38