Поля страниц
Основные поля записи
Поле | Описание | Пример |
---|---|---|
title | Тэг TITLE | title: название страницы |
description | meta description | description: описание |
header | Заголовок страницы. Если его нет, то будет использовано поле title | header: Заголовок записи |
announce | Краткое описание для вывода на архивных страницах | announce: краткое описание |
category | Рубрики через запятую - сайт/category/рубрика | category: blog, todo |
tags | Метки через запятую - сайт/tags/метка | tags: todo, astro |
draft | Черновик. Если вкл, то страница не публикуется | draft: + |
Дата
Поле | Описание | Пример |
---|---|---|
date | Дата публикации | date: 2024-02-11 |
date-edit | Дата редактирования | date-edit: 2024-11-02 14:32 |
date-pub | Дата отложенной публикации | date-pub: 2024-09-26 12:00 |
Тип страницы
Тип записи — используется для фильтрации вывода, указывается явно при необходимости. У страницы тип можно не указывать.
type: blog # основной тип записей для вывода на главной, в рубриках и т.д. type: system # системный тип
Если указан type: system
, то на странице не будут выводиться комментарии, блок другие записи, а также страница не будет выводиться в архивах sitemap и sitemap.xml. Фактически это будет эквивалентно таким полям:
comments: - sitemap: - stat: - stat.page: - other-pages: -
В архивах sitemap вывод осуществляется только для type: blog
. Остальные типы игнорируются. В sitemap.xml выводятся все страницы, кроме type: system
и sitemap: -
.
Адреса страниц
Поле | Описание | Пример |
---|---|---|
slug | Адрес страницы | slug: about |
slug-pattern | Дополнительный паттерн адреса в формате preg_math() | slug-pattern: welcome |
method | HTTP-метод страницы (для роутинга): POST, AJAX, GET, ALL и т.д. | method: POST |
Если у страницы нет поля slug
, то оно будет создано автоматически на основе имени файла и с учетом вложенности каталогов. Если имя файла начинается с цифр и точки, то они будут удалены, например если имя файла 01.about.php
, то slug будет равен about
. С помощью цифр вы можете сортировать файлы в удобном порядке.
Изображения
Изображение записи используется для формирования миниатюры и последующего вывода на архивных страницах: главной, рубрик, меток и т.п.
Поле | Описание | Пример |
---|---|---|
image-large | Изображение записи | image-large: [UPLOADS_URL]file.webp |
image-large-size | Размер изображения миниатюры (ширина и высота через любой разделитель) | image-large-size: 800 x 600 |
image-noview | Отключить вывод миниатюры | image-noview: + |
images-dir | Каталог изображений текщей страницы (используется в админке) | images-dir: [UPLOADS_URL]images/ |
Комментирование
Если type: system
, то комментарии не выводятся. Для комментариев нужно включить use.alpine: +
.
Поле | Описание | Пример |
---|---|---|
comments | Вывод комментариев | comments: + |
comments-pub | Скрыть уже опубликованные комментарии | comments-pub: - |
comments.page | Адрес (slug) который указывает адрес страницы для комментариев.C его помощью можно выведить комментарии любой другой страницы | comments.page: demo/food/food1 |
Карта сайта sitemap и sitemap.xml
Поле | Описание | Пример |
---|---|---|
sitemap | Убрать страницу из карты сайта | sitemap: - |
sitemap-changefreq | Параметр changefreq | sitemap-changefreq: weekly |
sitemap-priority | Параметр priority | sitemap-priority: 0.5 |
Статистика
Поле | Описание | Пример |
---|---|---|
stat | Включить сбор статистики посещений с помощью модуля Stat (ресурсозатратная операция) | stat: + |
stat.page | Подсчет количество прочтений записей с помощью модуля PageViews (рекомендуется вместо Stat) | stat.page: + |
stat-start | Число, которое прибавляется к счетчику просмотров | stat-start: 122 |
Обработка текста
Поле | Описание | Пример |
---|---|---|
parser | Парсер текста | parser: textsimple |
compress | Сжатие итогового html-кода страницы | compress: + |
protect-pre | Защищает html-содержимое PRE и CODE | protect-pre: + |
content-separate | Обработка контента отдельно от layout-файла. Лучше не использовать без особой необходимости | content-separate: + |
text-function | Функции для постобработки html-кода через запятую | text-function: trim, myText |
Формат
Поле | Описание | Пример |
---|---|---|
pagination-format | Формат пагинации | pagination-format: [NBSP] - < ?= lang('page') ? >; %d |
Уровень доступа
Поле | Описание | Пример |
---|---|---|
user-level | Уровень доступа к странице (php-код прописывается в теле страницы) | user-level: admin |
PHP-функции
Поле | Описание | Пример |
---|---|---|
require[] | подключить php-файлы перед выводом страницы | require[]: myfile.php |
triggers[] | Функция-триггер выполняется перед выводом страницы в pageOut() | triggers[]: tagHead |
Автоматически создаваемые поля
Поле | Описание |
---|---|
page-url | Полный адрес страницы на основе slug |
page-url-full | Полный текущий адрес (может отличаться от адреса slug, например в метках) |
current-path | Полный url к текущему каталогу файла страницы внутри PAGES_DIR |
subdirs | Подкаталоги относительно PAGES_DIR (всегда разделены символом /). Если это «.» то это корень PAGES_DIR |
subdirs-basename | Последний (правый) каталог в поле subdirs |
this-file | Полное имя текущего файла |
this-dir | Полный каталог текущего файла |
uniqid | Уникальный идентификатор страницы, привязанный к slug |
date.unix | Метка времени Unix создания страницы на основе поля date |
date-edit.unix | Метка времени Unix редактирования страницы на основе поля date-edit |
date-pub.unix | Метка времени Unix отложенной публикации страницы на основе поля date-pub |
link-for-edit | Адрес для редактирования страницы в админ-панели |
Шаблон
Шаблон также можно задать в файле конфигурации config.php
.
Поле | Описание | Пример |
---|---|---|
template | каталог шаблона в templates/ | template: default |
Модульные сетки
Модульные сетки в виде файлов размещаются в каталоге шаблона layout
.
Пример | Описание |
---|---|
layout: default.php | Вывод сайта по умолчанию |
layout: sidebar.php | Сайдбар справа |
layout: empty.php | Вывод только тела страницы |
layout: full-width.php | Вывод на всю ширину браузера |
layout: clean.php | Только контент без шапки и подвала |
layout: doc1.php | Вывод документации №1 |
layout: doc2.php | Вывод документации №2 |
layout: sidebar-float.php | Боковой «плавающий» сайдбар |
layout: sidebar-left.php | Левый сайдбар |
layout: landing.php | Для лендингов без шапки и подвала |
Блоки для модульных сеток
Поле | Описание | Пример |
---|---|---|
layout-content-start | Текст перед контентом | layout-content-start: текст |
layout-content-end | Текст после контента | layout-content-end: текст |
layout-start | Текст в самом начале шаблона | layout-start: текст |
layout-end | Текст в самом конце шаблона | layout-end: текст |
Виджеты в сайдбаре
Поле | Описание | Пример |
---|---|---|
widgets-config | Файл конфигурации виджетов, по умолчанию widgets.php | widgets-config: widgets-my.php |
Шапка и подвал
Шапки и подвалы размещаются в каталоге шаблона modules
. Удобней задавать параметры шапки в конфигурации сайта сразу для всех страниц. Указанные поля могут использоваться в некоторых компонентах шапки.
Поле | Описание | Пример |
---|---|---|
footers | Подвал | footers: footers/footer1.php |
headers | Шапка | headers: headers/header1.php, headers/header2.php |
headers.title | Текст в шапке | headers.title: текст в шапке |
headers.subtitle | Подстрочный текст в шапке | headers.subtitle: подстрочный текст |
headers.subtitle2 | Еще один подстрочный текст в шапке | headers.subtitle2: дополнительный текст |
headers.logo | Изображения логотипа в шапке | headers.logo: [UPLOADS_URL]images/logo.png |
headers.namesite | Название сайта для шапки | headers.namesite: Albireo CMS |
headers.logo.width | Ширина логотипа | headers.logo.width: 120 |
headers.logo.height | Высота логотипа | headers.logo.height: 120 |
headers.pursuing | Разрешить в шапке использовать эффект «липкого» меню. | headers.pursuing: + |
headers.pursuing.class | Класс для headers.pursuing | headers.pursuing.class: animation-zoom |
headers.pursuing.threshold | Отступ в px для headers.pursuing | headers.pursuing.threshold: 50 |
Тэг HTML
Ключ поля может быть любым: html[ключ]: значение
сформирует <html ключ="значение">
.
Поле | Описание | Пример |
---|---|---|
html[атрибут] | Произвольный атрибут и его значение | html[class]: dark <html class="dark"> |
html[lang] | Язык сайта | html[lang]: en <html lang="en"> |
html[prefix] | Дополнительный префикс для OGP | html[prefix]: og: https://ogp.me/ns# <html prefix="og: https://ogp.me/ns#"> |
Секция HEAD
Поле | Описание | Пример |
---|---|---|
head[] | Произвольный html для HEAD | head[]: html-код |
head-meta[] | Формирование META-NAME-CONTENT | head-meta[robots]: noindex <meta name="robots" content="noindex"> |
head-lang[] | Формирование LINK-REL-HREFLANG, альтернативная языковая версия страницы | head-lang[ключ]: адрес <link rel="alternate" hreflang="ключ" href="значение"> |
http-equiv[] | Формирование META-HTTP-EQUIV | http-equiv[Cache-Control]: max-age=300, must-revalidate <meta http-equiv="Cache-Control" content="max-age=3600, must-revalidate"> |
Секция BODY
Поле | Описание | Пример |
---|---|---|
lazy[] | Произвольные данные перед закрывающим BODY | lazy[]: html-код |
body | Произвольные данные для тэга BODY | body: class="bg-red100" |
Управление конфигурацией
Поле | Описание | Пример |
---|---|---|
setConfig[] | Замена значения из конфигурации сайта | setConfig[siteTitle]: новый заголовок сайта |
Работа с CSS
Поле | Описание | Пример |
---|---|---|
css.layout | Вывод содержимого файла из assets/css в <STYLE> </STYLE> . Используется для задания поведения модульной сетки | css.layout: fields.css css.layout: nofields.css |
css.theme | Подключение как внешний css-файл link rel="stylesheet" из css/themes/ | css.theme: red.css |
css.theme[] | Подключение как внешний css-файл link rel="stylesheet" из css/themes/ | css.theme[]: red.css |
css.style[] | Произвольные css-правила для <STYLE> </STYLE> | css.style[]: li {margin-bottom: 20px} |
css.root[] | CSS-переменные, префикс «--» добавится автоматически <STYLE> :root { } </STYLE> | css.root[body-font-family]: Lora |
css.head[] | Подключение как внешний css-файл из assets/css в секцию HEAD | css.head[]: my.css |
css.lazy[] | Подключение как внешний css-файл из assets/css в конце BODY | css.lazy[]: my.css |
css.fonts | Подключение как внешний css-файл из assets/css/fonts/ в секции HEAD | css.fonts: lora.css |
css.fonts[] | Подключение как внешние css-файлы из assets/css/fonts/ в секции HEAD | css.fonts[]: lora.css |
css.fonts.lazy | Подключение как внешний css-файл из assets/css/fonts/ в конце BODY | css.fonts.lazy: lora.css, exo2.css |
css.fonts.lazy[] | Подключение как внешний css-файл из assets/css/fonts/ в конце BODY | css.fonts.lazy[]: lora.css |
css.fstyle | Вывод содержимого файла из assets/css в <STYLE> </STYLE> | css.fstyle: my.css, other.css |
css.fstyle[] | Вывод содержимого файла из assets/css в <STYLE> </STYLE> | css.fstyle[]: my.css |
css.head.url[] | Произвольные (полный путь) css-файлы для HEAD | css.head.url[]: https://site.com/style.css |
css.lazy.url[] | Произвольные (полный путь) css-файлы в конце BODY | css.lazy.url[]: https://site.com/style.css |
use.font[] | Подключение шрифта из каталога ресурсов в HEAD | use.font[gabriela]: + |
use.font.lazy[] | Подключение шрифта из каталога ресурсов в конце BODY | use.font.lazy[gabriela]: + |
Работа с JS
Поле | Описание | Пример |
---|---|---|
js.head[] | Подключение как внешние файлы из assets/js в секцию HEAD | js.head[]: my.js |
js.lazy[] | Подключение как внешние файлы из assets/js в конце BODY | js.lazy[]: my.js |
js.lazy | Подключение внешнего файла из assets/js в конце BODY | js.lazy: albireo.js |
js.head.url[] | Подключение внешнего файла (полный путь) HEAD | js.head.url[]: https://site.com/my.js |
js.lazy.url[] | Подключение внешнего файла (полный путь) в конце BODY | js.lazy.url[]: https://site.com/my.js |
js.fscript[] | Вывод содержимого файла из assets/js в секцию HEAD в виде <SCRIPT> </SCRIPT> | js.fscript[]: theme-dark.js |
Прочие библиотеки
Библиотека сама определяет свой способ подключения и использование. Подключение библиотек происходит в каталоге шаблона parts
.
Пример | Описание |
---|---|
use.alpine: + | Alpine JS |
use.alpine.old: + | alpine.js ver. 2.8.2 |
use.imfont: + | Иконки IM |
use.tiny-slider: + | Tiny-slider https://github.com/ganlanyuan/tiny-slider |
use.animate: + | Анимация CSS https://animate.style/ |
use.bootstrap-icons: + | Иконки Bootstrap в конце BODY https://icons.getbootstrap.com/ |
use.bootstrap-icons-head: + | Иконки Bootstrap в HEAD https://icons.getbootstrap.com/ |
use.bootstrap4: + | Bootstrap CSS 4.x - css-файл в HEAD, js-файл в BODY |
use.bootstrap5: + | Bootstrap CSS 5.x - css-файл в HEAD, js-файл в BODY |
use.clipboard: + | Буфер обмена https://clipboardjs.com/ |
use.cssgram: + | Фильтры для изображений https://una.github.io/CSSgram/ |
use.fontawesome5: + | Font Awesome Free 5.15.4 https://fontawesome.com |
use.glightbox: + | Лайтбокс https://github.com/biati-digital/glightbox |
use.grid-gallery: + | Grid-gallery https://github.com/jestov/grid-gallery |
use.highlight: + | Подсветка кода https://highlightjs.org/ |
use.highlight.theme: default | Основная тема подсветки кода |
use.highlight.theme-dark: github-dark | Тема подсветки кода для dark-режима |
use.splitjs: + | Разделение блоков https://split.js.org/ |
use.animejs: + | Анимация JS https://animejs.com/ |
use.jquery2: + | jQuery 2.x в HEAD |
use.jquery3: + | jQuery 3.x в HEAD |
use.hover-css: + | Hover.css http://ianlunn.github.io/Hover/ |
use.fslightbox: + | Лайтбокс Fullscreen Lightbox |
use.pursuingnav: +: + | «Липкое» меню (см. parts/lazy/pursuingnav.php ) |
use.scrolltotop: + | Скроллинг вверх |
# Настройка scrolltotop use.scrolltotop: + # классы кнопки scrolltotop.class: hide-print hide-tablet pos-fixed pos20-r pos20-b bg-primary400 hover-bg-primary600 t-white hover-t-white cursor-pointer t20px t-bold icon-square rounded transition-var animated b-hide-imp # классы анимации scrolltotop.in: animation-zoom scrolltotop.out: animation-zoomout # отступ срабатывания сверху scrolltotop.offset: 300 # Символ кнопки scrolltotop.icon: ▲
Berry CSS. Dark-режим
Albireo CMS использует Berry CSS как основной css-фреймворк, поэтому в подавляющем большинстве случаев потребуется подключить css-файл (по умолчанию он включен):
use.berry: +
Если вы создаёте страницу, где Berry CSS не нужен, например лендинг на Bootstrap CSS, то Berry CSS можно отключить так:
use.berry: -
В Berry CSS по умолчанию доступен dark-режим, поэтому, если его нужно полностью отключить, то следует прописать:
use.berry.dark: - # если используется подсветка кода, то можно сделать так, чтобы цветовая тема не менялась use.highlight.theme-dark: default
Переключение на dark-режим осуществляется с помощью js-кода (см. отдельное описание и примеры). Если стоит задача сделать dark-режим включенным по умолчанию (актуально для темных сайтов):
use.berry.dark.default: +
Если dark-режим единственный, который нужен для сайта (то есть без возможности переключения), то лучше это сделать прописав класс dark
для тэга HTML
:
html[class]: dark
Если шаблон поддерживает выбор css-theme (дополнительный файл цветовой темы), то его можно задать как дефолтный вариант:
use.berry.theme.default: indigo.css
Если используется дефолтная цветовая тема Berry CSS, то это поле не требуется.
Open Graph Protocol
Лучше задать в config.php
. OGP формируется через <meta property="ключ" content="значение">
.
html[prefix]: og: https://ogp.me/ns# ogp[og:site_name]: название сайта ogp[og:type]: article ogp[og:url]: [page-url-full] ogp[og:title]: [title] ogp[og:description]: @if [announce] @else [description] ogp[og:image]: @if [image-large] @else '[UPLOADS_URL]ogp-default.jpg
Навигация автоматическая
Пример | Описание |
---|---|
nav: + | Автоматическая навигация в конце страницы. Сортировка по дате публикации |
nav-top: + | Аналогично, только в начале страницы |
Навигация с указанием адресов
Для разделения адресов используется запятая. Навигация выводится в конце страницы next-prev
или в начале next-prev-top
Пример | Описание |
---|---|
next-prev: [config-dir]order-my.php | Порядок адресов хранится в файле конфигурации |
next-prev: astronomy/a1, astronomy/a3 | Указание страницы «ДО» и «ПОСЛЕ» |
next-prev: ,astronomy/a3 | Указание только страницы «ПОСЛЕ» |
next-prev: astronomy/a1, | Указание только страницы «ДО» |
next-prev-top: astronomy/a1, astronomy/a3 | Указание страницы «ДО» и «ПОСЛЕ» |
next-prev-top: ,astronomy/a3 | Указание только страницы «ПОСЛЕ» |
next-prev-top: astronomy/a1, | Указание только страницы «ДО» |
Иерархия страниц
Иерархическая структура, где путь указывается через точку — это уровень вложенности. В данном примере будут найдены все страницы, где у hierarchy
начинается с astro.
.
Пример | Описание |
---|---|
hierarchy: astro.04 | Группа, вложенность и порядок |
hierarchy-title: <div class="t130">Ещё записи по теме</div> | Заголовок блока |
Сниппеты в HEAD
Если есть сниппеты, которые нужно подключать в секцию HEAD страницы, то можно использовать поле snippet.head[]
Пример | Описание |
---|---|
snippet.head[favicon]: + | Подключение сниппета favicon |
snippet.head[counter]: + | Подключение сниппета counter |
Extras-файлы
Extras-файлы размещаются в каталоге шаблона extras
.
# вывод в начале контента вкл/выкл extras.start[file1.php]: + extras.start[file2.php]: - # вывод в конце контента вкл/выкл extras.end[file1.php]: + extras.end[file2.php]: -
Блок «Похожие записи»
Записи случайно (кроме system), но учитывается текущая рубрика category и последовательные условия:
- Если записей меньше 3, то учитывается только текущая tags:
- Если записей меньше 3, то учитывается только текущая type:
- Если записей меньше 3, то ничего не выводится
Пример | Описание |
---|---|
other-pages: - | Отключить блок |
other-pages: Похожие записи | Заголовок блока |
other-pages: | Не выводить заголовок блока |
other-pages: [NBSP] | Если нужно сохранить пустой заголовок ради отступа |
Навигация по странице
Вывод навигации по статье. Формируется список из заголовков H2. Здесь не используются поля, а только свой блок и сниппет. Для этого там, где нужно вывести навигацию нужно прописать код:
<div class="article_navigation"></div> <?= snippet('article-navigation-flat') ?>
Если нужно изменить тэг заголовка, то он указывается во втором параметре, например поиск H4:
<div class="article_navigation"></div> <?= snippet('article-navigation-flat', 'h4') ?>
Сниппет article-navigation-flat
создаёт «плавающий» блок навигации. Если такой блок не подходит, то можно использовать сниппет article-navigation
для создания блока в виде правой колонки:
<div class="article_navigation"></div> <?= snippet('article-navigation') ?>
Если нужно заменить заголовок блока, то он указывается в третьем аргументе:
<div class="article_navigation"></div> <?= snippet('article-navigation-flat', 'h2', 'Навигация') ?>
Языковой перевод. Мультиязычность
Для перевода используется текущий язык браузера. Код языка определяется как стандарт ISO 639.
# можно использовать lang() в полях страницы title: <?= lang('Categories') ?> # или # title и description по умолчанию title: Условия использования и копирайты description: Условия использования и копирайты # языковой перевод для каждого языка # указывается в формате lang.ЯЗЫК[ПОЛЕ]: перевод lang.en[title]: Terms of Use and Copyright lang.uk[title]: Умови використання та копірайти lang.en[description]: Terms of Use and Copyright lang.uk[description]: Умови використання та копірайти html[lang]: <?= getConfig('userLang') ?> # устанавливает язык посетителя тэга <HTML>
После изменения поля, старое значение сохраняется _odd.ПОЛЕ
. Получить его можно через getPageData()
, например:
pr(getPageData('title')); // Terms of Use and Copyright pr(getPageData('_old.title')); // Условия использования и копирайты
Подробнее см. Мультиязычность в Albireo CMS.