Поля страниц
Основные поля записи
Поле | Описание | Пример |
---|
title | Тэг TITLE | title: название страницы |
description | meta description | description: описание |
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: -
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 |
images-dir | Каталог изображений (используется в админке) | images-dir: [UPLOADS_URL]images/ |
image-noview | Отключить вывод миниатюры | image-noview: + |
Комментирование
Если type: system
, то комментарии не выводятся. Для комментариев нужно включить use.alpine: +
.
Поле | Описание | Пример |
---|
comments | Вывод комментариев | comments: + |
comments-pub | Скрыть уже опубликованные комментарии | comments-pub: - |
Карта сайта sitemap и sitemap.xml
Поле | Описание | Пример |
---|
sitemap | Убрать страницу из карты сайта | sitemap: - |
sitemap-changefreq | Параметр changefreq | sitemap-changefreq: weekly |
sitemap-priority | Параметр priority | sitemap-priority: 0.5 |
Статистика
Поле | Описание | Пример |
---|
stat | Включить подсчет статистики посещений | stat: + |
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 |
catTitleFormat | Формат TITLE для рубрик | catTitleFormat: < ?= lang('Category') ? >: «%s» |
Уровень доступа
Поле | Описание | Пример |
---|
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 |
this-file | Полное имя текущего файла |
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: текст |
Шапка и подвал
Шапки и подвалы размещаются в каталоге шаблона modules
. Удобней задавать параметры шапки в конфигурации сайта сразу для всех страниц. Указанные поля могут использоваться в некоторых компонентах шапки.
Поле | Описание | Пример |
---|
footers | Подвал | footers: footers/footer1.php |
headers | Шапка | headers: headers/header1.php, headers/header2.php |
headers.title | Текст в шапке | headers.title: текст в шапке |
headers.subtitle | Подстрочный текст в шапке | headers.subtitle: подстрочный текст |
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 |
Тэг HTML
Ключ поля может быть любым: html[ключ]: значение
сформирует <html ключ="значение">
.
Поле | Описание | Пример |
---|
html[lang] | Язык сайта | html[lang]: ru |
html[prefix] | Дополнительный префикс для OGP | 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"> |
head.favicon | Сниппет с фавиконкой сайта | head.favicon: favicon |
head.counter | Сниппет со счётчиком Google | head.counter: counter |
Секция BODY
Поле | Описание | Пример |
---|
lazy[] | Произвольные данные перед закрывающим BODY | lazy[]: html-код |
body | Произвольные данные для тэга BODY | body: class="bg-red100" |
Управление конфигурацией
Поле | Описание | Пример |
---|
setConfig[] | Замена значения из конфигурации сайта | setConfig[siteTitle]: новый заголовок сайта |
Работа с CSS
Поле | Описание | Пример |
---|
css.theme | Подключение как внешний css-файл link rel="stylesheet" из css/themes/ | css.theme: berry.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 |
Работа с 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: my.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 |
Прочие библиотеки
Библиотека сама определяет свой способ подключения и использование. Подключение библиотек происходит в каталоге шаблона parts
.
# Настройка 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: ▲
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> | Заголовок блока |
Блок «Похожие записи»
Записи случайно (кроме 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.
Порядок записей для sortArray()
В некоторых случаях можно задать собственный порядок записей с помощью поля order
. Он может использоваться функцией sortArray()
, например:
$files = sortArray($files, 'order', 'number-asc');