Как происходит сборка документа в Nano-CMS.

Очерёдность сборки документа.

При сборке страницы могут быть задействованы разные модули, оговоренные в файле настроек ./data/settings.php соответствующим массивом:

   $_s['modules']=array(
      
'stat'   => '_stats.php',           # Если присутствует статмодуль
      
'err'    => '_error_404.php',
      
'nav'    => '_menu.php',
      
'des'    => '_design.php',
   );

Сборка документа происходит в строгом порядке следования модулей в этой записи:

  1. Если статмодуль подключен, и самый первый элемент массива stats действительно прописан в коде файла настроек (он там не обязателен, и в дистрибутив не входит), все данные о входящем трафике протоколируются для дальнейшего анализа.

  2. Берётся собственно документ, либо страница ошибки, если документа не существует.

    Файл страницы ошибки _error_404.php заимствуется из корневой папки документов ./data/content/, либо из текущей папки документов, если в ней такой файл предусмотрительно имеется (это не обязательно).

    Внутренняя структура файла ошибки полностью совпадает со структурой документа, так что для движка нет никакой разницы, с чем именно работать. Единственное различие - это выставление или не выставление хедера ошибки.

    На этом этапе оказываются заданы переменные:
    $_s['title'] - тайтл документа.
    $_s['content'] - текст документа.

  3. Подгружается модуль меню из фолдера документа. Его имя _menu.php
    Вариантов внутреннего устройства модуля несколько - все инструкции есть.

    Если модуль меню отсутствует, он берётся из корневой папки документов ./data/content/ Там он должен быть обязательно.

    Код модуля меню уходит в переменную $_s['menu']

  4. В заключение подгружается модуль шаблона дизайна из фолдера документа. Его имя _design.php, а содержимое можно задать разными способами.

    Если такого модуля в фолдере нет, он берётся из корневой папки документов, где такой модуль обязан присутствовать по-любому.

    Шаблон дизайна использует все упомянутые выше переменные. Код модуля шаблона дизайна уходит в переменную $_s['design'], и далее в поток вывода.

При отсутствии любого из модулей, упомянутого в массиве в начале этой страницы, движок выдаст ошибку, и на этом остановится. Дальнейшую сборку документа он проводить не станет.