PGHtml — HTML template engine using PostgreSQL
Tool is described in more detail on a separate website pghtml.org
Tool is designed to display on the site static information from database, which:
- rarely updates (e.g. dictionaries)
- preparation takes a long time
- does not require real-time relevance (e.g. TOP products)
PGHtml is a service that creates HTML, JS, JSON and other file types using data obtained from a PostgreSQL database.
The file is created from a template file in which SQL queries, tags and variables are replaced.
Template extension started with pg, i.e. index.html will be created based on the index.pghtml file
Replacements
$$ [SQL query] $$ | - | SQL query result |
<pghtml-include> | - | file contents |
${[variable]} | - | variable value |
<!-- single value from database --> $$ select user $$ <!-- multiple values --> $$ select tablename from pg_tables where schemaname='pg_catalog' limit 5 $$ <!-- inclusion file example_include.html --> <pghtml-include>include-simple.html</pghtml-include>
→
→
<!-- single value from database --> postgres <!-- multiple values --> pg_statistic pg_type pg_foreign_table pg_proc pg_attribute <!-- inclusion file example_include.html --> [ file example-header.html ]
Template
<!DOCTYPE html> <head> <title>${title}</title> </head> <body> <h2>${caption}</h2> ${text} </body> </html>
Source and result pages
<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>
<!-- single value from database --> $$ select user $$ <!-- multiple values --> $$ select tablename from pg_tables where schemaname='pg_catalog' limit 5 $$ <!-- inclusion file example_include.html --> <pghtml-include>include-simple.html</pghtml-include>
→
→
<!-- single value from database --> postgres <!-- multiple values --> pg_statistic pg_type pg_foreign_table pg_proc pg_attribute <!-- inclusion file example_include.html --> [ file example-header.html ]