Compare commits
No commits in common. "e30bc6cd0651c563652f43f269656cc453b0b51e" and "87d3e7d133482df88c83272053c2ac99aa13f77d" have entirely different histories.
e30bc6cd06
...
87d3e7d133
66
DEPENDENCIES.md
Normal file
66
DEPENDENCIES.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
# 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
|
||||||
66
README.md
66
README.md
@ -6,9 +6,9 @@ Eine moderne statische Autorenwebseite mit Werksseiten, Neuigkeiten, Terminkalen
|
|||||||
|
|
||||||
### Pelican
|
### Pelican
|
||||||
|
|
||||||
Ich verwende Pelican v4.11.0 mit Markdown-Support (`pip install pelican[markdown]`) in einer eigenen `venv`-Umgebung. Pelican setzt `python3` voraus.
|
In einer eigenen `venv`-Umgebung verwende ich Pelican (v4.11.0) mit Markdown-Support, installiert mittels `pip install pelican[markdown]`. Pelican setzt `python3` voraus.
|
||||||
|
|
||||||
Außerdem nutze ich folgende Pelican-Plugins:
|
Plugins für Pelican:
|
||||||
|
|
||||||
* `pelican-yaml-metadata` – ermöglicht das Einlesen von Metadaten im YAML-Format
|
* `pelican-yaml-metadata` – ermöglicht das Einlesen von Metadaten im YAML-Format
|
||||||
* `pelican-image-process` – erlaubt das Bearbeiten von Bildern beim Erzeugen der Seite
|
* `pelican-image-process` – erlaubt das Bearbeiten von Bildern beim Erzeugen der Seite
|
||||||
@ -16,11 +16,11 @@ Außerdem nutze ich folgende Pelican-Plugins:
|
|||||||
### CSS und Schriften
|
### 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
|
* [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 lade ich sie von einem [CDN](https://www.cdnfonts.com/libertinus-sans.font) herunter
|
* [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)
|
||||||
|
|
||||||
### Werke und Texte
|
### Werke und Texte
|
||||||
|
|
||||||
* TODO: alle Sourcefiles für meine Werke und Texte direkt aus der `the_works`-Datenbank erzeugen
|
* TODO: die Sourcefiles für meine Werke und Texte sollen direkt aus der `the_works`-Datenbank erzeugt werden
|
||||||
|
|
||||||
### Termine
|
### Termine
|
||||||
|
|
||||||
@ -33,13 +33,11 @@ Das Script `utils/refresh-events.py` benötigt folgende Python-Packages (beide v
|
|||||||
|
|
||||||
@TODO: benutze ich das Script überhaupt noch?
|
@TODO: benutze ich das Script überhaupt noch?
|
||||||
|
|
||||||
Das Script `utils/crop_image_to_bbox.py` benötigt folgende Python-Packages:
|
Das Script `utils/crop_image_to_bbox.py` setzt die Python-Bibliothek `PIL` voraus.
|
||||||
|
|
||||||
* `PIL`
|
|
||||||
|
|
||||||
### Favicon
|
### Favicon
|
||||||
|
|
||||||
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:
|
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:
|
||||||
|
|
||||||
* `inkscape`
|
* `inkscape`
|
||||||
* `pngquant`
|
* `pngquant`
|
||||||
@ -47,21 +45,24 @@ Um aus einer einzelnen SVG-Datei Favicons in allen nötigen Größen zu erzeugen
|
|||||||
|
|
||||||
### Deployment Tool
|
### Deployment Tool
|
||||||
|
|
||||||
* `lftp` – FTP-Client
|
* `lftp`
|
||||||
|
|
||||||
### Auf dem Produktionsserver
|
### Auf dem Produktionsserver
|
||||||
|
|
||||||
* `php` (aktuell v8.1)
|
* `php` (aktuell 8.1)
|
||||||
* PHP-Datenbanktreiber (aktuell `pdo_sqlite`)
|
* Datenbanktreiber, aktuell `pdo_sqlite`
|
||||||
* PHP-Package `PHPMailer` (im Repository enthalten)
|
* `PHPMailer` (im Repository enthalten)
|
||||||
|
|
||||||
## Konfiguration
|
## Konfiguration
|
||||||
|
|
||||||
Das Projekt wird in diesen Dateien konfiguriert:
|
Das Projekt wird in diesen Dateien konfiguriert:
|
||||||
|
|
||||||
* `pelicanconf.py` und `publishconf.py` – enthalten die Pelican-Konfiguration für Development bzw. Production Mode
|
* `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 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
|
* `config.ini` – enthält die Zugangsdaten für Datenbank und SMTP-Server); üblicherweise ist diese Datei ein Symlink zu einer der folgenden Dateien
|
||||||
* `deploy.ini` – Zugangsdaten für den Upload auf den Produktionsserver
|
* `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
|
||||||
* `events.ini` – Zugangsdaten für den CalDAV-Server
|
* `events.ini` – Zugangsdaten für den CalDAV-Server
|
||||||
|
|
||||||
## Ausführen
|
## Ausführen
|
||||||
@ -89,46 +90,13 @@ Das Projekt wird in diesen Dateien konfiguriert:
|
|||||||
|
|
||||||
Pelican kennt Artikel und Seiten. Ich verwende diese wie folgt:
|
Pelican kennt Artikel und Seiten. Ich verwende diese wie folgt:
|
||||||
|
|
||||||
* meine einzelnen Werke und News-Posts sind Artikel; alle Sourcefiles liegen in Unterverzeichnissen von `content/posts/`
|
* meine einzelnen Werke sowie News-Posts sind Artikel; die Sourcefiles liegen in `content/posts/`
|
||||||
* die Kategorie entspricht der Werksart (Romane, Kurzprosa, Lyrik, Weitere, News); alle Sourcefiles einer Kategorie liegen im gleichnamigen Unterverzeichnis (zB `content/posts/romane/`)
|
* die Kategorie entspricht der Werksart (Romane, Kurzprosa, Lyrik, Weitere, News); alle Sourcefiles einer Kategorie liegen im gleichnamigen Unterverzeichnis (zB `content/posts/romane/`)
|
||||||
* Schlagworte entsprechen (größtenteils) Genres; ich habe aber zB auch englischsprachige Texte per Schlagwort markiert
|
* Schlagworte entsprechen – weitgehend – den Genres, geben aber auch zB englischsprachige Texte an
|
||||||
* alles andere sind Seiten; die Sourcefiles liegen in `content/pages/`
|
* 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
|
### 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
|
### Termine neu einlesen
|
||||||
|
|||||||
@ -1,13 +1,11 @@
|
|||||||
;<?php die(); ?>
|
;<?php die(); ?>
|
||||||
|
|
||||||
[general]
|
[general]
|
||||||
; base URL – do not close with '/'!
|
; do not close with '/''
|
||||||
site_url = https://www.example.com
|
site_url = https://www.example.com
|
||||||
; email address to send emails to
|
|
||||||
notificationAddress = mail@example.com
|
notificationAddress = mail@example.com
|
||||||
; some string to salt subscribers' email addresses for a non-recreatable md5 hash
|
; string that will be concatenated with email address to create a non-recreatable md5 hash
|
||||||
uniqueKey = "some string"
|
uniqueKey = "some string"
|
||||||
; status code returned after any PHP script exits gracefully
|
|
||||||
statusCode = "HTTP/1.1 303 See Other"
|
statusCode = "HTTP/1.1 303 See Other"
|
||||||
|
|
||||||
[smtp]
|
[smtp]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user