Только что на коммерческом хостинге встала задача пару страниц положить в файловую систему.
Было сделано такое решение (время работы - минут 10 с обдумыванием, написанием и отладкой

).
Общий принцип - CMS в самом конце всех проверок и обработок, если ни один модуль не взялся за отображение страницы, выводит страницу стандартным методом с помощью модуля
handlers/post/80-pages.php. Он извлекает стандартный набор данных через
DataBaseHTS->get(uri, key_name) и скармливает его Smarty-шаблону.
- Есть возможность вставить свои перехватчики, подменяющие стандартные функции извлечения данных. Собственно, это на сегодня самый популярный способ написания модулей и плагинов. Вешаем на заданные URI или их группы наши функции, которые возвращают требуемые значения. Чаще всего для регистрации своих методов используется функция
hts_data_prehandler_add(uri_regexp, key_name, function) или
hts_data_prehandler_add(uri_regexp, array(key1_name => func1, key2_name => func2, ...)), где в качестве function могут быть как имена функций, так и конкретные значения (функция регистрации "интеллектуальная").
- Перед вызовом
handlers/post/80-pages.php пропишем наш файл, скажем, 70-й по порядку загрузки, который для нужной URI проверит наличие нужных данных и, если они есть в файловой системе, повесит обработчик чтения данных, который вернёт содержимое файлов в качестве значений.
- На уровне файловой системы реализация будет совсем примитивной, в нужном каталоге положим файлы
key_name.txt, содержимого которых и будет считываться. Если key_name - массив (как parent или child), то одна строка - одна запись массива.
Вот, что получается.
handlers/post/70-pages_on_fs.php:
…
Дальше »»»