# 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.