feat: Implement robust theme system and document architecture

- Implement flexible theme switching via site.conf (site_theme, site_theme_css_file).
- Ensure correct copying of theme static assets, with theme assets overriding root assets.
- Resolve CSS linking issues by checking file existence after static copy and using correct paths for Pandoc.
- Refactor path construction to prevent duplication when using absolute/relative output paths.
- Create comprehensive how-it-works.md detailing system architecture, theme creation, and overall workflow.
- Clarify design philosophy: qsgen3 remains design-agnostic, only linking main theme CSS automatically.
This commit is contained in:
2025-05-31 00:00:21 +02:00
parent c14e943f2b
commit c470ac40c0
34 changed files with 5058 additions and 82 deletions

View File

@ -1,26 +1,26 @@
; Place this file in your project directory
# Example Site Configuration for qsgen3
# Copy this file to 'site.conf' in your project root and customize it.
[site]
; This is the name of your site
name = "The Site Name"
; This is the tagline
tagline = "The Site Tagline"
; This is the URL of your site
url = "https://www.example.com"
; This is where your HTML files go
root = /path/to/www/dir
; The theme of your site
theme = theme_name
; sitemap or not: true or false
sitemap = true
; Do you want the blog to appear on the front page
; true = yes and false = no
blog = true
# --- Site Metadata ---
site_name="My Example Site"
site_tagline="An example site generated by qsgen3"
site_url="http://localhost:8000" # Or your actual production URL
site_theme="default" # Specifies the theme to use (e.g., default, dark)
[project]
; This is where you work before you generate the output
root = /path/to/working/project
; Languages: en_US, en_UK, es_ES, nb_NO, fr_FR
lang = en_US
; Use QStags (native) or Markdown (markdown)
generator = native
# --- Paths (relative to project root) ---
paths_content_dir="content"
paths_output_dir="output"
paths_layouts_dir="layouts"
paths_static_dir="static"
# --- Build Options ---
# Generate an RSS feed (true/false)
build_options_generate_rss=true
# Generate a sitemap.xml (true/false)
# Note: sitemap generation is not fully implemented in qsgen3 yet,
# but the configuration option is reserved.
build_options_generate_sitemap=true
# Process draft posts/pages (true/false)
build_options_process_drafts=false