Алгоритм поиска атрибута в контексте страницы (наследование атрибутов)¶
Для отображения динамического контента в ηCMS мы обращаемся
к атрибутам доступным в контексте страницы,
используя конструкции asm
и asmAny
в HTTL разметке ядра страницы.
При доступе к атрибуту по имени, ηCMS использует следующий алгоритм
нахождения значения атрибутов:
- Если атрибут явно принадлежит текущей странице (является частью сборки), то он будет использован. В противном случае переходим на шаг 2.
- Поднимаемся вверх по иерархии наследования текущей страницы и ищем данный атрибут в родительских сборках. Если атрибут не найден, переходим на шаг 3.
- Поднимаемся вверх по дереву навигации страницы и для каждой страницы осуществляем поиск атрибута в соответствии с шагами 1 и 2. Если атрибут с указанным именем не был найден, переходим на шаг 4.
- ηCMS вычисляет главную страницу
в зависимости от текущей локализации пользователя и настроек системы
и запрашивает требуемый атрибут у главной страницы, используя для данного HTTP запроса
алгоритм из шагов 1 и 2. Если атрибут у главной страницы не был найден, HTTL директива
asmAny
вернет null, директиваasm
также вернет null и сообщит об ошибке в консоль сервера ηCMS.
Несмотря на множество шагов в данном процессе, ηCMS достаточно быстро решает задачу нахождения атрибутов в контексте страниц, используя оптимизированный доступ к БД и алгоритмы кеширования.