ALBIREO CMS
version: 2025.11.01

Функции меток Albireo CMS

tagGetAll tagGetPages tagLinks

Функция tagGetAll

Функция tagGetAll предназначена для сбора, подсчета и сортировки всех меток (тегов), используемых на сайте. Она извлекает данные из поля tags для всех опубликованных записей, агрегирует их и возвращает массив, отсортированный по популярности. Это полезно для создания "облака тегов" или списка всех категорий.

Сигнатура

function tagGetAll(): array

Аргументы

Функция не принимает аргументов.

Результат

Возвращает ассоциативный массив (array), в котором:

  • Ключ — это название метки (string).
  • Значение — это количество раз, которое данная метка встречается на сайте (int).

Массив отсортирован по убыванию количества использований. Метки с одинаковой частотой дополнительно отсортированы по алфавиту.

Примеры использования

Пример: Создание "облака тегов"

Это основной сценарий использования функции. Полученный массив можно легко обработать в цикле для вывода ссылок.

// Получаем все теги
$tags = tagGetAll();

// $tags может выглядеть так:
// [
//    'PHP' => 25,
//    'JavaScript' => 18,
//    'Базы данных' => 12
// ]

if ($tags) {
    echo '<div class="tags-cloud">';

    foreach ($tags as $tagName => $tagCount) {
        // Можно дополнительно вычислять размер шрифта на основе $tagCount
        // для визуального эффекта облака.
        $url = SITE_URL . 'tags/' . $tagName;
        echo '<a href="' . $url . '" title="Записей: ' . $tagCount . '">';
        echo htmlspecialchars($tagName);
        echo '</a> ';
    }

    echo '</div>';
}

Примечания

  • Отложенная публикация: Запрос к базе данных учитывает отложенную публикацию, исключая из подсчета метки из записей, которые еще не были опубликованы.
  • Сортировка: Применяется двойная сортировка: сначала все метки сортируются по алфавиту (ksort), а затем по убыванию популярности (arsort). Это обеспечивает стабильный и предсказуемый порядок для меток с одинаковым количеством использований.

Функция tagGetPages

Функция tagGetPages предназначена для получения списка записей блога, которые отмечены определенной меткой (тегом). Она является удобной оберткой над более общей функцией getPages(), заранее формируя для неё правильное SQL-условие WHERE.

Сигнатура

function tagGetPages(string $tag, int $limit): array

Аргументы

string $tag
Название метки, по которой будет производиться поиск записей.
int $limit
Количество записей, отображаемых на одной странице пагинации.

Результат

Возвращает ассоциативный массив (array) в том же формате, что и функция getPages(). Массив содержит два ключа:

  • 'pagination': Массив с данными для построения навигации по страницам.
  • 'files': Массив, содержащий данные найденных записей.

Примеры использования

Пример: Создание страницы архива для метки

Это основной сценарий использования функции. На странице, отображающей все посты с определенным тегом (например, /tags/PHP), можно использовать эту функцию для получения данных.

// Предположим, мы получили имя тега из URL
$currentTag = 'PHP'; // Например, из $_GET['tag']

// Устанавливаем количество записей на страницу
$postsPerPage = 15;

// Получаем данные
$result = tagGetPages($currentTag, $postsPerPage);

// Отображаем заголовок
echo '<h1>Записи с меткой: ' . htmlspecialchars($currentTag) . '</h1>';

// Выводим список записей через шаблон
// echo tpl(data: $result['files'], tpl: 'post-list.php');

// Выводим пагинацию
// echo tpl(data: $result['pagination'], tpl: 'pagination.php');

Примечания

  • Зависимости: Функция является оберткой и полностью зависит от работы функции getPages().

Функция tagLinks

Функция tagLinks предназначена для преобразования строки, содержащей список меток (тегов), в готовый для отображения набор HTML-ссылок. Каждая ссылка ведет на страницу архива соответствующей метки.

Сигнатура

function tagLinks(string $tags, string $delim = ', '): string

Аргументы

string $tags
Строка с метками. Предполагается, что метки разделены запятыми.
string $delim (необязательный)
Строка-разделитель, которая будет вставляться между сгенерированными HTML-ссылками. По умолчанию используется запятая с пробелом (', ').

Результат

Возвращает строку (string) с HTML-кодом, содержащим ссылки на страницы меток. Если исходная строка $tags пуста, возвращается пустая строка.

Примеры использования

Пример 1: Отображение меток под статьей

Это основной сценарий использования функции. В шаблоне вывода поста можно легко отобразить все его метки в виде ссылок.

// Предположим, из данных поста мы получили строку с метками
$postTags = 'веб-разработка, PHP, базы данных';

// Генерируем и выводим HTML
echo '<div class="post-tags">';
echo 'Метки: ' . tagLinks($postTags);
echo '</div>';

// Результат:
// <div class="post-tags">
// Метки: <a href=".../tags/веб-разработка">веб-разработка</a>, 
// <a href=".../tags/PHP">PHP</a>, 
// <a href=".../tags/базы данных">базы данных</a>
// </div>

Пример 2: Использование кастомного разделителя

Можно легко изменить внешний вид списка, поменяв разделитель.

$tags = 'дизайн, верстка, юзабилити';
$links = tagLinks($tags, ' · ');

// $links будет:
// <a href=".../tags/дизайн">дизайн</a> · <a href=".../tags/верстка">верстка</a> · <a href=".../tags/юзабилити">юзабилити</a>
echo $links;

Примечания

  • Сегмент URL: Сегмент URL для страниц меток жестко задан как 'tags'.
  • Безопасность: Текст метки, выводимый внутри тега <a>, экранируется с помощью htmlspecialchars() для предотвращения XSS-атак.
  • Кодирование URL: В текущей реализации имя метки вставляется в URL как есть, без использования urlencode(), полагаясь на то, что современные браузеры корректно обработают UTF-8 символы в URL.