PGHtml
HTML-шаблонизатор с использованием PostgreSQL
PGHtml - утилита командной строки, создает HTML, JS, JSON и другие типы файлы с использованием данных, получаемых из базы данных PostgreSQL
Более подробно инcтрумент описан на отдельном сайте pghtml.org
Инструмент предназначен для создания файлов со статической информацией из базы данных, которая:
- редко меняется (например, справочники)
- подготовка требует длительного времени
- не требует актуальности в режиме реального времени (например, ТОП товаров)
PGHtml реализован как служба, которая создает HTML,JS,JSON и другие типы файлы с использованием данных, получаемых из базы данных PostgreSQL.
Файл создается из файла шаблона, в котором проводится подстановка(замена) SQL-запросов, тегов и переменных.
Шаблон имееет префикс расширения pg, т.е. на основе файла index.pghtml будет создан index.html
Подстановки
| $$ [SQL query] $$ | — | результат выполнения SQL запроса |
| <pghtml-include> [file] <> | — | содержимое файла |
| ${[variable]} | — | значение переменной |
<!-- единичное значение из базы данных --> $$ select user $$ <!-- множественые значения --> $$ select tablename from pg_tables where schemaname='pg_catalog' limit 5 $$ <!-- включение файла example_include_ru.html --> <pghtml-include>include-simple-ru.html</pghtml-include>
→
→
<!-- единичное значение из базы данных --> postgres <!-- множественые значения --> pg_statistic pg_type pg_foreign_server pg_authid pg_statistic_ext_data <!-- включение файла example_include_ru.html --> [ файл example-header-ru.html ]
Шаблон
<!DOCTYPE html> <head> <title>${title}</title> </head> <body> <h2>${caption}</h2> ${text} </body> </html>
Исходная и результирующая страницы
<pghtml-var name="title">Example</pghtml-var> <pghtml-var name="caption">Multiline text</pghtml-var> <pghtml-var name="text"> Text line 1 <br> <i>Text line 2</i> </pghtml-var> <pghtml-include>/template/template-common.html</pghtml-include>
→
→
→
<!DOCTYPE html> <head> <title>Example</title> </head> <body> <h2>Multiline text</h2> Text line 1 <br> <i>Text line 2</i> </body> </html>
Проверка на изменение
- если содержимое результирующего файл не изменилось, то файл не перезаписывается и, соответственно, web-сервер не выполняет публикацию (deploy)Импорт
- реализована поддержка импорта других файлов (например, фрагмента HTML или данных в формате JSON)Список изменений
- возможно сформировать файл-список с измененными файламиОбработка ошибок
- при возникновении ошибки (например, при выполнении SQL запроса) обработка продолжается, в лог (stderr) выводится расширенная информация и по окончании выполнения утилита возвращает в ОС признак неуспешного выполнения (1). Это позволяет настроить мониторинг обновления данных на сайтеУказание обрабатываемых файлов
- возможна обработка конкретных файлов, директорий с рекурсией и указанием расширений файлов. При этом определяются встроенные переменные, которые можно использовать при формировании ссылок и в SQL запросах. Рекомендуется указывать корневую директорию сайтаПеременные
- поддерживаются переменные из командной строки, встроенные (директории, пути до файлов и т.д) и атрибуты тега при импорте файлаНеограниченная вложенность
- поддерживается включение файлов внутри включаемого файла, многократное переопределение переменных и их использование внутри другой переменнойУсловия и циклы
- программирование внутри файлов не поддерживается, для реализации логики необходимо использовать хранимые процедуры PostgreSQL