moved dependencies to and expanded Readme
This commit is contained in:
parent
bea7df02e1
commit
e30bc6cd06
@ -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
|
||||
66
README.md
66
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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user