Поля страниц
Основные поля записи
| Поле | Описание | Пример |
|---|---|---|
| title | Тэг TITLE | title: название страницы |
| description | meta description | description: описание |
| header | Заголовок страницы. Если его нет, то будет использовано поле title | header: Заголовок записи |
| announce | Краткое описание для вывода на архивных страницах | announce: краткое описание |
| category | Рубрики через запятую - сайт/category/рубрика | category: blog, todo |
| tags | Метки через запятую - сайт/tags/метка | tags: todo, astro |
| draft | Черновик. Если вкл, то страница не публикуется | draft: + |
| author | Автор статьи. Может использоваться в JSON+LD | author: Jane Doe |
| llms | Описание для нейросетей в виде файла llms.txt (работает автоматически). В llms.txt последовательно проверяются поля: llms, announce, description и title. | llms: описание llms: - для отключения |
Дата
| Поле | Описание | Пример |
|---|---|---|
| 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, strRemoveLF |
Формат
| Поле | Описание | Пример |
|---|---|---|
| pagination-format | Формат пагинации | pagination-format: [NBSP] - < ?= lang('page') ? >; %d |
Уровень доступа
| Поле | Описание | Пример |
|---|---|---|
| user-level | Уровень доступа к странице (php-код доступа прописывается в теле страницы) | user-level: admin |
... user-level: admin **/ if (noUserAccess(message: 'Access denied!')) return; ?>
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-file-stem | Имя текущего файла без расширения и пути (my/about/contact.php -> contact) |
| this-dir | Полный каталог текущего файла |
| uniqid | Уникальный идентификатор страницы, привязанный к slug |
| date.unix | Метка времени Unix создания страницы на основе поля date |
| date-edit.unix | Метка времени Unix редактирования страницы на основе поля date-edit |
| date-pub.unix | Метка времени Unix отложенной публикации страницы на основе поля date-pub |
| link-for-edit | Адрес для редактирования страницы в админ-панели |
| user-lang | Язык браузера текущего пользователя на основе поля lang и ключа конфигурации defaultLang |
Шаблон
Шаблон также можно задать в файле конфигурации 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 |
Меню
Меню выводится функцией menu1() (см. компоненты шапки). Формирование меню происходит через два конфигурационных файла: первый задаёт задает ссылки и иерархию элементов меню, а второй — его дизайн. Такое разделение позволяет менять дизайн меню, не изменяя его ссылки.
| Поле | Описание | Пример |
|---|---|---|
| menu | Файл элементов меню. По умолчанию menu.php | menu: menu.php |
| menu.design | Файл дизайна меню. По умолчанию menu-design1.php | menu.design: menu-design2.php |
Тэг 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"> |
| head-rel-href[] | Формирование LINK-REL-HREF head-rel-href[canonical]: адрес <link rel="canonical" href="адрес">. Варианты rel: stylesheet, canonical, prefetch, preconnect, dns-prefetch, next / prev, help, license. |
| rss | Выводить link rel на RSS-ленту записей в HEAD (включено по умолчанию) rss: - |
| rss.comments | Выводить link rel на RSS-ленту комментариев в HEAD (включено по умолчанию) rss.comments: - |
Секция 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 https://fontawesome.com |
use.fontawesome6: + | Font Awesome Free 6 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.jsonld: + | Создание разметки JSON+LD (с осторожностью, см. parts/head/jsonld.php) |
use.notranslate: + | Автоматическое добавление класса notranslate для тэгов PRE и CODE. Используется, если нужно запретить перевод этих тэгов, когда страница переводится через Google Translate. |
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: [this-dir]order.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, | Указание только страницы «ДО» |
В next-prev и next-prev-top можно указать файл, который будет хранить готовую последовательность ссылок. Например:
# order-astronomy.php
return [
'astronomy/a1',
'astronomy/a2',
'astronomy/a3',
'astronomy/a4',
'astronomy/a5',
'astronomy/a6',
];
После файл указывается в полях страницы:
next-prev: [config-dir]order-astronomy.php next-prev-top: [config-dir]order-astronomy.php
Навигация по каталогу записи
Поля nav-top-folder и nav-folder используются для навигации по каталогу записи. Например если такое расположение страниц:
astronomy/
a1.php
a2.php
a3.php
a4.php
a5.php
Если указать:
nav-top-folder: + nav-folder: +
То появится навигация по каталогу страницы. Сортировка происходит по имени файла, поэтому, если нужно сохранить хронологический или другой явный порядок, то используйте числа с точкой в начале файла, например:
blog/
20250710.news1.php
20250712.news2.php
20250715.news3.php
20250720.news4.php
Cars/
01.Nissan Qashqai.php
02.Fiat Croma.php
03.Ferrari 599 GTB Fiorano.php
Система автоматически «отсечёт» часть с цифрами, но сохранит исходный порядок.
Навигация по каталогу записи с учетом даты
Эта навигация включается так:
nav-top-folder-date: + nav-folder-date: +
Она работает аналогично nav-top-folder только сортировка происходит с учетом даты записи. Эта навигация подходит для разделов, где не нужно учитывать имя файла.
Иерархия страниц
Иерархическая структура, где путь указывается через точку — это уровень вложенности. В данном примере будут найдены все страницы, где поле 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: ru, uk, en
# языковой перевод для каждого языка
# указывается в формате 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="en">
# если нет, то устанавливается автоматически
html[lang]: en
После изменения поля, старое значение сохраняется _odd.ПОЛЕ. Получить его можно через getPageData(), например:
pr(getPageData('title')); // Terms of Use and Copyright
pr(getPageData('_old.title')); // Условия использования и копирайты
Подробнее см. Мультиязычность в Albireo CMS.