website
All checks were successful
the build was successful

This commit is contained in:
Sebastian Frank
2019-02-18 18:03:46 +01:00
parent 1187291938
commit db248328b9
41 changed files with 3437 additions and 3 deletions

View File

@@ -0,0 +1,18 @@
# mark2web
mark2web ist ein Generator, der aus Markdown- und Konfig-Dateien in einer Ordnerstruktur eine statische Website unter Zuhilfenahme von Templates generiert.
---
Der Generator selbst wurde in [Go](https://golang.org/) geschrieben. Es wurden dabei eine Vielzahl existierender Packages verwendet. Unter Anderem:
- der Markdown-Parser [blackfriday](https://github.com/russross/blackfriday)
- die Template-Sprache "Django Template Language" über das Paket [pongo2](github.com/flosch/pongo2)
- das Logging-Paket [go-logging](github.com/op/go-logging)
- der YAML-Parser [go-yaml](https://github.com/go-yaml/yaml)
Weitere Pakete, die verwendet wurden finden Sie in den Quellen.
Diese Website wurde selbst mit mark2web generiert. Der entsprechende Quellcode, sowie die Quellen zu mark2web finden Sie unter:
**https://gitbase.de/apairon/mark2web**

View File

@@ -0,0 +1,20 @@
# Installation
Damit die korrekten Versionsinformationen dynamisch in das finale mark2web-Binary eingefügt wurde, ist eine manuelle Installation aus dem Git-Repository sinnvoll.
Da die benötigten Pakete über die Go "vendor"-Funktionalität eingebunden sind ist ein `git submodule --init --recursive` nötig, wie im folgenden Abschnitt zu sehen ist:
```sh
mkdir -p $GOPATH/src/gitbase.de/apairon
git clone https://gitbase.de/apairon/mark2web.git $GOPATH/src/gitbase.de/apairon/mark2web
cd $GOPATH/src/gitbase.de/apairon/mark2web
git submodule update --init --recursive
./build.sh
```
---
Eine Installation über `go install gitbase.de/apairon/mark2web` wird derzeit noch nicht unterstützt, da dabei die Informationen für `mark2web -version` nicht generiert werden.
Später folgen vorkomplierte Releases über die Repository-Website.

View File

@@ -0,0 +1,69 @@
# Benutzung
## Ordnerstruktur
Das Ausgangsmaterial für die zu generierende Website wird in folgender Ordnerstruktur organisiert:
```plain
DIR content
FIL config.yml (Pfad-Konfiguration)
DIR de (Sprache)
DIR main (Navigationsbaum)
DIR 01_Home (1. Ebene)
FIL config.yml
FIL README.md
DIR 02_Download
FIL README.md
FIL bild.jpg
FIL presse.zip
DIR 03_Kontakt
FIL README.md
DIR 01_Adresse
FIL README.md
DIR 02_Anfahrt
FIL README.md
DIR 04_Impressum
FIL README.md
service
DIR 01_Datenschutz
FIL README.md
DIR 02_AGB
FIL README.md
DIR 03_Impressum
FIL README.md
DIR assets (kann auch abweichend benannt werden)
DIR js
DIR img
DIR css
DIR templates
FIL base.html
FIL base_sub.html
FIL config.yml (globale Konfiguration, enthält andere Anweisungen als individuelle Pfad-Konfig, siehe Beispiel)
```
In der Minimal-Variante sind nur die Ordner `content` und `templates` nötig.
---
### `content`
- enthält die Markdown-Dateien und Konfigurationen für die Navigationsstruktur und Einzelseiten
- voranestellte Nummer mit Unterstrich wie z.B. `01_` dienen nur der Sortierung und gehen nicht in den eigentlichen Navigationspfad mit ein
- zur Bildung des Navigationspfades werden die Verzeichnisnamen in Kleinschreibung konvertiert
- Navigationsnamen für die Website werden aus dem Pfad gebildet, wobei `_`(Unterstriche) in Leerzeichen umgewandelt werden
- Navigationsnamen können durch die `config.yml` überschrieben werden
#### Medien und Downloads
- Mediendateien werden neben den Inhalten in `content` abgelegt und müssen dementsprechend relativ verlinkt werden
### `assets`
- Bilder/CSS/JS die in Templates oder mehrfach in den Content-Seiten benötigt werden liegen in `assets`
### `templates`
- Template-Dateien für die Generierung der Website liegen hier

View File

@@ -0,0 +1,3 @@
This:
Data:
teaser: Wie werden die Inhalte und Templates organisiert?

View File

@@ -0,0 +1,139 @@
# Konfiguration
Die Konfigurationsdatein sind im YAML-Format gehalten (siehe: [Wikipedia](https://de.wikipedia.org/wiki/YAML)).
## globale Einstellungen
Die obersten Verzeichnis sich befindende Datei `config.yml` kann z.B. folgenden Inhalt haben:
```yaml
Webserver:
Type: "apache"
Assets:
FromPath: "assets"
ToPath: "assets"
Action: "copy"
FixTemplate:
Find: "\\.\\./assets/"
Replace: ""
OtherFiles:
Action: "copy"
```
### Sektion `Webserver:`
#### `Type:`
Derzeit wird hier nur der Wert `apache` unterstützt. Ist dieser Wert gesetzt werden automatische .htaccess-Dateien mit mod_rewrite-Anweisungen generiert, die eine saubere Weiterleitung bei entsprechenden Konfig-Anweisungen im `content`-Verzeichnis ermöglichen.
### Sektion `Assets:`
`Assets:` steuert, wie mit Bild/JS/CSS Dateien umgegangen werden soll.
#### `FromPath:`
Lage des Asset-Verzeichnis unterhalb des `content`-Verzeichnis
#### `ToPath:`
Zielverzeichnis im Ausgabe-Verzeichnis der fertig generierten Website
#### `Action:`
Derzeit nur `copy`, also das Kopieren der Dateien und Unterordner ins Zielverzeichnis
#### `FixTemplate:`
Wenn hier `Find:` (regulärer Ausdruck) und `Replace:` (Ersetzung) angeben sind, werden die gefundenden Pfadangaben in der generierten HTML-Dateien durch den korrekten relativen Pfad zum Asset-Verzeichnis ersetzt.
### Sektion `OtherFiles:`
`OtherFiles:` definiert, wie mit anderen Dateien innerhalb des `content`-Verzeichnis umgegangen werden soll.
#### `Action:`
Derzeit nur `copy`, also das Kopieren der Dateien in das entsprechende Unterverzeichnis im Ausgabe-Verzeichnis
---
## Konfiguration im `content`-Verzeichnis
Im `content`-Verzeichnis, sowie in jedem Unterverzeichnis unterhalb von `content` kann sich eine `config.yml`-Datei befinden, wie aus folgendem Beispiel:
```yaml
This:
GoTo: "/de/service/impressum/"
Navname: "Impressumsverweis"
```
oder
```yaml
This:
Navname: "FAQ's"
Data:
slogan: "Wer nicht fragt, bekommt keine Antwort."
Template: "base.html"
Index:
InputFile: "README.md"
OutputFile: "index.html"
Meta:
Title: "Fragen und Antworten"
Description: "Dies ist die Fragen und Antworten Unterseite."
Keywords: "FAQ, Fragen, Antworten"
Data:
background: "bg.jpg"
slider:
- img: "assets/img/slider1.jpg"
alt: "Alternativtext 1"
- img: "assets/img/slider2.jpg"
alt: "Alternativtext 2"
- img: "assets/img/slider3.jpg"
alt: "Alternativtext 3"
```
### `This:` Sektion
Sämtlich Werte unterhalb dieser Sektion gelten nur für den Inhalt, bzw. Navigationspunkt in dessen Ordner sich die `config.yml` befindet. Die Werte werden nicht an Unterordner wertervererbt.
#### `GoTo:`
Falls der Navigationspunkt selbst keinen Inhalt darstellen soll, sondern nur weiterleiten soll, so wird hier das Weiterleitungsziel eingegeben.
Das Ziel ist der absolute (startend mit `/`) oder relative Pfad zum Zielnavigationspunkt.
Die Schreibweise des Pfades ist so zu verwenden, wie der Pfad nach Umschreibung und Säuberung des Pfades im Zielverzeichnis dargestellt wird.
Aus `de/mainnav/03_Fragen und Antworten` wird also z.B. `de/mainnav/fragen-und-antworten`.
#### `Navname:`
Dieser Wert überschreibt den aus dem Ordnernamen automatisch abgeleiteten Navigationspunkt-Namen. Dies ist zum Beispiel dann nützlich, wenn Sonderzeichen im Verzeichnisnamen nicht vorkommen sollen, aber im Namen des Navigationspunkts gebraucht werden.
#### `Data:`
Unterhalb von `Data:` können beliebige Datenstrukturen erfasst werden. Da diese Struktur unterhalb von `This:` angeordnet ist, werden auch die Daten nicht weiter an Unterordner vererbt.
Hier können z.B. Informationen zum Navigationspunkt abgelegt werden, die im Template Zusatzinformationen darstellen (z.B. ein Slogan zu einem Navigationspunkt).
### `Meta:` Sektion
Unter `Title:`, `Description:` und `Keywords:` werden die typischen Metaangaben abgelegt, die im
```html
<head>
...
</head>
```
übllicherweise Verwendung finden. Die entsprechenden Platzhalter stehen im Template zur Verfügung.
`Meta:` vererbt seine individuellen Informationen an die Unterordner weiter, sofern diese dort nicht selbst in einer `config.yml` oder im Kopf der Markdown-Datei definiert sind.
### `Data:` Sektion
`Data:` an dieser Stelle kann, wie auch `Data:` unterhalb von `This:`, beliebige Daten aufnehmen. Die Daten hier allerdings werden an Unterordner weitervererbt, sofern diese nicht dort oder in der Markdown-Datei selbst festegelegt überschrieben wurden.

View File

@@ -0,0 +1,3 @@
This:
Data:
teaser: Globale Konfiguration und individuelle Content-Einstellungen

View File

@@ -0,0 +1,38 @@
# Inhalte
Die Inhalte der Website werden im Ordner `content` und dessen Unterordnern gespeichert.
Texte werden dazu im Format **markdown** (siehe: [markdown.de](http://markdown.de/)) eingepflegt.
Bilddateien und anderen Medieninhalte werden einfach direkt neben den Markdown-Dateien im Verzeichnis des jeweiligen Navigationspunktes abgelegt.
---
Jede Seite ist innerhalb der Ordnerstruktur (Navigation) standardmäßig als `README.md` gespeichert. Die Datei ist eine normale Markdown-Datei mit einem optionalen Header:
```markdown
---
Meta:
Title: Seitentitel für die Meta-Angaben
Keywords: Meta-Keywords
Description: Meta-Description
Data: # Vererbung spielt hier keine Rolle, da Markdown-Datei letzte Ebene in der Generierung ist
image: bild.jpg
---
# Seitentitel
Seiteninhalt, lorem ipsum...
## Überschrift 2
Weiterer Absatz, usw...
```
## zusätzliche Konfiguration
Wie bereits unter [Konfiguration](../konfiguration) beschrieben, kann sich in jedem Ordner unterhalb von `content` eine `config.yml`-Datei befinden.
Deren vererbaren Einstellungen können auch im Kopf der Markdown-Datei überschrieben werden.
`This: -> Navname:` im Kopf zu setzen ist allerdings nicht möglich, da die Navigation bereits vor dem Verarbeiten der Markdown-Datei generiert wird.
Die Kopfdaten müssen mit `---` in der ersten Zeile eingeleitet werden und mit `---` auf einer einzelnen Zeile abgeschlossen werden.

View File

@@ -0,0 +1,3 @@
This:
Data:
teaser: Website-Texte und Medien

View File

@@ -0,0 +1,2 @@
This:
GoTo: ordnerstruktur