Shortcodes für Tabelle und Downloads eingebaut sowie eigenen Typ für feed gebaut

This commit is contained in:
mdn 2023-01-07 23:24:56 +01:00
parent 23649f935f
commit f8c72825f0
9 changed files with 137 additions and 4 deletions

View file

@ -128,6 +128,33 @@ Hierbei ist bitte der Hauptordner, sowie der Jahresordner an die entsprechenden
> cooming soon...
### Beispiel für eigenen Feeds über Datenbestände
> cooming soon...
Für eine Produkt-Seite braucht ich noch zusätzlich einen Feed er aktuell vorhandenen Downloads. Hierfür hab ich eine zusätzliche Datei mit dem nachfolgenden Befehlt erzeugt:
```bash
hugo new --kind feed produkte/meinProdukt_feed.md
```
Hierdurch wird ein zusätzlicher unterordner "feed" erzeugt, in dem dann nur die index.xml liegt. Über den Parameter _dataname_ wird dann noch definiert aus welcher Datei im Daten-Verzeichnis die Informationen für den Feed kommen. Hierfür ist folgender Aufbau notwendig:
```json
[
{
"title": "<der titel>",
"filename": "<der dateiname, relativ zum Ordner der Seite>",
"comment": "<der Kommentar hierzu>",
"published": "<Datum der Freigabe>"
}
}
```
> Damit dies nun auch richtig funktioniert, muss der Webserver auch so eingestellt sein, dass er index.xml-Dateien automatisch ausliefert, sonst muss immer explizit auf die index.xml-Datei referenziert werden.
Das gleiche Format wird vom Shortcode "download" verwendet werden. Mit diesem kann in einer Seite eine Download-Auflistung erzeugt werden. Als Parameter wird nur _data_ erwartet, welches den Dateinamen aus dem Datenverzeichnis beinhaltet. Siehe auch _dataname_ in den Parametern der Feed-Datei.
### Beispiel für einen Blogeintrag
```yaml
@ -161,7 +188,7 @@ Zum erstellen der Datei mit der ein Term in der Taxonomy beschrieben werden kann
hugo new tags/tag1/_index.md
```
In der Datei kann nun die Beschreibung und der Titel angepasst werden. Sollte man eigene Taxonomies verwenden, wird geraten eine eigene Vorlage zu definieren. Diese ist unte archetypes zu definieren, der Name ist die Pluralform mit ".md" am Ende und es sollte folgenden Inhalt haben:
In der Datei kann nun die Beschreibung und der Titel angepasst werden. Sollte man eigene Taxonomies verwenden, wird geraten eine eigene Vorlage zu definieren. Diese ist unter archetypes zu definieren, der Name ist die Pluralform mit ".md" am Ende und es sollte folgenden Inhalt haben:
```toml
---
@ -171,10 +198,28 @@ date: {{ now.Format "2006-01-02" }}
---
```
## Shortcodes
### Download
> comming soon...
### download-feed
> comming soon...
### bootstrap-table
> comming soon...
### table
> comming soon...
## Weiteres
Haben Sie einen Fehler gefunden oder eine Idee für ein neues Feature? Schicken Sie mir bitte eine Mail an ... Oder erstellen Sie direkt einen [Pull Request](https://gitea.marcodn.de/mdn/blogamore/pulls)
## Lizenz
Diese Thema ist unter der [LGPLv3 Lizenz ](https://gitea.marcodn.de/mdn/blogamore/src/branch/main/LICENSE) freigegeben.
Diese Thema ist unter der [LGPLv3 Lizenz](https://gitea.marcodn.de/mdn/blogamore/src/branch/main/LICENSE) freigegeben.

10
archetypes/feed.md Normal file
View file

@ -0,0 +1,10 @@
---
title: "{{ replace .Name "-" " " | title }}"
description: "Descripe {{ title }}"
draft: true
slug: {{ replace .Name "_feed" "" }}/feed
type: feed
dataname: {{ .Name }}
outputs:
- rss
---

22
layouts/feed/rss.xml Normal file
View file

@ -0,0 +1,22 @@
{{ $baseDir := path.Dir .Page.File }}
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
<rss version="2.0">
<channel>
<title>{{ .Page.Params.title }}</title>
<link>{{ .Site.BaseURL }}</link>
<description>{{ .Page.Params.description }}</description>
<language>{{ .Site.LanguageCode }}</language>
<copyright>{{ with .Site.Author.email }}{{.}}{{end}}</copyright>
<pubDate>{{ now.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{ range (index .Site.Data ( .Page.Params.dataname )) }}
<item>
<title>{{ .title }}</title>
<description>{{ .comment }}</description>
<link>{{ (path.Join $baseDir .filename) | absURL }}</link>
<author>{{ with $.Site.Author.email }}{{.}}{{end}}</author>
<guid></guid>
<pubDate>{{ (time .published).Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
</item>
{{ end }}
</channel>
</rss>

View file

@ -1,7 +1,6 @@
{{ define "main" }}
<div id="home-jumbotron" class="jumbotron text-center bg-light">
<h1 class="title">{{ .Site.Title }}</h1>
<div>
{{ .Site.Params.Description }}
</div>

View file

@ -0,0 +1,14 @@
{{ $htmlTable := .content }}
<!-- Tabellenklassen hinzufügen -->
{{ $old_tbl := "<table>"}}
{{ $new_tbl := printf "<table class=\"%s\">" .table_class }}
{{ $htmlTable := replace $htmlTable $old_tbl $new_tbl }}
<!-- Tabellenkopf hinzufügen -->
{{ $old_th := "<thead>"}}
{{ $new_th := printf "<thead class=\"%s\">" .thead_class }}
{{ $htmlTable := replace $htmlTable $old_th $new_th }}
<!-- Tabellen-HTML-Code -->
{{ $htmlTable | safeHTML }}

View file

@ -0,0 +1,6 @@
<!-- Ermittle Parameter -->
{{ $htmlTable := .Inner | markdownify }}
{{ $table_class := .Get "table_class" | default "table table-hover" }}
{{ $thead_class := .Get "thead_class" | default "table-dark" }}
{{- partial "shortcodes/table" (dict "content" $htmlTable "table_class" $table_class "thead_class" $thead_class) -}}

View file

@ -0,0 +1,8 @@
{{ $dataName := .Get "data" }}
{{ $baseDir := path.Dir .Page.File }}
<ul>
{{ range (index .Site.Data (split $dataName "/")) }}
<li><a href="{{ (path.Join $baseDir .filename) | absURL }}">{{ .title }}{{ with .filesize }} ({{ int (div (div . 1024) 1024) }} MB){{ end }}</a><br/>{{ .comment }}</li>
{{ end }}
</ul>

View file

@ -0,0 +1,12 @@
{{ $dataName := .Get "data" }}
{{ $baseDir := path.Dir .Page.File }}
<ul>
{{ range (index .Site.Data (split $dataName "/")) }}
{{ $filename := (path.Join $baseDir .filename) }}
{{ $file := os.Stat $filename }}
{{ if $file }}
<li><a href="{{ $filename | absURL }}">{{ .title }} ({{ div (div $file.Size 1024) 1024 }} MB)</a><br/>{{ .comment }}</li>
{{ end }}
{{ end }}
</ul>

View file

@ -0,0 +1,17 @@
<!-- Ermittle Parameter -->
{{ $htmlTable := .Inner | markdownify }}
{{ $table_class := .Get "table_class" }}
{{ $thead_class := .Get "thead_class" }}
<!-- Tabellenklassen hinzufügen -->
{{ $old_tbl := "<table>"}}
{{ $new_tbl := printf "<table class=\"%s\">" $table_class }}
{{ $htmlTable := replace $htmlTable $old_tbl $new_tbl }}
<!-- Tabellenkopf hinzufügen -->
{{ $old_th := "<thead>"}}
{{ $new_th := printf "<thead class=\"%s\">" $thead_class }}
{{ $htmlTable := replace $htmlTable $old_th $new_th }}
<!-- Tabellen-HTML-Code -->
{{ $htmlTable | safeHTML }}