Albireo CMS 2025.01.17

Метки и рубрики в Albireo CMS

В отличие от других систем в Albireo CMS нет жесткого алгоритма для группировки страниц. Рубрики и метки — это просто уже устоявшийся в Интернете способ группировки записей, поэтому в Albireo CMS он присутствует «из коробки». Но с точно таким же успехом вы можете создать любую другую группировку записей.

Метки

Для указания метки записи используется поле tags. Метки можно указывать через запятую:

tags: Астрономия, Созвездия

Когда вы набираете в браузере ваш-сайт/tags, то выводится т.н. облако тэгов/меток, то есть все метки, которые система нашла в страницах сайта.

Если же набрать страницу метки, например ваш-сайт/tags/Астрономия, то будет стандартный вывод записей этой метки.

По умолчанию для меток используется поле и адрес с tags, но это можно изменить, если указать в config.php ключи slugForTags и fieldForTags.

Страница вывода меток — это файл specific/tags.php. Вам не нужно его редактировать, поскольку он обеспечивает типовой функционал.

Рубрики

Рубрики задаются с помощью поля category:

category: astro, dinosauria

По адресу ваш-сайт/category будут выводиться все рубрики, а по адресу ваш-сайт/category/astro записи указанной метки.

За вывод рубрик отвечает файл specific/category.php.

В отличие от меток, рубрики желательно придумать заранее. Для этого служит файл конфигурации website/config/category.php. Его нужно скопировать из system/config/category.php.

Каждая рубрика описывается в таком виде:

 // короткая ссылка рубрики относительно site/category/
 'slug' => [ 
    'title' => 'HEAD title', // обязательный
    'caption' => 'заголовок для вывода на сайте',
    'description' => 'HEAD description',
    'text-start' => 'Текст в начале рубрики',
    'text-end' => 'Текст в конце рубрики',
    'order' => 10, // порядок среди других рубрик
    'order-pages' => 'date-asc', // сортировка записей рубрики date-asc или date-desc (по умолчанию)
    'limit' => 2, // кол-во записей на одной странице
    'path' => 'cat', // иерархия materialize
],

В text-start и text-end можно использовать ///  это "\n" перенос строки

Если рубрики в website/config/category.php нет, то она будет выводиться по принципу метки — её название и будет её адресом. Но чтобы указать другие параметры вывода рубрики, нужно её указать в конфигурации.

Общие принципы группировки записей

В Albireo CMS группировать можно любые записи по любым критериям. Например вы хотите часть записей объединить в группу «demo». Для этого в каждой такой записи укажите поле, которое будет указывать на эту группу, например так:

group: demo

Для того, чтобы вывести все эти записи, нужно создать новую страницу и прописать в ней slug по которой эта страница будет доступна.

Это будет обычная страница, например demo.php, где указываются все те же поля, что и у других страниц, но в теле страницы нужно будет разместить php-код, который будет получать и выводить записи с group: demo:

<?php if (!defined('BASE_DIR')) exit('No direct script access allowed');
/**

title: Демо
description: Демонстрация
slug: demo
type: system

**/

$limit = 7; // кол-во записей на одной странице пагинации

$files = getPagesField('group', 'demo'); // получаем записи

if (!$files) {
    header('HTTP/1.0 404 Not Found');
    echo extras('not-found.php');
    return;
} else {
    $pag = paginationA($files, limit: $limit);
    $files = $pag['files'];
    
    echo tpl(data: $files, tpl: TPL_DIR . 'one-column-3.php', add: ['columnClass' => 'w48', 'header' => 'Демо', 'description' => 'Демонстрация']);
    
    echo tpl(data: $pag, tpl: TPL_DIR . getConfig('pagination', 'pagination1.php'));
}

Теперь наберите в браузере ваш-сайт/demo и вы увидите типовой вывод записей, где есть group: demo.

По умолчанию получение записей через getPagesField() происходит с учетом поля type: blog. Если этого поля нет, то страница не попадёт в выборку.

Данная страница в терминах Albireo CMS называется архивной, то есть страница, которая содержит php-код для вывода других страниц. В архивных страницах для организации вывода используется php-код.

Группировка записей возможна по любым полям. В качестве примера вы можете посмотреть файл demo/dinosauria.php, где по адресу demo/dinosauria будут выводится записи рубрики «dinosauria».