1. Загрузите архив Albireo Framework и распакуйте на свой сервер.
С 1 мая 2024 года Albireo Framework недоступен для загрузки. Вместо него будет предложен Albireo CMS, которая сейчас в разработке. См. ход работ.
2. Наберите в браузере адрес сайта. Автоматически будет создан файл .htaccess
, который обеспечивает поддержку ЧПУ.
3. Вы увидите страницу приветствия Albireo.
Примечание. Если вы переносите сайт на другой поддомен, то удалите файл .htaccess
— он будет создан автоматически.
[*] Альбирео — это одна из самых красивых двойных звёзд. Расположена в созвездии Лебедя и хорошо видна даже в скромные телескопы. Главный компонент — оранжевый гигант в 100 раз больше радиуса Солнца. Второй компонент — голубая звезда размером в 3☀.
Каталог albireo
содержит ядро и не требует изменений (можно обновлять поверх старой версии).
Каталог albireo-data
содержит все пользовательские данные: страницы, файлы конфигурации, сниппеты для быстрой вставки и т.д.
Каталог albireo-templates
содержит шаблоны сайта: css-стили, js-файлы, изображения и т.п. Каждый шаблон располагается в отдельном каталоге. По умолчанию это default. В этом шаблоне используется библиотека Berry CSS (в качестве демонстрации, а также в Albireo Doc).
В каталоге albireo-admin
размещаются файлы админ-панели. Она доступна по адресу вашсайт/admin.
Каталог uploads
используется для загруженных файлов, например изображений.
Файл index.php
представляет собой точку входа фреймворка. В нём формируются пути и базовые константы, необходимые для работы Albireo.
Файл static.php
используется для запуска генератора статичного сайта. Он создаст каталог albireo-static
с готовыми html-файлами вашего сайта. Они могут быть загружены на рабочий сервер.
Все страницы сайта хранятся в каталоге albireo-data
в виде отдельных php-файлов. Имена файлов могут быть произвольными. Если имя файла начинается с символа _
, то Albireo будет его игнорировать.
Каждый файл имеет такую структуру:
<?php if (!defined('BASE_DIR')) exit('No direct script access allowed'); /** ключ1: значение ключ2: значение ключ3: значение **/ ?> текст страницы
Первая php-строчка служит для защиты от прямого вызова файла.
Служебная часть страницы размещается в блоке php-комментариев /** **/
в виде параметров ключ: значение
. Ключи могут быть произвольными и использоваться для управления выводом.
Следующие ключи используются Albireo на уровне «ядра»:
slug: адрес страницы slug-static: имя файла при генерации html-файла slug-pattern: дополнительный паттерн адреса method: http-метод страницы (для роутинга) parser: парсер текста compress: признак сжатия html-кода protect-pre: защитить содержимое PRE и CODE layout: файл вывода init-file: файл инициализации text-function: функции для постобработки html-кода parser-content-only: обработка файла страницы отдельно от layout-шаблона require[]: подключить php-файлы перед выводом страницы lang: язык страницы (см. Мультиязычность ниже)
Эти ключи используются в layout-файле main.php
:
title: титул записи description: описание body: атрибуты BODY, например class и/или style html-lang: язык страницы — по умолчанию ru meta[]: атрибуты meta (см. «Параметры страницы в виде массива») head[]: произвольные данные в HEAD link[]: атрибуты link lazy[]: произвольные данные вперед закрывающим BODY
Обратите внимание, что в ключе после символа:
следует добавить пробел. Напримерslug: about
— верно, аslug:about
— ошибка. Это позволяет использовать в ключах символ:
, например:meta[og:title]: Заголовок страницы
.
В поле slug
указывается адрес, по которому будет доступна страница. Для главной страницы следует использовать /
. Slug указывается относительно сайта. Например
slug: form
сделает доступной страницу по адресу ваш-сайт/form. Такой вариант:
slug: form/contact/about
по адресу ваш-сайт/form/contact/about
Или даже так:
slug: form.html
по адресу ваш-сайт/form.html
Таким образом вы можете формировать произвольные адреса для любой страницы сайта.
Если поле slug
не указывать, то оно будет автоматически сформировано из имени файла. Например для файла contact.php
ссылка будет ваш-сайт/contact.
Если у нескольких страниц slug
совпадает, то Albireo подключит первую по алфавиту.
См. также Мультиязычность.
Файл страницы 404.php
является предопределённым и выводится в случаях, когда не найдена страница для вывода.
В Albireo встроена защита от XSS-атак, при которой вредоносный код может передаваться через входящий URL.
Защита базируется на фильтрации символов, которые как правило используются в атакующем коде, но нетипичны для любого адреса. Поэтому в Albireo не следует использовать в адресах страниц следующие символы:
< > " ' ( { [
При желании файлы страниц можно разместить в каталоге albireo-data/pages
. Он работает точно также, как и основной каталог albireo-data
.
albireo-data/ pages/ page1.php page2.php home.php about.php
В pages
можно использовать произвольную вложенность каталогов. Адреса страниц в pages
определяются также, как и в основном каталоге — по полю slug
.
Если поле slug
у страницы не указано, то оно будет автоматически совпадать с именем файла с учётом вложенности в pages
.
Вот пример того, как Albireo автоматически присвоит slug
:
albireo-data/ pages/ install/ page1.php → install/page1 page2.php → install/page2 update/ page1.php → update/page1 page2.php → update/page2 home.php → home about.php → about
Используйте pages
, если сайту требуется группировка файлов по каталогам.
Текст страницы может быть обработан после формирования. В комплект Albireo включен парcер Simple из MaxSite CMS. Он задаётся в параметре parser
:
parser: simple
Чтобы отключить парсер (если он включен по умолчанию в конфигурации) можно указав -
(минус):
parser: -
Парсер текста — это обычная php-функция, которая принимает и возвращает текст. Имя файла (без расширения «.php» в каталоге albireo/lib
) совпадает с именем функции.
При необходимости можно использовать сразу несколько парсеров текста, которые будут вызваны один после другого. Их можно указать через пробел:
parser: simple md
Если вы используете html-тэги PRE и CODE, то можно их содержимое преобразовать в html-сущности. Для этого используется ключ protect-pre
:
protect-pre: 1
Число в protect-pre
указывает режим преобразования:
В text-function
можно обработать html-код страницы через любую php-функцию, которая принимает и возвращает строку. Можно указать несколько функций через пробел.
text-function: trim myParser
По умолчанию Albireo пропускает через парсеры полный html-код, включая layout-шаблон. При необходимости, если возникают проблемы с парсером в секции HEAD, используйте обработку текста только для файла страницы. Для этого в параметрах страницы достаточно указать:
parser-content-only: 1
Для сжатия html-кода также используется библиотека из MaxSite CMS, которая включается через параметр compress
с любым (true) значением:
compress: 1
Сжатие работает для всего итогового html-кода страницы сайта.
Вы можете использовать синтаксис Markdown для разметки страниц. Для этого в параметрах страницы нужно указать:
parser: md parser-content-only: 1
Параметр parser-content-only
желательно включить для того, чтобы происходила обработка только текста файла без учета его layout-шаблона.
В комплекте Albireo есть демо-файл, где вы можете посмотреть примеры разметки Markdown: albireo-data/pages/sample/md.php. В качестве php-библиотеки парсера используется Parsedown.
Все шаблоны размещаются в каталоге albireo-templates
. По умолчанию используется шаблон default
. В нём два каталога:
assets
— он хранит файлы CSS, JS, изображения и т.п.layout
— файлы в которых происходит вывод страниц. Они представляют собой обычные php-файлы с html-разметкой и php-кодом.Поскольку layout-файл всегда необходим для работы Albireo, то он является обязательным. Шаблон задаётся в конфигурационном файле.
По умолчанию для вывода используется layout-файл main.php
.
Этот файл указывается в одноименном параметре страницы:
layout: main.php
Обратите внимание, что файл указывается без указания пути — Albireo самостоятельно найдёт его в каталоге текущего шаблона.
Если вам нужно поменять внешний вид сайта или формат вывода, то можно сделать копию шаблона default и поменять/добавить файлы уже в своём каталоге.
Layout-файл представляет собой обычный php-файл и содержит HTML-разметку. Готовый контент страницы выводится с помощью функции getVal()
в зависимости от режима генерации (см. main.php
).
В файле можно использовать функции getPageData('ключ')
и getPageDataHtml('ключ')
. Первая возвращает значение ключа как есть, а вторая обрабатывает его для корректного вывода в HTML. Это необходимо например для вывода title и description.
Таке может использоваться функция getConfig('ключ')
, которая возвращает значение из текущей конфигурации сайта.
Файл empty.php
не содержит html-разметки и возвращает «чистый» код страницы. Этот шаблон используется для формирования Ajax-запросов или когда нужно сформировать страницу полностью в своём файле.
Layout-файлов может быть множество и если страница использует вариант, отличный от дефолтного, то он указывается в виде ключа layout
:
layout: main-about.php
Конфигурация хранится в каталоге albireo-data/config
. Есть два файла.
Первый config.php
содержит данные для обычного вывода:
return [ // шаблон сайта 'template' => 'default', // имя (каталог) шаблона внутри albireo-templates // настройки шаблона 'layoutDir' => 'layout', // каталог layout относительно текущего шаблона 'assets' => 'assets', // url-путь к assets относительно текущего шаблона // файл вывода по умолчанию в layout 'layout' => 'main.php', ];
Второй файл config-static.php
используется в режиме генератора статичного сайта (см. ниже).
Albireo автоматически создаст ещё несколько конфигурационных ключей, которые вы можете использовать в своих проектах.
templateDir
— полный путь к каталогу текущего шаблону сайтаtemplateURL
— полный реальный URL к текущему шаблону сайта templateLayoutDir
— полный путь к layout-каталогу текущего шаблона сайтаassetsUrl
— полный реальный URL к assets-каталогу текущего шаблона сайта Получить значение из конфигурации можно с помощью функции getConfig('ключ', 'значение по умолчанию')
.
$assetsUrl = getConfig('assetsUrl');
Примечание. В прошлой версии Albireo параметр assetsUrl
нужно было указывать вручную. В новой версии он формируется автоматически на основе assets
.
В конфигурации можно задать дефолтные значения для всех страниц сайта. Для этого используется ключ defaultPageData
, которая представляет собой массив.
... // дефолтные данные страниц 'defaultPageData' => [ 'parser' => 'simple', // парсер simple 'compress' => 1, // сжатие html-кода 'protect-pre' => 1, // защитить содержимое PRE и CODE ], ...
В сниппетах удобно хранить небольшие фрагменты html/php-кода, например счётчики, код рекламы и т.д. Сниппеты располагаются в каталоге albireo-data/snippets
каждый в своём файле.
Вывод сниппета в тексте страницы выполняется с помощью функции snippet('сниппет')
.
<?php snippet('twitter') ?>
В сниппет можно передать данные — они указываются во втором параметре функции.
<?php snippet('content', 'text text text') ?>
В файле сниппета будет автоматически доступна переменная $data
с переданными данными.
Альбирео позволяет создавать страницы под любые языки. Адреса страниц при этом имеют вид: код языка/ссылка
. Например есть страница сайт/about и её языковые версии: сайт/en/about, сайт/fr/about, сайт/pl/about и т.д.
Для указания языка страницы используется параметр lang
, который работает в паре со slug
.
Страница, которая будет являться дефолтной, то есть выводиться по адресу сайт/about, должна иметь lang
, но со звёздочкой:
# для сайт/en/about: slug: about lang: en # для сайт/fr/about: slug: about lang: fr # для сайт/pl/about: slug: about lang: pl # для сайт/about (дефолтная): slug: about lang: *uk
Обратите внимание, что slug
у всех страниц одинаковый, меняется только lang
.
При формировании html-кода Альбирео будет использовать lang
для указания его в HTML атрибуте lang, а также создаст ссылки для секции HEAD всех связанных языковых страниц (hreflang), как этого требует Google.
При необходимости можно для страницы указать параметр html-lang
, который используется только в HTML атрибуте lang.
В комплекте Albireo включены примеры lang-файлов, где вы можете посмотреть как они работают.
Если на сайте не используется динамический контент (или не работает PHP на сервере), то Albireo поможет создать страницы в виде статичных html-файлов. Их можно будет загрузить на сервер, например на github.io.
Вначале следует задать конфигурацию в файле config-static.php
.
return [ // каталог хранения готовых статичных страниц 'staticDir' => BASE_DIR . 'albireo-static' . DIRECTORY_SEPARATOR, // шаблон сайта 'template' => 'default', // имя (каталог) шаблона внутри albireo-templates // настройки шаблона 'layoutDir' => 'layout', // каталог layout внутри текущего шаблона 'assets' => 'assets', // url-путь к assets относительно текущего шаблона // файл вывода по умолчанию в layout 'layout' => 'main.php', // после генерации скопировать каталоги (исходный относительно корня => куда относительно конечного) 'afterCopy' => [ 'albireo-templates/default/assets' => 'assets', ], ];
Следует учитывать, что при этом не используется конфигурация из config.php
. Это позволяет задавать разные варианты вывода для статичного и динамичного сайтов (например использовать разные шаблоны вывода layout).
В данном случае файлы будут сохранены в каталоге albireo-static
. Если его нет, то он будет автоматически создан.
Перед началом генерации этот каталог будет полностью очищен.
Параметр afterCopy
позволяет указать каталоги, которые будут скопированы в результирующий каталог после генерации файлов. По умолчанию указан каталог assets
из текущего шаблона сайта. Таким образом в итоговом каталоге albireo-static
окажутся все файлы для загрузки на удалённый сервер.
При необходимости в файле static.php
можно указать и другие параметры сайта в режиме генерации.
Запуск генератора осуществляется через командную строку (используйте терминал операционной системы):
php static.php
Итоговый файл страницы указывается в параметре slug-static
. Если его нет, то используется обычный slug
с добавлением расширения .html
.
Если нужно исключить страницу из генерации (например в нём используются формы), то в slug-static
указывается -
(минус):
slug-static: -
Если в slug
или slug-static
указывается вложенность каталогов (с помощью /
), то Albireo повторит эту структуру в виде подкаталогов.
slug-static: doc/install/step1.html
В этом примере будет создан файл albireo-static/doc/install/step1.html
В Albireo используется константа STATIC_EXT
, которая специально предназначена для указания расширения файла в режиме генерации. В обычном режиме она равна пустой строке, а в режиме генерации .html
. Например в тексте страницы используется ссылка:
text text <a href="<?= SITE_URL ?>about">link</a>
В обычном режиме ссылка будет равна about
. В режиме генерации страница about
будет уже файлом about.html
, что сделает такую ссылку нерабочей. В таких случаях, следует указывать STATIC_EXT
:
text text <a href="<?= SITE_URL ?>about<?= STATIC_EXT ?>">link</a>
В режиме статичной генерации ссылка получится about.html
.
Админ-панель доступна по адресу http://ваш-сайт/admin.
C помощью админ-панели можно:
Для работы с админ-панелью следует создать список пользователей. Он располагается в файле albireo-admin/config/_users.php
.
Сейчас в нём закомментированные примеры, которые можно использовать для тестирования на localhost. На рабочем сайте следует изменить пароли на другие.
Вместо albireo-admin/config/_users.php
вы можете создать его копию как albireo-data/config/users.php
— он будет иметь приоритет перед первым. Это позволит обновлять Albireo не боясь затереть собственную конфигурацию админ-панели.
Добавьте пользователей и укажите их уровень доступа:
'1' => [ // уникальный ID 'nik' => 'Admin', // ник для отображения 'username' => 'admin', // логин 'password' => '123456', // пароль 'expiration' => mktime(0, 0, 0, 1, 1, 2030), // дата окончания // уровень доступа // admin — разрешение на доступ в админ-панель // admin-change-files - разрешение на изменение файлов 'level' => ['admin', 'admin-change-files'], ],
После этого достаточно набрать http://ваш-сайт/admin в браузере. Будет предложена форма, где следует ввести указанные логин и пароль. Если они корректные, то вы получите доступ к админ-панели.
Если для вашего сайта не нужна админ-панель, то можно просто удалить каталог albireo-admin
.
Вы можете посмотреть как выглядит админ-панель в демо-режиме. Для входа используйте данные:
demo
demodemo
В демо-режиме нельзя изменять файлы.
Albireo поддерживает разделение прав доступа пользователей. Например когда необходимо скрыть контент для незарегистрированных посетителей.
Для этого создаются пользователи в конфигурации админ-панели, где указываются их уровень доступа. Например доступ pages
разрешает просмотр всей страницы — если его нет, то будет выведена страница «Доступ запрещён». Чтобы получить доступ к записи нужно будет пройти авторизацию.
Либо можно ограничить только часть контента страницы. Например первая часть будет доступна всем посетителям сайта, а остальная — только после оплаты (регистрации и авторизации с доступом secret content
).
Чтобы использовать данные возможности, в Albireo включены файлы pages/demo-access1.php
и pages/demo-access2.php
, где вы сможете посмотреть несложный PHP-код и взять эти файлы за основу.
Albireo Doc — специально предназначена для тех разработчиков, которые хотят создать документацию для своего проекта. В комплект Albireo входит layout-файл doc.php
, который организует вывод боковой колонки и готовый дизайн для типового сайта документации.
Управлять Albireo Doc можно также, как и другими страницами, включая доступ через админ-панель. Точно также вы можете создавать статичные html-файлы для загрузки на сторонний сервер, например на GitHub.com.
Все файлы для документации включены в дистрибутив Albireo. Вы можете посмотреть в живую как это выглядит (там же приведено описание).
Albireo поддерживает отправку произвольного POST-запроса.
Например на странице ваш-сайт/form размещается типовая html-форма отправки:
slug: form ... <form method="post> ... форма ...
Отправка будет происходить на этот же самый url-адрес. Чтобы его перехватить, делается ещё одна страница (например form-post.php
), с тем же slug, но ещё указывается http-метод отправки:
slug: form method: POST ... Страница для приёма post-запроса
Таким образом Albireo отследит slug и method и подключит необходимый файл.
Поле страницы method может быть произвольным. Но поскольку стандартно браузеры поддерживают только POST и GET-методы, то для отправки любого другого в форме указывается скрытое поле _method
.
<form onsubmit="sendAjax(this); return false;"> <input type="hidden" name="_method" value="AJAX"> ...
В данном примере произойдет отправка данных по POST, но поскольку в форме есть поле _method
, то Albireo будет использовать уже его.
Соответственно в файле обработчике (например form-ajax.php
) указывается:
slug: form method: AJAX ... Обработка запроса
Если это будет реальный Ajax-запрос, то у такой страницы нужно указать layout: empty.php
, чтобы исключить вывод ненужного html-кода.
Полный код этих примеров вы найдёте в файлах страниц: form.php
, form-post.php
и form-ajax.php
. Они будут доступны по адресу ваш-сайт/form как демо-пример.
Параметр slug
«жестко» определяет адрес страницы. Например:
slug: page
будет работать только с адресом ваш-сайт/page.
Когда стоит задача сделать доступной страницу по разным адресам, то используется дополнительный параметр slug-pattern
. Он проверяется сразу после slug
(при несовпадении текущему URL).
slug: page slug-pattern: hello
Данный пример сделает доступным страницу по адресам ваш-сайт/page и ваш-сайт/hello.
В slug-pattern
можно использовать регулярное выражение, в котором указать паттерн соответствия URL. Например:
slug: page slug-pattern: (hello|welcome)
сделает страницу доступной по адресам ваш-сайт/page, ваш-сайт/hello и ваш-сайт/welcome. Другие примеры:
любой символ slug-pattern: page/(.*?) ваш-сайт/page/123 | ваш-сайт/page/abc | ваш-сайт/page/a_b-c2 только числа slug-pattern: page/([0-9]+) ваш-сайт/page/123 только буквы slug-pattern: page/([a-zA-Z]+) ваш-сайт/page/abc буквы и/или цифры slug-pattern: page/([a-zA-Z0-9]+) ваш-сайт/page/abc | ваш-сайт/page/123 | ваш-сайт/page/123abc включить все «page/*», за исключением «page/about» и «page/contact» slug-pattern: page/(?!about)(?!contact)(.*)
Поскольку такой роутинг не имеет смысла для статики, то slug-pattern
не учитывается при генерации статичного сайта.
В некоторых случаях для страницы нужно указать параметры вида:
key[index1]: value key[index2]: value key[index3]: value
Например для разметки OpenGraph:
meta[og:type]: website meta[og:title]: Заголовок meta[og:description]: Описание meta[og:url]: Адрес meta[og:site_name]: Название сайта
Для вывода таких данных в шаблоне используйте код в секции HEAD:
<?= implode(getKeysPageData()) ?>
По умолчанию используются ключ и html-тэг meta
. На выходе получится:
<meta property="og:type" content="website"> <meta property="og:title" content="Заголовок"> <meta property="og:description" content="Описание"> <meta property="og:url" content="Адрес"> <meta property="og:site_name" content="Название сайта">
Вы можете использовать любые ключи и любой формат вывода.
link[canonical]: Адрес
В шаблоне:
<?= implode(getKeysPageData('link', '<link rel="[key]" href="[val]">')) ?>
В итоге получится:
<link rel="canonical" href="Адрес">
Можно использовать спецзамены:
[page-title]
заменяется на титул записи[page-description]
заменяется на описание записи[page-slug]
заменяется на slug страницы[site-url]
заменяется на адрес сайта[assets-url]
заменяется на адрес к assets[EOL]
заменяется на перенос строки (см. PHP_EOL)Например:
meta[og:title]: [page-title] meta[og:description]: [page-description] meta[og:url]: [site-url][page-slug]
Если стоит задача добавить небольшие произвольные данные в секцию HEAD (например url-адрес, meta-данные и т.д.), то можно предусмотреть поле head[уникальный индекс]
:
head[1]: <meta name="robots" content="noindex, nofollow"> head[2]: <script src="..."></script> head[3]: <link rel="stylesheet" href="...">
В шаблоне вывода в секции HEAD используется такой php-код:
<?= implode(getKeysPageData('head', '[val]')) ?>
Обратите внимание, что у каждого поля head[]
нужно указывать произвольный уникальный индекс. При их совпадении Albireo будет использовать последний. В тех случаях, когда индекс не используется, можно его не указывать (Albireo автоматически создаст уникальный числовой индекс):
head[]: <meta ... head[]: <script ... head[]: <link ...
Аналогичным образом можно организовать вывод данных в конце BODY или другом месте шаблона. По умолчанию в шаблоне main.php
можно использовать поле lazy[]
, которое выводит данные перед закрывающим BODY.
Основной файл index.php
автоматически создаёт php-константы, которые можно использовать в своём коде:
При необходимости их можно переопределить. Для этого в главном каталоге нужно создать файл config.php
, где и указать свои данные.
define('SITE_HOST', 'mysite'); // хост сайта define('SITE_PROTOCOL', 'https'); // его протокол define('SITE_URL', 'https://mysite/'); // полный адрес
Таким образом можно поменять расположение каталогов по умолчанию без правки файлов Albireo.
Если стоит задача подключить php-файл перед подключением шаблона страницы, то используется ключ init-file
. Например:
init-file: _functions.php
Файл указывается относительно каталога данных (albireo-data
). Если такой файл размещается среди файлов страниц, то его имя должно начинаться с символа подчеркивания _
. В этом случае Albireo не будет его обрабатывать как страницу.
Если нужно подключить несколько php-файлов из произвольных каталогов, то можно использовать ключ require
:
require[]: <?= SYS_DIR ?>lib/logging.php
Обратите внимание, что здесь путь к файлам указывается в полном виде.
Если нужно подключить файл для всех страниц сайта (до вывода любых данных), то он указывается в конфигурации в ключе functions
.
... 'functions' => DATA_DIR . 'mylib/functions.php', ...
Это файл будет подключён перед обработкой шаблона для всех страниц сайта.
Для оптимизации своей работы Albireo использует кэш в виде файлов pagesinfo.txt
, snapshotXXX.txt
и lastXXX.txt
в каталоге albireo/cache
. Кэш обновляется автоматически, как только будут изменения в каталоге данных.
Если файлы кэша не создаются, то проверьте, чтобы у каталога albireo/cache
были права на запись (обычно это 777).
Для разработчиков есть возможность отключить использование кэша в файле конфигурации:
... 'noCache' => true, ...
Обычно это используется в режиме отладки кода.
Дополнительный параметр конфигурации cacheTimeL1
, позволяет задать минимальное время между проверками кэша и используется в режиме очень большой посещаемости (от 10...1000 и больше запросов в секунду). По умолчанию значение равно 10 секундам. Если такая задержка не нужна, то её можно отключить установив нулевое значение:
... 'cacheTimeL1' => 0, ...
Использование cacheTimeL1
позволяет Albireo работать в режиме очень большого количества запросов к сайту.
Файл sitemap-xml.php
автоматически формирует xml-карту сайта по адресу http://ваш-сайт/sitemap.xml (см. пример).
Для исключения страницы из sitemap.xml нужно указать:
sitemap: -
Указать приоритет и частоту обновления страницы можно так:
sitemap-changefreq: weekly sitemap-priority: 0.9
С помощью шаблонизатора можно вынести произвольные части страниц в отдельные файлы и работать с ними независимо. Особенно эффективен шаблонизатор для повторяющихся блоков, которые имеют небольшие различия.
Например есть блок, который используется несколько раз на странице, но меняется только текст. Создадим файл этого блока, например _tpl-block.php
.
<div class="t-center pad30 bg-gray100"> <h1>{{ $header }}</h1> <p>{{ $desc }}</p> </div>
В тексте страницы используется функция tpl(файл шаблона, данные)
:
<?php $data['header'] = 'Заголовок'; $data['desc'] = 'Описание'; ?> <?= tpl(DATA_DIR . '_tpl-block.php', $data) ?>
Либо так:
<?= tpl(DATA_DIR . '_tpl-block.php', ['header' => 'Заголовок', 'desc' => 'Описание']) ?>
Файл нужно указывать с полным именем.
В файле шаблона можно использовать обычный php-код, а также специальные замены.
{{ $header }}
— эквивалентно <?= $header ?>
{* $header *}
— эквивалентно <?= htmlspecialchars($header, ENT_QUOTES) ?>
{% код %}
— эквивалентно <?php код ?>
В дистрибутиве Albireo Framework в каталоге pages/sample
размещены файлы tpl.php
и _tpl-block.php
, демонстрирующие работу шаблонизатора.
При необходимости можно разместить файлы страницы в отдельном произвольном каталоге, например my-pages
. Для этого в файле конфигурации следует использовать ключ dirsForPages
:
'dirsForPages' => [BASE_DIR . 'my-pages'],
Можно указать несколько каталогов:
'dirsForPages' => [BASE_DIR . 'my-pages', BASE_DIR . 'user-pages'],
Обратите внимание, что каталоги указываются в полном виде. В данном случае BASE_DIR
указывает на корень сайта.
Не нужно указывать каталог albireo-data
, а также вложенные каталоги. В следующем примере второй каталог лишний).
'dirsForPages' => [BASE_DIR . 'my-pages', BASE_DIR . 'my-pages/docs'],
Такие каталоги следует рассматривать как аналоги albireo-data/pages
, где можно размещать только файлы записей, но не конфигурацию и прочие служебные файлы.
Код фреймворка достаточно простой и мне хотелось показать его особенности для начинающих php-программистов. Именно поэтому исходные файлы Albireo сопровождаются большим количеством комментариев, объясняющих каждую строчку или блок кода.
Вы можете использовать Albireo Framework в учебных целях или взять его за основу своего будущего проекта.
Подробное описание программной части Albireo было приведено в моём telegram-канале. Также есть материалы на моём сайте.
Хотя Albireo считается микрофреймворком, но уже имеет хорошие возможности для php-разработчиков:
Если вы php-разработчик, то присоединяйтесь к Albireo Framework!