From e30bc6cd0651c563652f43f269656cc453b0b51e Mon Sep 17 00:00:00 2001 From: eclipse Date: Wed, 11 Jun 2025 16:33:49 +0200 Subject: [PATCH] moved dependencies to and expanded Readme --- DEPENDENCIES.md | 66 ------------------------------------------------- README.md | 66 ++++++++++++++++++++++++++++++++++++------------- 2 files changed, 49 insertions(+), 83 deletions(-) delete mode 100644 DEPENDENCIES.md diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md deleted file mode 100644 index fe86098..0000000 --- a/DEPENDENCIES.md +++ /dev/null @@ -1,66 +0,0 @@ -# t-r.de Dependencies - -## Site generation - -### Static Site Generator - -* pelican with Markdown support (`pip install pelican[markdown]`) -* python3 - -#### Pelican Plugins - -Pip packages - -* pelican-yaml-metadata -* pelican-image-process - -### Site Display - -#### CSS - -* Pico CSS ([fork](https://github.com/Yohn/PicoCSS)) - -#### Fonts - -* [Libertinus Sans](https://github.com/alerque/libertinus) - * dev: local files - * prod: [CDN](https://www.cdnfonts.com/libertinus-sans.font) - -### Content generation - -#### List of books and texts - -* ? - -#### Event list - -* utils/refresh-events.py - depends on: - * caldav - * vobject - -#### image processing - -* utils/crop_image_to_bbox.py - depends on: - * PIL - -#### Favicon - -* utils/favicon-from-svg.sh - depends on: - * inkscape - * pngquant - * image-magick - -## Deployment - -### On production server - -* php (aktuell 8.1) -* database driver, e.g. pdo_sqlite -* PHPMailer (included in source) - -### FTP tool - -* lftp diff --git a/README.md b/README.md index b4fdd83..c259e59 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,9 @@ Eine moderne statische Autorenwebseite mit Werksseiten, Neuigkeiten, Terminkalen ### Pelican -In einer eigenen `venv`-Umgebung verwende ich Pelican (v4.11.0) mit Markdown-Support, installiert mittels `pip install pelican[markdown]`. Pelican setzt `python3` voraus. +Ich verwende Pelican v4.11.0 mit Markdown-Support (`pip install pelican[markdown]`) in einer eigenen `venv`-Umgebung. Pelican setzt `python3` voraus. -Plugins für Pelican: +Außerdem nutze ich folgende Pelican-Plugins: * `pelican-yaml-metadata` – ermöglicht das Einlesen von Metadaten im YAML-Format * `pelican-image-process` – erlaubt das Bearbeiten von Bildern beim Erzeugen der Seite @@ -16,11 +16,11 @@ Plugins für Pelican: ### CSS und Schriften * [Pico CSS](https://picocss.com/) – tatsächlich verwende ich einen [Fork](https://github.com/Yohn/PicoCSS), der zusätzlich Hamburger-Menüs unterstützt -* [Libertinus Sans](https://github.com/alerque/libertinus) – im Development Mode greife ich auf lokale Dateien zurück, im Production Mode stammen sie von einem [CDN](https://www.cdnfonts.com/libertinus-sans.font) +* [Libertinus Sans](https://github.com/alerque/libertinus) – im Development Mode greife ich auf lokale Dateien zurück, im Production Mode lade ich sie von einem [CDN](https://www.cdnfonts.com/libertinus-sans.font) herunter ### Werke und Texte -* TODO: die Sourcefiles für meine Werke und Texte sollen direkt aus der `the_works`-Datenbank erzeugt werden +* TODO: alle Sourcefiles für meine Werke und Texte direkt aus der `the_works`-Datenbank erzeugen ### Termine @@ -33,11 +33,13 @@ Das Script `utils/refresh-events.py` benötigt folgende Python-Packages (beide v @TODO: benutze ich das Script überhaupt noch? -Das Script `utils/crop_image_to_bbox.py` setzt die Python-Bibliothek `PIL` voraus. +Das Script `utils/crop_image_to_bbox.py` benötigt folgende Python-Packages: + +* `PIL` ### Favicon -Um aus einer einzelnen SVG-Datei Favicons in allen nötigen Größen zu erzeugen, nutze ich das Script `utils/favicon-from-svg.sh`. Es setzt voraus: +Um aus einer einzelnen SVG-Datei Favicons in allen nötigen Größen zu erzeugen, nutze ich das Shellscript `utils/favicon-from-svg.sh`. Es benötigt die folgenden Linux-Packages: * `inkscape` * `pngquant` @@ -45,24 +47,21 @@ Um aus einer einzelnen SVG-Datei Favicons in allen nötigen Größen zu erzeugen ### Deployment Tool -* `lftp` +* `lftp` – FTP-Client ### Auf dem Produktionsserver -* `php` (aktuell 8.1) -* Datenbanktreiber, aktuell `pdo_sqlite` -* `PHPMailer` (im Repository enthalten) +* `php` (aktuell v8.1) +* PHP-Datenbanktreiber (aktuell `pdo_sqlite`) +* PHP-Package `PHPMailer` (im Repository enthalten) ## Konfiguration Das Projekt wird in diesen Dateien konfiguriert: * `pelicanconf.py` und `publishconf.py` – enthalten die Pelican-Konfiguration für Development bzw. Production Mode -* `config.ini` – enthält die Zugangsdaten für Datenbank und SMTP-Server); üblicherweise ist diese Datei ein Symlink zu einer der folgenden Dateien - * `config.dev.ini` – Werte für den Development Mode - * `config.prod.ini` – Werte für den Production Mode - * und `config.example.ini` ist ein Beispieldatei mit Dummy-Werten -* `deploy.ini` – FTP-Zugangsdaten für den Produktionsserver +* `config.ini` – enthält die Zugangsdaten für Datenbank und SMTP-Server sowie einige Einträge für die Newsletteran-/-abmeldung und das Kontaktformular; üblicherweise ist diese Datei ein Symlink zu einer Development- bzw. Production-spezifischen Datei +* `deploy.ini` – Zugangsdaten für den Upload auf den Produktionsserver * `events.ini` – Zugangsdaten für den CalDAV-Server ## Ausführen @@ -90,13 +89,46 @@ Das Projekt wird in diesen Dateien konfiguriert: Pelican kennt Artikel und Seiten. Ich verwende diese wie folgt: -* meine einzelnen Werke sowie News-Posts sind Artikel; die Sourcefiles liegen in `content/posts/` +* meine einzelnen Werke und News-Posts sind Artikel; alle Sourcefiles liegen in Unterverzeichnissen von `content/posts/` * die Kategorie entspricht der Werksart (Romane, Kurzprosa, Lyrik, Weitere, News); alle Sourcefiles einer Kategorie liegen im gleichnamigen Unterverzeichnis (zB `content/posts/romane/`) - * Schlagworte entsprechen – weitgehend – den Genres, geben aber auch zB englischsprachige Texte an + * Schlagworte entsprechen (größtenteils) Genres; ich habe aber zB auch englischsprachige Texte per Schlagwort markiert * alles andere sind Seiten; die Sourcefiles liegen in `content/pages/` + * Seiten haben keine Schlagworte auf und üblicherweise auch keine Kategorie + * nur die Übersichtsseiten der jeweiligen Kategorie gehört ebendieser Kategorie an (so enthält zB `content/pages/romane.md` die Metadatenzeile `category: Romane`) ### Templates +Alle Templates liegen im Verzeichnis `theme/templates/`. + +#### Basis + +Das Basis-Template ist `base.html`, so wie es für Pelican üblich ist. Darin werden der grundsätzliche Seitenaufbau festgelegt, HTML-Metadaten gesetzt und Teil-Templates aus dem Unterverzeichnis `includes/` eingebunden, in denen wiederkehrenden Seitenelemente definiert sind: + +* `favicon.html` – inklusive HTML-Metadaten +* `jumbotron.html` – Seitenheader +* `navbar.html` – NavigationsmMenü +* `footer.html` – Seitenfooter + +Sämtliche First-Level-Templates binden das Basis-Template ein. + +#### Seiten und Artikel + +Das Template `page.html` definiert den Aufbau einer Einzelseite mit statischem Fließtext und wenigen Bildern. Auf diesem Template beruhen zB die Seiten Impressum, Übermich, Datenschutzerklärung oder die Seiten für die Newsletteran- bzw. -abmeldung. + +Alle Werke und Texte hingegen verwenden das Template `article.html`. + + +#### Übersichtsseiten + +* `wide-cards.html` – Template der Übersichtsseite über alle Werkskategorien (`werke.md`) +* `cards.html` – Template der Übersichtsseiten über alle Werke einer einzelnen Kategorien + +#### Spezielle Seiten + +* `index.html` – Startseitentemplate +* `news.html` – Template für den Neuigkeiten-Bereich +* `tag.html` – Template für Schlagwortseiten, auf denen alle Werke aufgelistet sind, die mit dem jeweiligen Begriff verschlagwortet sind +* `termine.html` – Template für den Terminkalender ### Termine neu einlesen