Алгоритм поиска атрибута в контексте страницы (наследование атрибутов)

Для отображения динамического контента в ηCMS мы обращаемся к атрибутам доступным в контексте страницы, используя конструкции asm и asmAny в HTTL разметке ядра страницы. При доступе к атрибуту по имени, ηCMS использует следующий алгоритм нахождения значения атрибутов:


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

Несмотря на множество шагов в данном процессе, ηCMS достаточно быстро решает задачу нахождения атрибутов в контексте страниц, используя оптимизированный доступ к БД и алгоритмы кеширования.