<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Galerie on Natenoms Blog</title><link>https://natenom.de/tags/galerie/</link><description>Recent content in Galerie on Natenoms Blog</description><generator>Hugo -- gohugo.io</generator><language>de</language><copyright/><lastBuildDate>Tue, 06 Sep 2022 03:42:05 +0200</lastBuildDate><atom:link href="https://natenom.de/tags/galerie/index.xml" rel="self" type="application/rss+xml"/><item><title>Eigene Pseudo-Galerie für Hugo als Ersatz für Hugo-Shortcode-Gallery</title><link>https://natenom.de/2022/09/eigene-pseudo-galerie-fuer-hugo-als-ersatz-fuer-hugo-shortcode-gallery/</link><pubDate>Tue, 06 Sep 2022 03:42:05 +0200</pubDate><guid>https://natenom.de/2022/09/eigene-pseudo-galerie-fuer-hugo-als-ersatz-fuer-hugo-shortcode-gallery/</guid><description>&lt;p>Als ich Anfang des Jahres diesen Blog hier von &lt;a href="/2022/03/umzug-dokuwiki-hugo-1-vorarbeiten/">WordPress zu Hugo umzog&lt;/a>, war mir die Funktion einer Bildergalerie sehr wichtig. Schließlich gab es in meinem Blog sehr viele Bildergalerien.&lt;/p></description><content:encoded><![CDATA[<p>Als ich Anfang des Jahres diesen Blog hier von <a  href="/2022/03/umzug-dokuwiki-hugo-1-vorarbeiten/">WordPress zu Hugo umzog</a>, war mir die Funktion einer Bildergalerie sehr wichtig. Schließlich gab es in meinem Blog sehr viele Bildergalerien.</p>
<h2 id="hugo-shortcode-gallery" data-numberify>Hugo-Shortcode-Gallery<a class="anchor ms-1" href="#hugo-shortcode-gallery"></a></h2>
<p>Dafür verwendete ich <a  class='urlextern'  href="https://github.com/mfg92/hugo-shortcode-gallery">hugo-shortcode-gallery</a>. Hierbei werden die von Hugo generierten Vorschaubilder per JavaScript geladen und bei einem Klick darauf werden in einer Lightbox die Originale angezeigt. Letzteres war zuletzt in Firefox ziemlich lahm.</p>
<p>Eine Galerie fügt man mit diesem Shortcode ein:</p>
<pre><code>{{&lt; gallery match=&quot;images/*&quot; &gt;}}
</code></pre>
<p>Damit werden alle Bilder im Unterverzeichnis <code>images/</code> des <code>Page Bundle</code> zur Galerie hinzugefügt. So kann man auch mehrere Galerien in einem Blogbeitrag mittels verschiedenen Unterverzeichnissen erstellen lassen.</p>

<h2 id="einzelbilder-statt-galerie" data-numberify>Einzelbilder statt Galerie<a class="anchor ms-1" href="#einzelbilder-statt-galerie"></a></h2>
<p>Über die Zeit hat sich jedoch für mich herauskristallisiert, dass ich Galerien gar nicht benötige. Stattdessen finde ich es jetzt besser, Bilder einzeln einzubinden, sodass man auch zu jedem Bild eine Beschreibung und einen Alt-Text hinterlegen kann. Und auch eine Lightbox will ich nicht mehr haben, Bilder werden per Klick direkt geöffnet.</p>
<p>Schon seit längerem nutze ich daher gar keine Galerien mehr.</p>
<p>Da aber in circa 90 Blogbeiträgen bereits die anfangs genutzten Galerien enthalten sind, wollte ich mir die Arbeit ersparen, diese manuell umschreiben zu müssen.</p>

<h2 id="eigene-pseudogalerie-statt-hugo-shortcode-gallery" data-numberify>Eigene Pseudogalerie statt Hugo-Shortcode-Gallery<a class="anchor ms-1" href="#eigene-pseudogalerie-statt-hugo-shortcode-gallery"></a></h2>
<p>Deshalb habe ich die Hugo-Shortcode-Gallery aus dem Projekt entfernt und einen gleichnamigen eigenen Shortcode erstellt, der die Bilder per Markdown einfügt und mit dem Original verlinkt, so <a  href="/ueber/mitmachen/#einzelbilder-per-markdown-syntax">wie hier beschrieben</a>.</p>
<p>Man kann somit die alte Form weiterverwenden und für</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-c" data-lang="c"><span style="display:flex;"><span>{{<span style="color:#f92672">&lt;</span> gallery match<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;images/*&#34;</span> <span style="color:#f92672">&gt;</span>}}
</span></span></code></pre></div><p>wird durch alle passenden Bilder iteriert und dann wird das hier eingefügt:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-markdown" data-lang="markdown"><span style="display:flex;"><span>[<span style="color:#f92672">![</span>](<span style="color:#a6e22e">images/bild1.jpg</span>)](images/bild1.jpg)
</span></span><span style="display:flex;"><span>[<span style="color:#f92672">![</span>](<span style="color:#a6e22e">images/bild2.jpg</span>)](images/bild2.jpg)
</span></span><span style="display:flex;"><span>…
</span></span></code></pre></div><p>Das nächste Rendern des Blogs dauerte nach der Änderung sehr lange, schließlich mussten für hunderte Bilder in insgesamt 90 Galerien verschiedene Bildgrößen generiert werden. Für meinen Blog waren das so zusätzlich 1,6 GB an neuen Bildateien.</p>
<p>Diese Änderung ist jetzt im Blog und auch im Wiki implementiert. Ich musste in der <code>config.toml</code> des Wikis den <code>timeout</code> etwas erhöhen, da es dort Galerien mit extrem vielen Bildern gibt.</p>

<h2 id="alt-und-neu-im-vergleich" data-numberify>Alt und neu im Vergleich<a class="anchor ms-1" href="#alt-und-neu-im-vergleich"></a></h2>
<p>Links die alte Galerie und rechts die neue.</p>
 <figure class="image-caption float-left"><a href="2022-09-06-blog-alte-galerie.png"><picture><source type="webp" srcset="/2022/09/eigene-pseudo-galerie-fuer-hugo-als-ersatz-fuer-hugo-shortcode-gallery/2022-09-06-blog-alte-galerie_hub50ef4cb36e35f912a3e960b4f2e72a6_522831_350x0_resize_q95_h2_catmullrom_3.webp" />
			         <img alt="Screenshot der alten Galerie mit kleinen Vorschaubildern." src="/2022/09/eigene-pseudo-galerie-fuer-hugo-als-ersatz-fuer-hugo-shortcode-gallery/2022-09-06-blog-alte-galerie_hub50ef4cb36e35f912a3e960b4f2e72a6_522831_350x0_resize_q95_h2_catmullrom_3.webp" title="" width="350" height="661" loading="lazy" /></picture></a><figcaption>Alte Galerie.</figcaption></figure>
 <figure class="image-caption float-left"><a href="2022-09-06-blog-neue-pseudo-galerie-cover.png"><picture><source type="webp" srcset="/2022/09/eigene-pseudo-galerie-fuer-hugo-als-ersatz-fuer-hugo-shortcode-gallery/2022-09-06-blog-neue-pseudo-galerie-cover_hued90b20beeb03bfd7de479d9f64597de_427108_350x0_resize_q95_h2_catmullrom_3.webp" />
			         <img alt="Screenshot der alten Galerie mit normalgroßen Vorschaubildern." src="/2022/09/eigene-pseudo-galerie-fuer-hugo-als-ersatz-fuer-hugo-shortcode-gallery/2022-09-06-blog-neue-pseudo-galerie-cover_hued90b20beeb03bfd7de479d9f64597de_427108_350x0_resize_q95_h2_catmullrom_3.webp" title="" width="350" height="661" loading="lazy" /></picture></a><figcaption>Neue Pseudo-Galerie.</figcaption></figure>
<div style="clear: both;"></div>


<p>Hier der <a  href="/2015/07/ein-paar-bilder-von-den-schoenen-bauten-unseres-minecraft-servers/">Link zum Blogbeitrag mit den schönen Minecraft-Bauten</a>.</p>

<h2 id="passt" data-numberify>Passt<a class="anchor ms-1" href="#passt"></a></h2>
<p>Das passt so für mich. Es gibt eine Abhängigkeit weniger, um die man sich ganz selten mal kümmern muss und die eigene Lösung benötigt auch kein JavaScript mehr.</p>
<p>Und falls ich mal in einen Blogbeitrag ganz viele Bilder als reinen Bilddump werfen möchte, dann kann ich das weiterhin mit dem entsprechenden Shortcode machen. Bevorzugt sind aber weiterhin Bilder mit Bildbeschreibung im Alt-Text.</p>]]></content:encoded><enclosure url="https://natenom.de/2022/09/eigene-pseudo-galerie-fuer-hugo-als-ersatz-fuer-hugo-shortcode-gallery/2022-09-06-blog-neue-pseudo-galerie-cover.png" length="427108" type="image/png"/></item><item><title>Bildbeschreibungen für Galerien im Blog via Digikam einfügen/verwalten</title><link>https://natenom.de/2022/04/bildbeschreibungen-galerien-blog-via-digikam/</link><pubDate>Thu, 07 Apr 2022 08:00:42 +0200</pubDate><guid>https://natenom.de/2022/04/bildbeschreibungen-galerien-blog-via-digikam/</guid><description><![CDATA[<p>Vor einiger Zeit hatte ich <a  href="/2022/02/bildbeschreibungen-in-meinen-galerien-zwei-methoden/">hier beschrieben</a>, welche zwei Möglichkeiten es gibt, in der im Blog verwendeten Galerie Bildbeschreibungen anzuzeigen.</p>
<p>Ich hatte damals überlegt, für welche der beiden Methoden ich mich entscheiden sollte. Die Wahl ist auf Beschreibungen in den Exif-Metadaten gefallen. Der Grund ist, dass auch die anderen Angaben wie z. B. ISO-Wert usw. bereits in den Metadaten enthalten sind und das aus meiner Sicht sinnvoll ist, dass auch die Bildbeschreibung dort landet, damit man nicht mit dem Medium brechen muss.</p>]]></description><content:encoded><![CDATA[<p>Vor einiger Zeit hatte ich <a  href="/2022/02/bildbeschreibungen-in-meinen-galerien-zwei-methoden/">hier beschrieben</a>, welche zwei Möglichkeiten es gibt, in der im Blog verwendeten Galerie Bildbeschreibungen anzuzeigen.</p>
<p>Ich hatte damals überlegt, für welche der beiden Methoden ich mich entscheiden sollte. Die Wahl ist auf Beschreibungen in den Exif-Metadaten gefallen. Der Grund ist, dass auch die anderen Angaben wie z. B. ISO-Wert usw. bereits in den Metadaten enthalten sind und das aus meiner Sicht sinnvoll ist, dass auch die Bildbeschreibung dort landet, damit man nicht mit dem Medium brechen muss.</p>
<p>Zudem habe ich jetzt jetzt eine einfache Möglichkeit gefunden, Bildbeschreibungen mit Hilfe von Digikam in die Exif-Metadaten meiner Fotos im Blog einzufügen.</p>

<h2 id="setup" data-numberify>Setup<a class="anchor ms-1" href="#setup"></a></h2>
<ol>
<li>Zunächst fügt man das <code>content</code>-Verzeichnis des Blogs als <code>Sammlung</code> bzw. <code>Collection</code> in <code>Settings -&gt; Configure digikam… -&gt; Collections</code> in Digikam hinzu, sodass man Zugriff darauf hat.</li>
<li>Dann setzt man in <code>Settings -&gt; Configure digikam… -&gt; Metadata</code> bei <code>Behaviour</code> im Bereich <code>Write This Information to the Metadata</code> einen Haken bei <code>Captions and title</code>.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> </p><figure class="image-caption"><picture><source type="jpeg" srcset="/2022/04/bildbeschreibungen-galerien-blog-via-digikam/images/2022-04-07-digikam-settings-metadata.jpg" />
			         <img alt="" src="/2022/04/bildbeschreibungen-galerien-blog-via-digikam/images/2022-04-07-digikam-settings-metadata.jpg" title="Einstellungen von Digikam" width="793" height="594" loading="lazy" /></picture><figcaption>Einstellungen von Digikam</figcaption></figure><p>
</li>
</ol>
<div class="shortcode-notice hinweis">
    <div class="shortcode-notice-title hinweis">
        Hinweis</div>
    <div class="notice-content">Per Voreinstellung werden vom Benutzer eingegebene, neue Metadaten von Digikam nicht in die Dateien geschrieben, sondern nur in die Datenbank von Digikam, sodass Fotos unberührt bleiben.</div>
</div>



<h2 id="dateibeschreibung-einfügen" data-numberify>Dateibeschreibung einfügen<a class="anchor ms-1" href="#dateibeschreibung-einfügen"></a></h2>
<p>Nun kann man ein Bild auswählen und rechts den Bereich <code>Captions</code> öffnen und bei <code>Caption</code> die Bildbeschreibung eintragen. Dann klickt man unten auf <code>Apply</code>. Vergisst man das, fragt Digikam bei Auswahl eines anderen Bilds nach, ob die Änderung gespeichert werden soll.</p>
<p></p><figure class="image-caption"><a href="/2022/04/bildbeschreibungen-galerien-blog-via-digikam/images/2022-04-07-digikam-metadaten-bearbeiten.jpg"><picture>
                <source type="image/webp" srcset="/2022/04/bildbeschreibungen-galerien-blog-via-digikam/images/2022-04-07-digikam-metadaten-bearbeiten_hu7b4335126af471c69bc0d7f6d220d9bf_379621_360x0_resize_q95_h2_catmullrom.webp 360w,/2022/04/bildbeschreibungen-galerien-blog-via-digikam/images/2022-04-07-digikam-metadaten-bearbeiten_hu7b4335126af471c69bc0d7f6d220d9bf_379621_500x0_resize_q95_h2_catmullrom.webp 500w,/2022/04/bildbeschreibungen-galerien-blog-via-digikam/images/2022-04-07-digikam-metadaten-bearbeiten_hu7b4335126af471c69bc0d7f6d220d9bf_379621_816x0_resize_q95_h2_catmullrom.webp 816w, /2022/04/bildbeschreibungen-galerien-blog-via-digikam/images/2022-04-07-digikam-metadaten-bearbeiten_hu7b4335126af471c69bc0d7f6d220d9bf_379621_1632x0_resize_q95_h2_catmullrom.webp 1632w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px,(min-width: 1200px) 1632px" />
                <img alt="" srcset="/2022/04/bildbeschreibungen-galerien-blog-via-digikam/images/2022-04-07-digikam-metadaten-bearbeiten_hu7b4335126af471c69bc0d7f6d220d9bf_379621_360x0_resize_q95_h2_catmullrom.webp 360w, /2022/04/bildbeschreibungen-galerien-blog-via-digikam/images/2022-04-07-digikam-metadaten-bearbeiten_hu7b4335126af471c69bc0d7f6d220d9bf_379621_500x0_resize_q95_h2_catmullrom.webp 500w, /2022/04/bildbeschreibungen-galerien-blog-via-digikam/images/2022-04-07-digikam-metadaten-bearbeiten_hu7b4335126af471c69bc0d7f6d220d9bf_379621_816x0_resize_q95_h2_catmullrom.webp 816w,/2022/04/bildbeschreibungen-galerien-blog-via-digikam/images/2022-04-07-digikam-metadaten-bearbeiten_hu7b4335126af471c69bc0d7f6d220d9bf_379621_1632x0_resize_q95_h2_catmullrom.webp 1632w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px,(min-width: 1200px) 1632px"
                     src="/2022/04/bildbeschreibungen-galerien-blog-via-digikam/images/2022-04-07-digikam-metadaten-bearbeiten_hu7b4335126af471c69bc0d7f6d220d9bf_379621_816x0_resize_q95_h2_catmullrom.webp" title="Bildbeschreibung bearbeiten" loading="lazy" width="816" height="459" /></picture></a><figcaption>Bildbeschreibung bearbeiten</figcaption></figure><p>
</p>

<h2 id="änderungen-prüfen" data-numberify>Änderungen prüfen<a class="anchor ms-1" href="#änderungen-prüfen"></a></h2>
<p>Öffnet man z. B. in Dolphin die Dateieigenschaften eines Bildes mit Bildbeschreibung, dann kann man diese im Bereich <code>Details -&gt; Description</code> sehen.</p>
<p></p><figure class="image-caption"><picture><source type="jpeg" srcset="/2022/04/bildbeschreibungen-galerien-blog-via-digikam/images/2022-04-07-dolphin-dateieigenschaften.jpg" />
			         <img alt="Dateieigenschaften in Dolphin" src="/2022/04/bildbeschreibungen-galerien-blog-via-digikam/images/2022-04-07-dolphin-dateieigenschaften.jpg" title="" width="366" height="456" loading="lazy" /></picture><figcaption></figcaption></figure><p>
</p>
<p>Natürlich geht das auch mit <code>exiftool</code>:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>$ exiftool 2022-04-01-kagube-selfie.jpg
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>File Name                       : 2022-04-01-kagube-selfie.jpg
</span></span><span style="display:flex;"><span>File Size                       : <span style="color:#ae81ff">859</span> KiB
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>…<span style="color:#f92672">]</span>
</span></span><span style="display:flex;"><span>Description                     : Kagube wollte ein Selfie machen.
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>…<span style="color:#f92672">]</span></span></span></code></pre></div></p>

<h2 id="veränderungen-an-den-dateien" data-numberify>Veränderungen an den Dateien<a class="anchor ms-1" href="#veränderungen-an-den-dateien"></a></h2>
<p>Sobald man eine Bildbeschreibung eingefügt hat, ändert sich auch die Datei für Git. Man kann diese Änderungen dann committen und beim nächsten Bau des Blogs werden in der Galerie die Bildbeschreibungen angezeigt.</p>

<h2 id="passt" data-numberify>Passt<a class="anchor ms-1" href="#passt"></a></h2>
<p>Für mich ist die Lösung als <code>Collection</code> innerhalb von Digikam sehr praktisch. So kann ich auch im Nachhinein die Fotos des Blogs verwalten, zwischendurch einfach mal Bildbeschreibungen verändern, Fotos nachbearbeiten und vor allem z. B. auch die Möglichkeit nutzen, Bilder anhand von bestimmten Merkmalen dank Digikam wiederzufinden, statt nur über Blogbeiträge oder Dateinamen.</p>
<p>Denn Digikam bietet z. B. die Möglichkeit, ähnliche Dateien anhand eines ausgewählten Bildes oder anhand eines selbst gemalten Bildes zu finden.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a  class='urlextern'  href="https://userbase.kde.org/Digikam/Metadata">Dokumentation</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>]]></content:encoded><enclosure url="https://natenom.de/2022/04/bildbeschreibungen-galerien-blog-via-digikam/cover.jpg" length="379621" type="image/jpeg"/></item><item><title>Update für das hier verwendete Theme</title><link>https://natenom.de/2022/03/update-bootstrap-theme-hier-im-blog/</link><pubDate>Sun, 27 Mar 2022 18:18:42 +0200</pubDate><guid>https://natenom.de/2022/03/update-bootstrap-theme-hier-im-blog/</guid><description>Es gab wieder ein schönes Update für das Hugo-Theme Bootstrap, das ich hier im Blog verwende.
Gallery-Shortcode Das Theme liefert jetzt einen eigenen Shortcode gallery mit, siehe Dokumentation.
Da ich bereits einen Shortcode für Galerien habe, nutze ich diesen neuen noch nicht. Aber ich werde ihn mal in Zukunft ausprobieren.
Jedoch vertragen sich mein bisheriger Shortcode von hugo-shortcode-gallery und der neue Shortcode nicht, da sie den selben Namen nutzen.
Deshalb musste ich die Datei themes/hugo-shortcode-gallery/layouts/shortcodes/gallery.</description><content:encoded><![CDATA[<p>Es gab wieder ein schönes Update für das Hugo-<a  class='urlextern'  href="https://github.com/razonyang/hugo-theme-bootstrap">Theme Bootstrap</a>, das ich hier <a  href="/2022/02/umzug-des-blogs-von-wordpress-zu-hugo-teil-1/#ein-sch%c3%b6nes-theme-f%c3%bcr-hugo-finden">im Blog verwende</a>.</p>

<h2 id="gallery-shortcode" data-numberify>Gallery-Shortcode<a class="anchor ms-1" href="#gallery-shortcode"></a></h2>
<p>Das Theme liefert jetzt einen eigenen Shortcode <code>gallery</code> mit, siehe <a  class='urlextern'  href="https://hbs.razonyang.com/en/docs/shortcodes/gallery/">Dokumentation</a>.</p>
<p>Da ich bereits einen Shortcode für Galerien habe, nutze ich diesen neuen noch nicht. Aber ich werde ihn mal in Zukunft ausprobieren.</p>
<p>Jedoch vertragen sich mein bisheriger Shortcode von <code>hugo-shortcode-gallery</code> und der neue Shortcode nicht, da sie den selben Namen nutzen.</p>
<p>Deshalb musste ich die Datei <code>themes/hugo-shortcode-gallery/layouts/shortcodes/gallery.html</code> nach <code>layouts/shortcodes/nat_gallery.html</code> kopieren und anschließend alle Vorkommen von</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-jinja" data-lang="jinja"><span style="display:flex;"><span><span style="color:#75715e">{{</span><span style="color:#960050;background-color:#1e0010">​</span><span style="color:#f92672">&lt;</span> gallery match<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;images/*&#34;</span> <span style="color:#f92672">[</span><span style="color:#960050;background-color:#1e0010">…</span><span style="color:#f92672">]</span> <span style="color:#f92672">&gt;</span><span style="color:#960050;background-color:#1e0010">​</span><span style="color:#75715e">}}</span></span></span></code></pre></div>
<p>nach</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-jinja" data-lang="jinja"><span style="display:flex;"><span><span style="color:#75715e">{{</span><span style="color:#960050;background-color:#1e0010">​</span><span style="color:#f92672">&lt;</span> nat_gallery match<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;images/*&#34;</span> <span style="color:#f92672">[</span><span style="color:#960050;background-color:#1e0010">…</span><span style="color:#f92672">]</span> <span style="color:#f92672">&gt;</span><span style="color:#960050;background-color:#1e0010">​</span><span style="color:#75715e">}}</span></span></span></code></pre></div>
<p>Umschreiben. Das ging mit der Befehlszeile:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>find ./posts/ -type f -iname <span style="color:#e6db74">&#34;*.md&#34;</span> -execdir <span style="color:#ae81ff">\
</span></span></span><span style="display:flex;"><span><span style="color:#ae81ff"></span>sed -E -i -e <span style="color:#e6db74">&#39;s/ gallery match=/ nat_gallery match=/g&#39;</span> <span style="color:#e6db74">&#39;{}&#39;</span> <span style="color:#ae81ff">\;</span></span></span></code></pre></div>
<p>In Zukunft werde ich für neue Shortcodes immer einem eigenen Prefix verwenden.</p>

<h2 id="beitragsbilder-auch-auf-beitragsseite" data-numberify>Beitragsbilder auch auf Beitragsseite<a class="anchor ms-1" href="#beitragsbilder-auch-auf-beitragsseite"></a></h2>
<p>Beitragsbilder werden jetzt nicht mehr nur in der Liste der Beiträge als Thumbnail angezeigt, sondern auch ganz oben, sobald man den Beitrag öffnet. Es ist jetzt so, wie es zuletzt im hier verwendeten WordPress-Theme war. Das gefällt mir.</p>
<p>Die neue Funktion aktiviert man in der <code>config.toml</code> im Bereich <code>[params]</code> mit:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span><span style="color:#a6e22e">post</span>.<span style="color:#a6e22e">featuredImage</span> = <span style="color:#66d9ef">true</span></span></span></code></pre></div></p>
<p>Das verwendet Bild ist das selbe wie das Thumbnail eines Beitrags.</p>
<p>Per Voreinstellung wird das Beitragsbild unterhalb des Titels und der Metadaten (Datum, Lesezeit, Tags, Kategorien) angezeigt. Ich bevorzuge es jedoch, wegen meines alten WordPress-Themes, ganz oben über dem Beitrag.</p>
<p>Deshalb habe ich die Datei <code>themes/layouts/partials/post.html</code> nach <code>layouts/partials/post.html</code> kopiert und die <a  class='urlextern'  href="https://github.com/razonyang/hugo-theme-bootstrap/blob/master/layouts/partials/post.html#L8">Zeile 8 zwischen die Zeilen 3 und 4</a> verschoben.</p>
<p>Hier der Direktvergleich, oben die alte Ansicht ohne Beitragsbild und unten mit:
</p><figure class="image-caption"><a href="/2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-vor-featured-images.png"><picture>
                <source type="image/webp" srcset="/2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-vor-featured-images_hu5429d9a900f4ebdad3691a4878d7630e_538806_360x0_resize_q95_h2_catmullrom_3.webp 360w,/2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-vor-featured-images_hu5429d9a900f4ebdad3691a4878d7630e_538806_500x0_resize_q95_h2_catmullrom_3.webp 500w,/2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-vor-featured-images_hu5429d9a900f4ebdad3691a4878d7630e_538806_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-vor-featured-images_hu5429d9a900f4ebdad3691a4878d7630e_538806_360x0_resize_q95_h2_catmullrom_3.webp 360w, /2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-vor-featured-images_hu5429d9a900f4ebdad3691a4878d7630e_538806_500x0_resize_q95_h2_catmullrom_3.webp 500w, /2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-vor-featured-images_hu5429d9a900f4ebdad3691a4878d7630e_538806_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-vor-featured-images_hu5429d9a900f4ebdad3691a4878d7630e_538806_816x0_resize_q95_h2_catmullrom_3.webp" title="Ohne Beitragsbild" loading="lazy" width="816" height="565" /></picture></a><figcaption>Ohne Beitragsbild</figcaption></figure><p>
</p>
<p></p><figure class="image-caption"><a href="/2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-mit-featured-images.png"><picture>
                <source type="image/webp" srcset="/2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-mit-featured-images_hu5429d9a900f4ebdad3691a4878d7630e_1105935_360x0_resize_q95_h2_catmullrom_3.webp 360w,/2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-mit-featured-images_hu5429d9a900f4ebdad3691a4878d7630e_1105935_500x0_resize_q95_h2_catmullrom_3.webp 500w,/2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-mit-featured-images_hu5429d9a900f4ebdad3691a4878d7630e_1105935_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-mit-featured-images_hu5429d9a900f4ebdad3691a4878d7630e_1105935_360x0_resize_q95_h2_catmullrom_3.webp 360w, /2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-mit-featured-images_hu5429d9a900f4ebdad3691a4878d7630e_1105935_500x0_resize_q95_h2_catmullrom_3.webp 500w, /2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-mit-featured-images_hu5429d9a900f4ebdad3691a4878d7630e_1105935_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-blog-mit-featured-images_hu5429d9a900f4ebdad3691a4878d7630e_1105935_816x0_resize_q95_h2_catmullrom_3.webp" title="Mit Beitragsbild" loading="lazy" width="816" height="565" /></picture></a><figcaption>Mit Beitragsbild</figcaption></figure><p>
</p>

<h2 id="repo-einbinden" data-numberify>Repo einbinden<a class="anchor ms-1" href="#repo-einbinden"></a></h2>
<p>Per Voreinstellung ist es nur innerhalb des <code>/docs</code>-Layouts möglich, Links zum Repo der Website anzeigen zu lassen, sodass man z. B. die aktuelle Seite auf Github bearbeiten kann.</p>
<p>Das <a  class='urlextern'  href="https://github.com/razonyang/hugo-theme-bootstrap/blob/master/exampleSite/config/_default/params.toml#L165">hier</a> kommt in die <code>config.toml</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span>[<span style="color:#a6e22e">repo</span>]
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">url</span> = <span style="color:#e6db74">&#34;https://github.com/razonyang/hugo-theme-bootstrap&#34;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#75715e"># branch = &#34;main&#34;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#a6e22e">subPath</span> = <span style="color:#e6db74">&#34;exampleSite&#34;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#75715e"># dateFormat = &#34;02/01/2006, 15:04:05 PM&#34;</span></span></span></code></pre></div>
<p></p><figure class="image-caption"><picture><source type="png" srcset="/2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-repo-links.png" />
			         <img alt="" src="/2022/03/update-bootstrap-theme-hier-im-blog/images/2022-03-27-repo-links.png" title="" width="309" height="236" loading="lazy" /></picture><figcaption></figcaption></figure><p>
</p>
<p>Um die Infos zu einem Repo auch in der normalen Blogansicht anzuzeigen, kann man in die Datei <code>themes/hugo-theme-bootstrap/layouts/partials/hooks/sidebar-begin.html</code> das Partial einfügen: <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<pre><code>{{ partial &quot;docs/repo&quot; . }}
</code></pre>

<h2 id="karussell" data-numberify>Karussell<a class="anchor ms-1" href="#karussell"></a></h2>
<p>Fügt man in das <code>Front Matter</code> von Beiträgen den Parameter <code>carousel: true</code> ein, dann werden solche Beiträge auf der Startseite ganz oben in einem eigenen Bereich angezeigt und man kann mit Pfeiltasten zwischen diesen wechseln. Leider hat das bei mir noch nicht funktioniert, es sieht nämlich ganz anders aus als der Projektseite (<a  class='urlextern'  href="https://hbs.razonyang.com/en/">siehe hier</a>). <a  class='urlextern'  href="https://github.com/razonyang/hugo-theme-bootstrap/blob/master/layouts/partials/carousel.html">Hier das Partial dazu</a>.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a  class='urlextern'  href="https://github.com/razonyang/hugo-theme-bootstrap/discussions/487#discussioncomment-2445568">https://github.com/razonyang/hugo-theme-bootstrap/discussions/487#discussioncomment-2445568</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded><enclosure url="https://natenom.de/2022/03/update-bootstrap-theme-hier-im-blog/2022-03-27-blog-mit-featured-images.jpg" length="480700" type="image/jpeg"/></item><item><title>Mein neues Wiki mit Hugo – Neue Suche und andere Optimierungen</title><link>https://natenom.de/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/</link><pubDate>Tue, 22 Mar 2022 18:04:56 +0100</pubDate><guid>https://natenom.de/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/</guid><description><![CDATA[<p>Nachdem ich vor ein paar Tagen mein neues Wiki online stellte und komplett zufrieden war, schaute ich auch mal auf der Website <a  class='urlextern'  href="https://pagespeed.web.dev/">pagespeed.web.dev</a> nach, wie viele Punkte das Wiki bekommt.</p>
<p>Schock: Es waren nur 52 Punkte (mobile Ansicht) und 71 Punkte (Desktop). Das ist weit weniger, als bei meinem alten Wiki mit 74 Punkten (mobil) und 98 Punkten (Desktop).</p>]]></description><content:encoded><![CDATA[<p>Nachdem ich vor ein paar Tagen mein neues Wiki online stellte und komplett zufrieden war, schaute ich auch mal auf der Website <a  class='urlextern'  href="https://pagespeed.web.dev/">pagespeed.web.dev</a> nach, wie viele Punkte das Wiki bekommt.</p>
<p>Schock: Es waren nur 52 Punkte (mobile Ansicht) und 71 Punkte (Desktop). Das ist weit weniger, als bei meinem alten Wiki mit 74 Punkten (mobil) und 98 Punkten (Desktop).</p>
<p></p><figure class="image-caption"><picture>
                <source type="image/webp" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu135ddcacfb2813adbbe146be2d6de259_125346_a4ea59e36698e9072a94b870c5d3fa9a.webp 360w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu135ddcacfb2813adbbe146be2d6de259_125346_f92f8c0777e60ea91230c7486962cb43.webp 500w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu135ddcacfb2813adbbe146be2d6de259_125346_16971a4668dbfd25a4565e91c35ff5f4.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu135ddcacfb2813adbbe146be2d6de259_125346_a4ea59e36698e9072a94b870c5d3fa9a.webp 360w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu135ddcacfb2813adbbe146be2d6de259_125346_f92f8c0777e60ea91230c7486962cb43.webp 500w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu135ddcacfb2813adbbe146be2d6de259_125346_16971a4668dbfd25a4565e91c35ff5f4.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu135ddcacfb2813adbbe146be2d6de259_125346_16971a4668dbfd25a4565e91c35ff5f4.webp" title="" loading="lazy" width="816" height="710" /></picture><figcaption></figcaption></figure><p>
</p>
<p></p><figure class="image-caption"><picture>
                <source type="image/webp" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu135ddcacfb2813adbbe146be2d6de259_138964_e5ca22bca05f7a3ca9ca3b4faa7f9e32.webp 360w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu135ddcacfb2813adbbe146be2d6de259_138964_299ee1af79a9315fcdfe386e79939fa1.webp 500w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu135ddcacfb2813adbbe146be2d6de259_138964_536f501a2f6ff8fc8a903e7ab0167b6d.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu135ddcacfb2813adbbe146be2d6de259_138964_e5ca22bca05f7a3ca9ca3b4faa7f9e32.webp 360w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu135ddcacfb2813adbbe146be2d6de259_138964_299ee1af79a9315fcdfe386e79939fa1.webp 500w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu135ddcacfb2813adbbe146be2d6de259_138964_536f501a2f6ff8fc8a903e7ab0167b6d.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu135ddcacfb2813adbbe146be2d6de259_138964_536f501a2f6ff8fc8a903e7ab0167b6d.webp" title="" loading="lazy" width="816" height="710" /></picture><figcaption></figcaption></figure><p>
</p>
<p>Da das verwendete Theme mit dem Namen &ldquo;Docsy&rdquo; von Google stammt (das habe ich erst nach der Entscheidung dafür bemerkt), nahm ich an, dass auch die Punktezahl bei dem Test entsprechend hoch sein sollte.</p>
<p>Auch die Website des Themes <a  class='urlextern'  href="https://pagespeed.web.dev/report?url=https%3A%2F%2Fwww.docsy.dev%2F">erreicht dort nur 48 Punkte (mobil) und immerhin 96 Punkte (Desktop)</a>.</p>

<h2 id="unschön-gemachte-offlinesuche" data-numberify>Unschön gemachte Offlinesuche<a class="anchor ms-1" href="#unschön-gemachte-offlinesuche"></a></h2>
<p>Dann haben wir (Vri und ich) viel ausprobiert und haben herausgefunden, dass es hauptsächlich an der verwendeten Offlinesuche des Themes liegt. Schaltet man diese ab, dann steigt das Ergebnis auf 89 Punkte (mobile Ansicht) und 100 Punkte (Desktop).</p>
<p>Der Grund: Die Index-Datei für die Offlinesuche wird bei jedem Seitenaufruf automatisch abgerufen und ausgewertet. Bei einer ungepackten Größe von ca. 800 KiB der json-Datei ist das nicht unerheblich.</p>

<h2 id="unschönes-css" data-numberify>Unschönes CSS<a class="anchor ms-1" href="#unschönes-css"></a></h2>
<p>Aber auch ein &ldquo;Preload&rdquo; eines CSS ist nicht gerade schön gemacht. Dieses bewirkt, dass es relativ lange dauert, bevor überhaupt Inhalte im Browser angezeigt werden.</p>

<h2 id="was-nun" data-numberify>Was nun?<a class="anchor ms-1" href="#was-nun"></a></h2>
<p>Mir ist grundsätzlich egal, wie viele Menschen auf meinen Webseiten gucken und ich habe deshalb dazu auch keine Auswertungen. Mir ist jedoch wichtig, dass man die Inhalte findet, wenn man danach sucht. Und meines Wissens verweisen Suchmaschinen weniger gerne auf Webseiten, die relativ langsam sind. <em>(Stimmt dieses alte Halbwissen überhaupt noch?)</em></p>
<p>Abgesehen davon soll das neue Wiki auch auf älterer Hardware (Desktop und Smartphone) und langsamen Verbindungen gut funktionieren.</p>

<h2 id="optimierungen" data-numberify>Optimierungen<a class="anchor ms-1" href="#optimierungen"></a></h2>

<h3 id="css-ohne-preload" data-numberify>CSS ohne Preload<a class="anchor ms-1" href="#css-ohne-preload"></a></h3>
<p>Um das Preload aus dem CSS herauszubekommen, kopiert man die Datei <code>themes/docsy/layouts/partials/head-css.html</code> nach <code>layouts/partials/head-css.html</code> und ändert die unteren Zeilen von:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>&lt;link rel=&#34;preload&#34; href=&#34;{{ $css.RelPermalink }}&#34; as=&#34;style&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;link href=&#34;{{ $css.RelPermalink }}&#34; rel=&#34;stylesheet&#34; integrity=&#34;{{ $css.Data.integrity }}&#34;&gt;</span></span></code></pre></div>
<p>Nach:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>&lt;link href=&#34;{{ $css.RelPermalink }}&#34; rel=&#34;stylesheet&#34;&gt;
</span></span><span style="display:flex;"><span>&lt;link href=&#34;{{ $css.RelPermalink }}&#34; rel=&#34;stylesheet&#34; integrity=&#34;{{ $css.Data.integrity }}&#34;&gt;</span></span></code></pre></div></p>
<div class="shortcode-notice update">
    <div class="shortcode-notice-title update">
        Update</div>
    <div class="notice-content">25.03.2022: Jemand hat mich darauf hingewiesen, dass diese beiden geänderten Zeilen zwei mal das selbe einbinden. Ich habe daher die letzte mit <code>integrity=</code> gelöscht.</div>
</div>

<h3 id="suche-nur-auf-bestimmten-seiten" data-numberify>Suche nur auf bestimmten Seiten<a class="anchor ms-1" href="#suche-nur-auf-bestimmten-seiten"></a></h3>
<p>Eine Möglichkeit ist es, die eingebaute Offlinesuche des Themes nicht mehr auf allen Seiten im Wiki anzuzeigen, sondern nur auf einer eigenen Suchseite.</p>
<p>Ich bin kein Profi bei sowas, habe mir den Quelltext des Themes angeschaut und keine Stelle gefunden, das zu tun und diese Möglichkeit daher verworfen. Aber schlaue Menschen können hier bestimmt mehr und könnten das für sich so umsetzen. Daher sei diese Möglichkeit genannt.</p>

<h3 id="andere-implementierung-für-die-suche" data-numberify>Andere Implementierung für die Suche<a class="anchor ms-1" href="#andere-implementierung-für-die-suche"></a></h3>
<p>Eine andere Möglichkeit ist, die eingebaute Suchfunktion zu deaktivieren und selbst eine zu implementieren. Ich habe mich für die Methode entschieden, die in <a  class='urlextern'  href="https://gist.github.com/eddiewebb/735feb48f50f0ddd65ae5606a1cb41ae#static-js-searchjs">diesem Gist beschrieben</a> wird. (In der <a  class='urlextern'  href="https://gohugo.io/tools/search/">Hugo-Dokumentation wird u. a. darauf verwiesen</a>.</p>
<p>Der Code im Gist steht unter der MIT-Lizenz zur Verfügung, <a  class='urlextern'  href="https://gist.github.com/eddiewebb/735feb48f50f0ddd65ae5606a1cb41ae#mit-license">siehe hier</a>.</p>

<h4 id="zu-erstellende-dateien-und-verzeichnisse" data-numberify>Zu erstellende Dateien und Verzeichnisse<a class="anchor ms-1" href="#zu-erstellende-dateien-und-verzeichnisse"></a></h4>
<ol>
<li>
<p>In die Datei <code>config.toml</code>:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>[outputs]
</span></span><span style="display:flex;"><span>home = [ &#34;HTML&#34;, &#34;JSON&#34; ]</span></span></code></pre></div></p>
</li>
<li>
<p>In die Datei <code>content/de/search/_index.md</code>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>---
</span></span><span style="display:flex;"><span>title: &#34;Suche&#34;
</span></span><span style="display:flex;"><span>sitemap:
</span></span><span style="display:flex;"><span>  priority : 0.1
</span></span><span style="display:flex;"><span>layout: &#34;search&#34;
</span></span><span style="display:flex;"><span>weight: 20
</span></span><span style="display:flex;"><span>menu:
</span></span><span style="display:flex;"><span>  main:
</span></span><span style="display:flex;"><span>    weight: 50
</span></span><span style="display:flex;"><span>---</span></span></code></pre></div></p>
</li>
<li>
<p>In die Datei <code>layouts/_default/index.json</code>:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>{{- $.Scratch.Add &#34;index&#34; slice -}}
</span></span><span style="display:flex;"><span>{{- range .Site.RegularPages -}}
</span></span><span style="display:flex;"><span>    {{- $.Scratch.Add &#34;index&#34; (dict &#34;title&#34; .Title &#34;tags&#34; .Params.tags &#34;categories&#34; .Params.categories &#34;contents&#34; .Plain &#34;permalink&#34; .Permalink) -}}
</span></span><span style="display:flex;"><span>{{- end -}}
</span></span><span style="display:flex;"><span>{{- $.Scratch.Get &#34;index&#34; | jsonify -}}</span></span></code></pre></div></p>
</li>
</ol>
<p>Beim nächsten Bau der Website wird die Datei <code>/index.json</code> automatisch erstellt.</p>
<ol start="4">
<li>
<p>In die Datei <code>layouts/_default/search.html</code> (abgeändert vom Original, da es nicht funktioniert hat):
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-html" data-lang="html"><span style="display:flex;"><span>{{ define &#34;main&#34; }}
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/js/offsearch/jquery.min.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/js/offsearch/fuse.min.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/js/offsearch/jquery.mark.min.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">src</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;/js/offsearch/offsearch.js&#34;</span>&gt;&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">section</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;offsearch&#34;</span>&gt;
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">noscript</span>&gt;&lt;<span style="color:#f92672">p</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;offsearch-noscript&#34;</span>&gt;Diese Suchfunktion benötigt JavaScript.&lt;/<span style="color:#f92672">p</span>&gt;&lt;/<span style="color:#f92672">noscript</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">class</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;offsearch&#34;</span> &gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">form</span> <span style="color:#a6e22e">action</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;{{ &#34;</span><span style="color:#a6e22e">search</span><span style="color:#960050;background-color:#1e0010">&#34;</span> <span style="color:#960050;background-color:#1e0010">|</span> <span style="color:#a6e22e">absURL</span> <span style="color:#960050;background-color:#1e0010">}}&#34;</span>&gt;
</span></span><span style="display:flex;"><span>      &lt;<span style="color:#f92672">input</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;search-query&#34;</span> <span style="color:#a6e22e">name</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;s&#34;</span> <span style="color:#a6e22e">placeholder</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Wiki durchsuchen…&#34;</span> <span style="color:#a6e22e">aria-label</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Search&#34;</span> /&gt;
</span></span><span style="display:flex;"><span>    &lt;/<span style="color:#f92672">form</span>&gt;
</span></span><span style="display:flex;"><span>    &lt;<span style="color:#f92672">div</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;search-results&#34;</span>&gt;&lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>  &lt;/<span style="color:#f92672">div</span>&gt;
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">section</span>&gt;
</span></span><span style="display:flex;"><span><span style="color:#75715e">&lt;!-- this template is sucked in by search.js and appended to the search-results div above. So editing here will adjust style --&gt;</span>
</span></span><span style="display:flex;"><span>&lt;<span style="color:#f92672">script</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;search-result-template&#34;</span> <span style="color:#a6e22e">type</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;text/x-js-template&#34;</span>&gt;
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;</span><span style="color:#a6e22e">div</span> <span style="color:#a6e22e">id</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;summary-${key}&#34;</span><span style="color:#f92672">&gt;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&lt;</span><span style="color:#a6e22e">h4</span><span style="color:#f92672">&gt;&lt;</span><span style="color:#a6e22e">a</span> <span style="color:#a6e22e">href</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#34;${link}&#34;</span><span style="color:#f92672">&gt;</span><span style="color:#a6e22e">$</span>{<span style="color:#a6e22e">title</span>}<span style="color:#f92672">&lt;</span><span style="color:#960050;background-color:#1e0010">/a&gt;&lt;/h4&gt;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#f92672">&lt;</span><span style="color:#a6e22e">p</span><span style="color:#f92672">&gt;</span><span style="color:#a6e22e">$</span>{<span style="color:#a6e22e">snippet</span>}<span style="color:#f92672">&lt;</span><span style="color:#960050;background-color:#1e0010">/p&gt;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#a6e22e">$</span>{ <span style="color:#a6e22e">isset</span> <span style="color:#a6e22e">tags</span> }<span style="color:#f92672">&lt;</span><span style="color:#a6e22e">p</span><span style="color:#f92672">&gt;</span><span style="color:#a6e22e">Tags</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">$</span>{<span style="color:#a6e22e">tags</span>}<span style="color:#f92672">&lt;</span><span style="color:#960050;background-color:#1e0010">/p&gt;${ end }</span>
</span></span><span style="display:flex;"><span>      <span style="color:#a6e22e">$</span>{ <span style="color:#a6e22e">isset</span> <span style="color:#a6e22e">categories</span> }<span style="color:#f92672">&lt;</span><span style="color:#a6e22e">p</span><span style="color:#f92672">&gt;</span><span style="color:#a6e22e">Categories</span><span style="color:#f92672">:</span> <span style="color:#a6e22e">$</span>{<span style="color:#a6e22e">categories</span>}<span style="color:#f92672">&lt;</span><span style="color:#960050;background-color:#1e0010">/p&gt;${ end }</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">&lt;</span><span style="color:#960050;background-color:#1e0010">/div&gt;</span>
</span></span><span style="display:flex;"><span>&lt;/<span style="color:#f92672">script</span>&gt;
</span></span><span style="display:flex;"><span>{{ end }}</span></span></code></pre></div></p>
</li>
<li>
<p>Ich habe das Verzeichnis <code>static/js/offsearch/</code> erstellt, wo später die notwendigen JavaScript-Dateien bereitgestellt werden.</p>
</li>
<li>
<p>JavaScript selbst hosten: Ich habe die in der Originaldatei <code>search.html</code> eingebundenen Dateien ins Verzeichnis <code>static/js/offsearch/</code> heruntergeladen, diese entsprechend lokal eingebunden und hoste sie nun selbst.</p>
</li>
<li>
<p>JavaScript für die Suchfunktion
Diese Datei kommt nach <code>static/js/offsearch/offsearch.js</code>:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-javascript" data-lang="javascript"><span style="display:flex;"><span><span style="color:#a6e22e">summaryInclude</span><span style="color:#f92672">=</span><span style="color:#ae81ff">60</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> <span style="color:#a6e22e">fuseOptions</span> <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">shouldSort</span><span style="color:#f92672">:</span> <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">includeMatches</span><span style="color:#f92672">:</span> <span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">threshold</span><span style="color:#f92672">:</span> <span style="color:#ae81ff">0.0</span>,
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">tokenize</span><span style="color:#f92672">:</span><span style="color:#66d9ef">true</span>,
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">location</span><span style="color:#f92672">:</span> <span style="color:#ae81ff">0</span>,
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">distance</span><span style="color:#f92672">:</span> <span style="color:#ae81ff">100</span>,
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">maxPatternLength</span><span style="color:#f92672">:</span> <span style="color:#ae81ff">32</span>,
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">minMatchCharLength</span><span style="color:#f92672">:</span> <span style="color:#ae81ff">1</span>,
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">keys</span><span style="color:#f92672">:</span> [
</span></span><span style="display:flex;"><span>    {<span style="color:#a6e22e">name</span><span style="color:#f92672">:</span><span style="color:#e6db74">&#34;title&#34;</span>,<span style="color:#a6e22e">weight</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0.8</span>},
</span></span><span style="display:flex;"><span>    {<span style="color:#a6e22e">name</span><span style="color:#f92672">:</span><span style="color:#e6db74">&#34;contents&#34;</span>,<span style="color:#a6e22e">weight</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0.5</span>},
</span></span><span style="display:flex;"><span>    {<span style="color:#a6e22e">name</span><span style="color:#f92672">:</span><span style="color:#e6db74">&#34;tags&#34;</span>,<span style="color:#a6e22e">weight</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0.3</span>},
</span></span><span style="display:flex;"><span>    {<span style="color:#a6e22e">name</span><span style="color:#f92672">:</span><span style="color:#e6db74">&#34;categories&#34;</span>,<span style="color:#a6e22e">weight</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0.3</span>}
</span></span><span style="display:flex;"><span>]
</span></span><span style="display:flex;"><span>};
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> <span style="color:#a6e22e">searchQuery</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">param</span>(<span style="color:#e6db74">&#34;s&#34;</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">searchQuery</span>){
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#34;#search-query&#34;</span>).<span style="color:#a6e22e">val</span>(<span style="color:#a6e22e">searchQuery</span>);
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">executeSearch</span>(<span style="color:#a6e22e">searchQuery</span>);
</span></span><span style="display:flex;"><span>}<span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#39;#search-results&#39;</span>).<span style="color:#a6e22e">append</span>(<span style="color:#e6db74">&#34;&lt;p&gt;Please enter a word or phrase above&lt;/p&gt;&#34;</span>);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">function</span> <span style="color:#a6e22e">executeSearch</span>(<span style="color:#a6e22e">searchQuery</span>){
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">$</span>.<span style="color:#a6e22e">getJSON</span>( <span style="color:#e6db74">&#34;/index.json&#34;</span>, <span style="color:#66d9ef">function</span>( <span style="color:#a6e22e">data</span> ) {
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">pages</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">data</span>;
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">fuse</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> <span style="color:#a6e22e">Fuse</span>(<span style="color:#a6e22e">pages</span>, <span style="color:#a6e22e">fuseOptions</span>);
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">result</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">fuse</span>.<span style="color:#a6e22e">search</span>(<span style="color:#a6e22e">searchQuery</span>);
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">console</span>.<span style="color:#a6e22e">log</span>({<span style="color:#e6db74">&#34;matches&#34;</span><span style="color:#f92672">:</span><span style="color:#a6e22e">result</span>});
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">result</span>.<span style="color:#a6e22e">length</span> <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">0</span>){
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">populateResults</span>(<span style="color:#a6e22e">result</span>);
</span></span><span style="display:flex;"><span>    }<span style="color:#66d9ef">else</span>{
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#39;#search-results&#39;</span>).<span style="color:#a6e22e">append</span>(<span style="color:#e6db74">&#34;&lt;p&gt;No matches found&lt;/p&gt;&#34;</span>);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>});
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">function</span> <span style="color:#a6e22e">populateResults</span>(<span style="color:#a6e22e">result</span>){
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">$</span>.<span style="color:#a6e22e">each</span>(<span style="color:#a6e22e">result</span>,<span style="color:#66d9ef">function</span>(<span style="color:#a6e22e">key</span>,<span style="color:#a6e22e">value</span>){
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">contents</span><span style="color:#f92672">=</span> <span style="color:#a6e22e">value</span>.<span style="color:#a6e22e">item</span>.<span style="color:#a6e22e">contents</span>;
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">snippet</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#34;</span>;
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">snippetHighlights</span><span style="color:#f92672">=</span>[];
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">tags</span> <span style="color:#f92672">=</span>[];
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span>( <span style="color:#a6e22e">fuseOptions</span>.<span style="color:#a6e22e">tokenize</span> ){
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">snippetHighlights</span>.<span style="color:#a6e22e">push</span>(<span style="color:#a6e22e">searchQuery</span>);
</span></span><span style="display:flex;"><span>    }<span style="color:#66d9ef">else</span>{
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">$</span>.<span style="color:#a6e22e">each</span>(<span style="color:#a6e22e">value</span>.<span style="color:#a6e22e">matches</span>,<span style="color:#66d9ef">function</span>(<span style="color:#a6e22e">matchKey</span>,<span style="color:#a6e22e">mvalue</span>){
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">mvalue</span>.<span style="color:#a6e22e">key</span> <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;tags&#34;</span> <span style="color:#f92672">||</span> <span style="color:#a6e22e">mvalue</span>.<span style="color:#a6e22e">key</span> <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;categories&#34;</span> ){
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">snippetHighlights</span>.<span style="color:#a6e22e">push</span>(<span style="color:#a6e22e">mvalue</span>.<span style="color:#a6e22e">value</span>);
</span></span><span style="display:flex;"><span>        }<span style="color:#66d9ef">else</span> <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">mvalue</span>.<span style="color:#a6e22e">key</span> <span style="color:#f92672">==</span> <span style="color:#e6db74">&#34;contents&#34;</span>){
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">start</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">mvalue</span>.<span style="color:#a6e22e">indices</span>[<span style="color:#ae81ff">0</span>][<span style="color:#ae81ff">0</span>]<span style="color:#f92672">-</span><span style="color:#a6e22e">summaryInclude</span><span style="color:#f92672">&gt;</span><span style="color:#ae81ff">0</span><span style="color:#f92672">?</span><span style="color:#a6e22e">mvalue</span>.<span style="color:#a6e22e">indices</span>[<span style="color:#ae81ff">0</span>][<span style="color:#ae81ff">0</span>]<span style="color:#f92672">-</span><span style="color:#a6e22e">summaryInclude</span><span style="color:#f92672">:</span><span style="color:#ae81ff">0</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">end</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">mvalue</span>.<span style="color:#a6e22e">indices</span>[<span style="color:#ae81ff">0</span>][<span style="color:#ae81ff">1</span>]<span style="color:#f92672">+</span><span style="color:#a6e22e">summaryInclude</span><span style="color:#f92672">&lt;</span><span style="color:#a6e22e">contents</span>.<span style="color:#a6e22e">length</span><span style="color:#f92672">?</span><span style="color:#a6e22e">mvalue</span>.<span style="color:#a6e22e">indices</span>[<span style="color:#ae81ff">0</span>][<span style="color:#ae81ff">1</span>]<span style="color:#f92672">+</span><span style="color:#a6e22e">summaryInclude</span><span style="color:#f92672">:</span><span style="color:#a6e22e">contents</span>.<span style="color:#a6e22e">length</span>;
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">snippet</span> <span style="color:#f92672">+=</span> <span style="color:#a6e22e">contents</span>.<span style="color:#a6e22e">substring</span>(<span style="color:#a6e22e">start</span>,<span style="color:#a6e22e">end</span>);
</span></span><span style="display:flex;"><span>        <span style="color:#a6e22e">snippetHighlights</span>.<span style="color:#a6e22e">push</span>(<span style="color:#a6e22e">mvalue</span>.<span style="color:#a6e22e">value</span>.<span style="color:#a6e22e">substring</span>(<span style="color:#a6e22e">mvalue</span>.<span style="color:#a6e22e">indices</span>[<span style="color:#ae81ff">0</span>][<span style="color:#ae81ff">0</span>],<span style="color:#a6e22e">mvalue</span>.<span style="color:#a6e22e">indices</span>[<span style="color:#ae81ff">0</span>][<span style="color:#ae81ff">1</span>]<span style="color:#f92672">-</span><span style="color:#a6e22e">mvalue</span>.<span style="color:#a6e22e">indices</span>[<span style="color:#ae81ff">0</span>][<span style="color:#ae81ff">0</span>]<span style="color:#f92672">+</span><span style="color:#ae81ff">1</span>));
</span></span><span style="display:flex;"><span>        }
</span></span><span style="display:flex;"><span>    });
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">snippet</span>.<span style="color:#a6e22e">length</span><span style="color:#f92672">&lt;</span><span style="color:#ae81ff">1</span>){
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">snippet</span> <span style="color:#f92672">+=</span> <span style="color:#a6e22e">contents</span>.<span style="color:#a6e22e">substring</span>(<span style="color:#ae81ff">0</span>,<span style="color:#a6e22e">summaryInclude</span><span style="color:#f92672">*</span><span style="color:#ae81ff">2</span>);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">//pull template from hugo templarte definition
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">templateDefinition</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#39;#search-result-template&#39;</span>).<span style="color:#a6e22e">html</span>();
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">//replace values
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#66d9ef">var</span> <span style="color:#a6e22e">output</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">render</span>(<span style="color:#a6e22e">templateDefinition</span>,{<span style="color:#a6e22e">key</span><span style="color:#f92672">:</span><span style="color:#a6e22e">key</span>,<span style="color:#a6e22e">title</span><span style="color:#f92672">:</span><span style="color:#a6e22e">value</span>.<span style="color:#a6e22e">item</span>.<span style="color:#a6e22e">title</span>,<span style="color:#a6e22e">link</span><span style="color:#f92672">:</span><span style="color:#a6e22e">value</span>.<span style="color:#a6e22e">item</span>.<span style="color:#a6e22e">permalink</span>,<span style="color:#a6e22e">tags</span><span style="color:#f92672">:</span><span style="color:#a6e22e">value</span>.<span style="color:#a6e22e">item</span>.<span style="color:#a6e22e">tags</span>,<span style="color:#a6e22e">categories</span><span style="color:#f92672">:</span><span style="color:#a6e22e">value</span>.<span style="color:#a6e22e">item</span>.<span style="color:#a6e22e">categories</span>,<span style="color:#a6e22e">snippet</span><span style="color:#f92672">:</span><span style="color:#a6e22e">snippet</span>});
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#39;#search-results&#39;</span>).<span style="color:#a6e22e">append</span>(<span style="color:#a6e22e">output</span>);
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">$</span>.<span style="color:#a6e22e">each</span>(<span style="color:#a6e22e">snippetHighlights</span>,<span style="color:#66d9ef">function</span>(<span style="color:#a6e22e">snipkey</span>,<span style="color:#a6e22e">snipvalue</span>){
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">$</span>(<span style="color:#e6db74">&#34;#summary-&#34;</span><span style="color:#f92672">+</span><span style="color:#a6e22e">key</span>).<span style="color:#a6e22e">mark</span>(<span style="color:#a6e22e">snipvalue</span>);
</span></span><span style="display:flex;"><span>    });
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>});
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">function</span> <span style="color:#a6e22e">param</span>(<span style="color:#a6e22e">name</span>) {
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> decodeURIComponent((<span style="color:#a6e22e">location</span>.<span style="color:#a6e22e">search</span>.<span style="color:#a6e22e">split</span>(<span style="color:#a6e22e">name</span> <span style="color:#f92672">+</span> <span style="color:#e6db74">&#39;=&#39;</span>)[<span style="color:#ae81ff">1</span>] <span style="color:#f92672">||</span> <span style="color:#e6db74">&#39;&#39;</span>).<span style="color:#a6e22e">split</span>(<span style="color:#e6db74">&#39;&amp;&#39;</span>)[<span style="color:#ae81ff">0</span>]).<span style="color:#a6e22e">replace</span>(<span style="color:#e6db74">/\+/g</span>, <span style="color:#e6db74">&#39; &#39;</span>);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">function</span> <span style="color:#a6e22e">render</span>(<span style="color:#a6e22e">templateString</span>, <span style="color:#a6e22e">data</span>) {
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">var</span> <span style="color:#a6e22e">conditionalMatches</span>,<span style="color:#a6e22e">conditionalPattern</span>,<span style="color:#a6e22e">copy</span>;
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">conditionalPattern</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">/\$\{\s*isset ([a-zA-Z]*) \s*\}(.*)\$\{\s*end\s*}/g</span>;
</span></span><span style="display:flex;"><span><span style="color:#75715e">//since loop below depends on re.lastInxdex, we use a copy to capture any manipulations whilst inside the loop
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#a6e22e">copy</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">templateString</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">while</span> ((<span style="color:#a6e22e">conditionalMatches</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">conditionalPattern</span>.<span style="color:#a6e22e">exec</span>(<span style="color:#a6e22e">templateString</span>)) <span style="color:#f92672">!==</span> <span style="color:#66d9ef">null</span>) {
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span>(<span style="color:#a6e22e">data</span>[<span style="color:#a6e22e">conditionalMatches</span>[<span style="color:#ae81ff">1</span>]]){
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">//valid key, remove conditionals, leave contents.
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#a6e22e">copy</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">copy</span>.<span style="color:#a6e22e">replace</span>(<span style="color:#a6e22e">conditionalMatches</span>[<span style="color:#ae81ff">0</span>],<span style="color:#a6e22e">conditionalMatches</span>[<span style="color:#ae81ff">2</span>]);
</span></span><span style="display:flex;"><span>    }<span style="color:#66d9ef">else</span>{
</span></span><span style="display:flex;"><span>    <span style="color:#75715e">//not valid, remove entire section
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>    <span style="color:#a6e22e">copy</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">copy</span>.<span style="color:#a6e22e">replace</span>(<span style="color:#a6e22e">conditionalMatches</span>[<span style="color:#ae81ff">0</span>],<span style="color:#e6db74">&#39;&#39;</span>);
</span></span><span style="display:flex;"><span>    }
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">templateString</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">copy</span>;
</span></span><span style="display:flex;"><span><span style="color:#75715e">//now any conditionals removed we can do simple substitution
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">var</span> <span style="color:#a6e22e">key</span>, <span style="color:#a6e22e">find</span>, <span style="color:#a6e22e">re</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> (<span style="color:#a6e22e">key</span> <span style="color:#66d9ef">in</span> <span style="color:#a6e22e">data</span>) {
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">find</span> <span style="color:#f92672">=</span> <span style="color:#e6db74">&#39;\\$\\{\\s*&#39;</span> <span style="color:#f92672">+</span> <span style="color:#a6e22e">key</span> <span style="color:#f92672">+</span> <span style="color:#e6db74">&#39;\\s*\\}&#39;</span>;
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">re</span> <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> RegExp(<span style="color:#a6e22e">find</span>, <span style="color:#e6db74">&#39;g&#39;</span>);
</span></span><span style="display:flex;"><span>    <span style="color:#a6e22e">templateString</span> <span style="color:#f92672">=</span> <span style="color:#a6e22e">templateString</span>.<span style="color:#a6e22e">replace</span>(<span style="color:#a6e22e">re</span>, <span style="color:#a6e22e">data</span>[<span style="color:#a6e22e">key</span>]);
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">return</span> <span style="color:#a6e22e">templateString</span>;
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">/* MIT License
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">Copyright 2022 Edward A. Webbinaro
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">Permission is hereby granted, free of charge, to any person
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">obtaining a copy of this software and associated documentation
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">files (the &#34;Software&#34;), to deal in the Software without
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">restriction, including without limitation the rights to
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">use, copy, modify, merge, publish, distribute, sublicense,
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">and/or sell copies of the Software, and to permit persons
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">to whom the Software is furnished to do so, subject to
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">the following conditions:
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">The above copyright notice and this permission notice shall
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">be included in all copies or substantial portions of the Software.
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">THE SOFTWARE IS PROVIDED &#34;AS IS&#34;, WITHOUT WARRANTY OF
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">DEALINGS IN THE SOFTWARE. */</span></span></span></code></pre></div></p>
</li>
</ol>

<h4 id="noch-etwas-css-für-die-neue-suchfunktion" data-numberify>Noch etwas CSS für die neue Suchfunktion<a class="anchor ms-1" href="#noch-etwas-css-für-die-neue-suchfunktion"></a></h4>
<p>Dieses CSS kommt in die Datei <code>assets/css/_styles_project.scss</code>:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>.offsearch form {margin-bottom: 40px;}
</span></span><span style="display:flex;"><span>.offsearch #search-query {width: 100%; padding: 10px;}
</span></span><span style="display:flex;"><span>.offsearch #search-results p {hyphens: auto;}</span></span></code></pre></div></p>

<h4 id="ergebnis--suchfunktion-auf-einer-einzelnen-seite" data-numberify>Ergebnis – Suchfunktion auf einer einzelnen Seite<a class="anchor ms-1" href="#ergebnis--suchfunktion-auf-einer-einzelnen-seite"></a></h4>
<p>Die Suche findet man jetzt unter <a  href="https://wiki.natenom.de/search/">wiki.natenom.com/search/</a> und diese Seite ist immer rechts oben verlinkt.</p>
<p>Für die Zukunft ist geplant, diese als Suchfeld in der Navigation einzufügen.</p>
<p>Ich bin sehr zufrieden mit der neuen Suche. Im Vergleich zu der Suche im Blog ist sie extrem schnell und zeigt die Ergebnisse auch schön an.</p>
<p>Deshalb werde ich diese Suche in den nächsten Tagen vermutlich auch in meinem Blog einbauen. Dort dauert die Suche aktuell sehr lange und verursacht sehr viel CPU-Last, obwohl dort als auch im neuen Wiki <a  class='urlextern'  href="https://fusejs.io/">fuse.js</a> genutzt wird.</p>
<p></p><figure class="image-caption"><a href="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-neue-suche-im-neuen-wiki.png"><picture>
                <source type="image/webp" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-neue-suche-im-neuen-wiki_hu6cea242130cd4f5322f24f37902a6af3_79290_360x0_resize_q95_h2_catmullrom_3.webp 360w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-neue-suche-im-neuen-wiki_hu6cea242130cd4f5322f24f37902a6af3_79290_500x0_resize_q95_h2_catmullrom_3.webp 500w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-neue-suche-im-neuen-wiki_hu6cea242130cd4f5322f24f37902a6af3_79290_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-neue-suche-im-neuen-wiki_hu6cea242130cd4f5322f24f37902a6af3_79290_360x0_resize_q95_h2_catmullrom_3.webp 360w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-neue-suche-im-neuen-wiki_hu6cea242130cd4f5322f24f37902a6af3_79290_500x0_resize_q95_h2_catmullrom_3.webp 500w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-neue-suche-im-neuen-wiki_hu6cea242130cd4f5322f24f37902a6af3_79290_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-neue-suche-im-neuen-wiki_hu6cea242130cd4f5322f24f37902a6af3_79290_816x0_resize_q95_h2_catmullrom_3.webp" title="Neue Suche im neuen Wiki" loading="lazy" width="816" height="446" /></picture></a><figcaption>Neue Suche im neuen Wiki</figcaption></figure><p>
</p>
<p>Bei der Punktezahl erreicht das Wiki jetzt in 89 Punkte (mobil) (statt zuvor 52) und 100 Punkte (Desktop) (statt zuvor 71).</p>
<p></p><figure class="image-caption"><picture>
                <source type="image/webp" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu800f6acdbdfaf0c6f3e590b3cc99fe6e_125702_eea79d505cbc6af6a93ea0eef27a93d9.webp 360w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu800f6acdbdfaf0c6f3e590b3cc99fe6e_125702_857e6e6665f0ef0b3d5a1ebffac440e5.webp 500w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu800f6acdbdfaf0c6f3e590b3cc99fe6e_125702_2ee73814ff2766e624c6c5d603375e37.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu800f6acdbdfaf0c6f3e590b3cc99fe6e_125702_eea79d505cbc6af6a93ea0eef27a93d9.webp 360w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu800f6acdbdfaf0c6f3e590b3cc99fe6e_125702_857e6e6665f0ef0b3d5a1ebffac440e5.webp 500w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu800f6acdbdfaf0c6f3e590b3cc99fe6e_125702_2ee73814ff2766e624c6c5d603375e37.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu800f6acdbdfaf0c6f3e590b3cc99fe6e_125702_2ee73814ff2766e624c6c5d603375e37.webp" title="89 Punkte für die mobile Ansicht" loading="lazy" width="816" height="708" /></picture><figcaption>89 Punkte für die mobile Ansicht</figcaption></figure><p>
</p>
<p></p><figure class="image-caption"><picture>
                <source type="image/webp" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu800f6acdbdfaf0c6f3e590b3cc99fe6e_137423_85d4f421e40d249d7e99097df0b0191d.webp 360w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu800f6acdbdfaf0c6f3e590b3cc99fe6e_137423_73b519f1fd1690d9fae279e1f0702133.webp 500w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu800f6acdbdfaf0c6f3e590b3cc99fe6e_137423_4f265062b97adbd5e9cfce3f7cb2f726.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu800f6acdbdfaf0c6f3e590b3cc99fe6e_137423_85d4f421e40d249d7e99097df0b0191d.webp 360w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu800f6acdbdfaf0c6f3e590b3cc99fe6e_137423_73b519f1fd1690d9fae279e1f0702133.webp 500w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu800f6acdbdfaf0c6f3e590b3cc99fe6e_137423_4f265062b97adbd5e9cfce3f7cb2f726.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/_hu800f6acdbdfaf0c6f3e590b3cc99fe6e_137423_4f265062b97adbd5e9cfce3f7cb2f726.webp" title="100 Punkte für die Desktop Ansicht" loading="lazy" width="816" height="708" /></picture><figcaption>100 Punkte für die Desktop Ansicht</figcaption></figure><p>
</p>

<h3 id="sidebar" data-numberify>Sidebar<a class="anchor ms-1" href="#sidebar"></a></h3>
<p>Ursprünglich hatte ich die Sidebar links (Seitenverzeichnis) so eingestellt, dass man jeden Bereich einzeln aufklappen/zuklappen konnte. Dadurch wurden aber im fertigen HTML ungefähr 2000 Zeilen nur für die Sidebar eingefügt. Übersichtlicher wurde es dadurch aber nicht.</p>
<p></p><figure class="image-caption"><a href="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-aufklappbar.png"><picture>
                <source type="image/webp" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-aufklappbar_hua1c850ead444d36ce113802bfa5b5f8c_447107_360x0_resize_q95_h2_catmullrom_3.webp 360w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-aufklappbar_hua1c850ead444d36ce113802bfa5b5f8c_447107_500x0_resize_q95_h2_catmullrom_3.webp 500w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-aufklappbar_hua1c850ead444d36ce113802bfa5b5f8c_447107_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-aufklappbar_hua1c850ead444d36ce113802bfa5b5f8c_447107_360x0_resize_q95_h2_catmullrom_3.webp 360w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-aufklappbar_hua1c850ead444d36ce113802bfa5b5f8c_447107_500x0_resize_q95_h2_catmullrom_3.webp 500w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-aufklappbar_hua1c850ead444d36ce113802bfa5b5f8c_447107_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-aufklappbar_hua1c850ead444d36ce113802bfa5b5f8c_447107_816x0_resize_q95_h2_catmullrom_3.webp" title="sidebar_menu_foldable = true" loading="lazy" width="816" height="523" /></picture></a><figcaption>sidebar_menu_foldable = true</figcaption></figure><p>
</p>
<p>Deshalb habe ich die Sidebar jetzt so eingestellt, dass aufklappen/einklappen nicht mehr möglich ist. Es ist immer nur der aktuelle Bereich geöffnet.</p>
<p>Hier gibt es vom Theme mehrere Einstellungsmöglichkeiten im Bereich <code>params</code> in der Datei <code>config.toml</code>:</p>
<ul>
<li><code>ui.ul_show</code> – Gibt an, bis zu welcher Anzahl die Unterebenen des aktuellen Bereichs geöffnet dargestellt werden.
<ul>
<li>Hier mit <code>ui.ul_show = 1</code> </p><figure class="image-caption"><a href="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-1.png"><picture>
                <source type="image/webp" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-1_hu703f199450f0b9f1b2eada2e0196058a_445419_360x0_resize_q95_h2_catmullrom_3.webp 360w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-1_hu703f199450f0b9f1b2eada2e0196058a_445419_500x0_resize_q95_h2_catmullrom_3.webp 500w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-1_hu703f199450f0b9f1b2eada2e0196058a_445419_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-1_hu703f199450f0b9f1b2eada2e0196058a_445419_360x0_resize_q95_h2_catmullrom_3.webp 360w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-1_hu703f199450f0b9f1b2eada2e0196058a_445419_500x0_resize_q95_h2_catmullrom_3.webp 500w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-1_hu703f199450f0b9f1b2eada2e0196058a_445419_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-1_hu703f199450f0b9f1b2eada2e0196058a_445419_816x0_resize_q95_h2_catmullrom_3.webp" title="ui.ul_show = 1" loading="lazy" width="816" height="523" /></picture></a><figcaption>ui.ul_show = 1</figcaption></figure><p>
</li>
<li>Hier mit <code>ui.ul_show = 2</code> </p><figure class="image-caption"><a href="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-2.png"><picture>
                <source type="image/webp" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-2_hu4633a6a92cfe403971b70afbf57f7346_446861_360x0_resize_q95_h2_catmullrom_3.webp 360w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-2_hu4633a6a92cfe403971b70afbf57f7346_446861_500x0_resize_q95_h2_catmullrom_3.webp 500w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-2_hu4633a6a92cfe403971b70afbf57f7346_446861_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-2_hu4633a6a92cfe403971b70afbf57f7346_446861_360x0_resize_q95_h2_catmullrom_3.webp 360w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-2_hu4633a6a92cfe403971b70afbf57f7346_446861_500x0_resize_q95_h2_catmullrom_3.webp 500w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-2_hu4633a6a92cfe403971b70afbf57f7346_446861_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-nicht-aufklappbar-ul-show-2_hu4633a6a92cfe403971b70afbf57f7346_446861_816x0_resize_q95_h2_catmullrom_3.webp" title="ui.ul_show = 2" loading="lazy" width="816" height="523" /></picture></a><figcaption>ui.ul_show = 2</figcaption></figure><p>
</li>
</ul>
</li>
<li><code>sidebar_menu_compact</code> – Man kann auch alles immer offen einstellen. Aber das eignet sich wirklich nur für sehr kleine Websites: </p><figure class="image-caption"><a href="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-compact-false.png"><picture>
                <source type="image/webp" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-compact-false_hud35ec0696c9840b09f92aa7f8fea8430_448990_360x0_resize_q95_h2_catmullrom_3.webp 360w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-compact-false_hud35ec0696c9840b09f92aa7f8fea8430_448990_500x0_resize_q95_h2_catmullrom_3.webp 500w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-compact-false_hud35ec0696c9840b09f92aa7f8fea8430_448990_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-compact-false_hud35ec0696c9840b09f92aa7f8fea8430_448990_360x0_resize_q95_h2_catmullrom_3.webp 360w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-compact-false_hud35ec0696c9840b09f92aa7f8fea8430_448990_500x0_resize_q95_h2_catmullrom_3.webp 500w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-compact-false_hud35ec0696c9840b09f92aa7f8fea8430_448990_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-21-sidebar-compact-false_hud35ec0696c9840b09f92aa7f8fea8430_448990_816x0_resize_q95_h2_catmullrom_3.webp" title="sidebar_menu_compact = false" loading="lazy" width="816" height="523" /></picture></a><figcaption>sidebar_menu_compact = false</figcaption></figure><p>
</li>
</ul>
<p>Auch auf die generierten HTML-Dateien wirkt sich das aus. Circa 2000 Zeilen werden benötigt, wenn die Sidebar aufklappbar ist und &ldquo;nur&rdquo; noch ca. 1400, wenn die Sidebar nur im aktuellen Bereich geöffnet ist. <em>(Ich hätte erwartet, dass es im letzteren Fall bei sehr kleinen Bereichen wie &ldquo;Fotografie&rdquo; nur ein paar Dutzend Zeilen wären.)</em></p>
<p><a  class='urlextern'  href="https://www.docsy.dev/docs/adding-content/navigation/#section-menu-options">Dokumentation zur Sidebar</a></p>

<h3 id="zeit-zum-rendern-des-wiki" data-numberify>Zeit zum Rendern des Wiki<a class="anchor ms-1" href="#zeit-zum-rendern-des-wiki"></a></h3>
<p>Beim Durchstöbern der Einstellungsmöglichkeiten zur Sidebar (<a  href="#optimierung--sidebar">siehe oben</a>) habe ich auch die <code>sidebar_cache_limit</code> gefunden.</p>
<p>Aus der Dokumentation:</p>
<pre><code>On large sites (default: &gt; 2000 pages) the section menu is not generated for each page, but cached for the whole section. The HTML classes for marking the active menu item (and menu path) are then set using JS. You can adjust the limit for activating the cached section menu with the optional parameter .ui.sidebar_cache_limit.
</code></pre>
<p>In meinem Wiki gibt es aktuell 1333 Seiten und ich habe das Limit testweise auf 500 eingestellt:</p>
<pre><code>sidebar_cache_limit = 500
</code></pre>
<p>Die Zeit, um mein gesamtes Wiki zu rendern verringert sich damit von circa 12 Sekunden auf circa 2 Sekunden.</p>
<p>Der Nachteil ist jedoch, dass die übergeordneten Seiten nicht mehr angezeigt werden, sobald man zu tief in den Unterebenen eines Bereichs ist.</p>
<p></p><figure class="image-caption"><a href="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-cached.png"><picture>
                <source type="image/webp" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-cached_hu8d0b628ae7e8831f915000633f270ec8_149846_360x0_resize_q95_h2_catmullrom_3.webp 360w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-cached_hu8d0b628ae7e8831f915000633f270ec8_149846_500x0_resize_q95_h2_catmullrom_3.webp 500w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-cached_hu8d0b628ae7e8831f915000633f270ec8_149846_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-cached_hu8d0b628ae7e8831f915000633f270ec8_149846_360x0_resize_q95_h2_catmullrom_3.webp 360w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-cached_hu8d0b628ae7e8831f915000633f270ec8_149846_500x0_resize_q95_h2_catmullrom_3.webp 500w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-cached_hu8d0b628ae7e8831f915000633f270ec8_149846_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-cached_hu8d0b628ae7e8831f915000633f270ec8_149846_816x0_resize_q95_h2_catmullrom_3.webp" title="Sidebar wird gecached und es ist nicht alles sichtbar." loading="lazy" width="816" height="583" /></picture></a><figcaption>Sidebar wird gecached und es ist nicht alles sichtbar.</figcaption></figure><p>
</p>
<p></p><figure class="image-caption"><a href="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-not-cached.png"><picture>
                <source type="image/webp" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-not-cached_hu33d0182cf2cdff4949dec88c9c0f9335_165734_360x0_resize_q95_h2_catmullrom_3.webp 360w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-not-cached_hu33d0182cf2cdff4949dec88c9c0f9335_165734_500x0_resize_q95_h2_catmullrom_3.webp 500w,/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-not-cached_hu33d0182cf2cdff4949dec88c9c0f9335_165734_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="" srcset="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-not-cached_hu33d0182cf2cdff4949dec88c9c0f9335_165734_360x0_resize_q95_h2_catmullrom_3.webp 360w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-not-cached_hu33d0182cf2cdff4949dec88c9c0f9335_165734_500x0_resize_q95_h2_catmullrom_3.webp 500w, /2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-not-cached_hu33d0182cf2cdff4949dec88c9c0f9335_165734_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/images/2022-03-22-sidebar-not-cached_hu33d0182cf2cdff4949dec88c9c0f9335_165734_816x0_resize_q95_h2_catmullrom_3.webp" title="Sidebar wird nicht gecached und es ist alles sichtbar." loading="lazy" width="816" height="583" /></picture></a><figcaption>Sidebar wird nicht gecached und es ist alles sichtbar.</figcaption></figure><p>
</p>
<p>Damit ich nicht in Zukunft von diesem Mechanismus überrascht werde, sobald das Wiki über 2000 Seiten hat, habe ich den Wert auf 5000 eingestellt.</p>

<h3 id="swap-fonts" data-numberify>Swap Fonts<a class="anchor ms-1" href="#swap-fonts"></a></h3>
<p>Ich wurde darauf hingewiesen, dass in bei der Einbindung der selbst gehosteten Schriften im CSS noch einstellen kann, dass lokal vorhandene Systemschriften im Browser verwendet werden, solange die vom Server bereitgestellten Schriften noch nicht heruntergeladen wurden. Dadurch werden Inhalte früher dargestellt.</p>
<p>Pro <code>@font-face {</code>-Eintrag in der Datei <code>assets/scss/_variables_project.scss</code> kommt diese Zeile hinzu: <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-css" data-lang="css"><span style="display:flex;"><span><span style="color:#f92672">font-display</span><span style="color:#f92672">:</span> <span style="color:#f92672">swap</span><span style="color:#f92672">;</span></span></span></code></pre></div>

<h3 id="gar-keine-systemfremden-schriften" data-numberify>Gar keine systemfremden Schriften<a class="anchor ms-1" href="#gar-keine-systemfremden-schriften"></a></h3>
<p>Es ist auch möglich, die Verwendung der eingebundenen Schriften komplett zu unterbinden. Dazu trägt man in der Datei <code>assets/scss/_variables_project.scss</code> ein:</p>
<pre><code>$td-enable-google-fonts: false;
</code></pre>
<p>Mir gefällt die verwendete Schriftart des Themes, daher nutze ich nicht die Möglichkeit zur Abschaltung.</p>

<h2 id="galerie-hinzugefügt" data-numberify>Galerie hinzugefügt<a class="anchor ms-1" href="#galerie-hinzugefügt"></a></h2>
<p>Ich habe zum Wiki-Theme noch die <a  href="/2022/02/aenderungen-blog-hoehere-aufloesung-hovereffekt/">hugo-shortcode-gallery</a> hinzugefügt, die ich auch bereits hier im Blog verwende.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>cd themes
</span></span><span style="display:flex;"><span>git submodule add https://github.com/mfg92/hugo-shortcode-gallery.git</span></span></code></pre></div>
<p>Änderungen in der Datei <code>config.toml</code>:</p>
<ul>
<li>Aus <code>theme = &quot;docsy&quot;</code> wird <code>theme = [ &quot;docsy&quot;, &quot;hugo-shortcode-gallery&quot; ]</code></li>
</ul>
<p>Dazu kommen diese Einträge in den Bereich <code>params</code> (die ich so auch im Blog verwende):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span><span style="color:#a6e22e">galleryShowExif</span> = <span style="color:#66d9ef">true</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">gallerylastRow</span> = <span style="color:#e6db74">&#34;nojustify&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">gallerythumbnailResizeOptions</span> = <span style="color:#e6db74">&#34;450x450 q85 Lanczos&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">gallerythumbnailHoverEffect</span> = <span style="color:#e6db74">&#34;enlarge&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">galleryloadJQuery</span> = <span style="color:#66d9ef">true</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">galleryrowHeight</span> = <span style="color:#e6db74">&#34;150&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">gallerysortOrder</span> = <span style="color:#e6db74">&#34;desc&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">gallerypreviewType</span> = <span style="color:#e6db74">&#34;none&#34;</span></span></span></code></pre></div>
<p>Eine Beispielgalerie kann man hier ansehen: <a  href="https://wiki.natenom.de/docs/sauerbraten/maps/kleinestadt/#screenshots">wiki.natenom.com/docs/sauerbraten/maps/kleinestadt/</a>.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a  class='urlextern'  href="https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display">https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>]]></content:encoded><enclosure url="https://natenom.de/2022/03/mein-neues-wiki-mit-hugo-neue-suche-und-andere-optimierungen/cover.png" length="149846" type="image/png"/></item><item><title>Galerien im Feed</title><link>https://natenom.de/2022/02/galerien-im-feed/</link><pubDate>Sat, 26 Feb 2022 22:24:05 +0100</pubDate><guid>https://natenom.de/2022/02/galerien-im-feed/</guid><description>Ich habe vor wenigen Tagen die Rückmeldung bekommen, dass die Bilder der Galerien im Feed nicht erkennbar sind, da sehr grob aufgelöst.
Das liegt an der Voreinstellung des Shortcodes für Galerien, den ich hier im Blog verwende, der nur extrem kleine Varianten der Bilder ins HTML eingefügt. Erst wenn die Galerie in den sichtbaren Bereich im Browser kommt, wird per lazy-loading ein größeres Vorschaubild geladen und angezeigt.
So würde z. B.</description><content:encoded><![CDATA[<p>Ich habe vor wenigen Tagen die Rückmeldung bekommen, dass die Bilder der Galerien im Feed nicht erkennbar sind, da sehr grob aufgelöst.</p>
<p>Das liegt an der Voreinstellung des <a  class='urlextern'  href="https://github.com/mfg92/hugo-shortcode-gallery">Shortcodes für Galerien</a>, den ich hier im Blog verwende, der nur extrem kleine Varianten der Bilder ins HTML eingefügt. Erst wenn die Galerie in den sichtbaren Bereich im Browser kommt, wird per <code>lazy-loading</code> ein größeres Vorschaubild geladen und angezeigt.</p>
<p>So würde z. B. eine Galerie aussehen, wenn man das Laden der Thumbnails unterbindet (wie auch im Feed):</p>
<p></p><figure class="image-caption"><a href="/2022/02/galerien-im-feed/images/2022-02-24-extrem-kleine-vorschaubilder-im-feed-beispiel.png"><picture>
                <source type="image/webp" srcset="/2022/02/galerien-im-feed/images/_hua21aee36f709680a22ff05abb4c6f292_207038_0cfcbd0b72549910b7ceb360af914402.webp 360w,/2022/02/galerien-im-feed/images/_hua21aee36f709680a22ff05abb4c6f292_207038_24763bbde862ffcede8475cc01d19bd6.webp 500w,/2022/02/galerien-im-feed/images/_hua21aee36f709680a22ff05abb4c6f292_207038_23402c991136347cecf400501bc77b22.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="Sehr schlecht aufgelöste Vorschaubilder, wie man sie so auch im Feed sieht." srcset="/2022/02/galerien-im-feed/images/_hua21aee36f709680a22ff05abb4c6f292_207038_0cfcbd0b72549910b7ceb360af914402.webp 360w, /2022/02/galerien-im-feed/images/_hua21aee36f709680a22ff05abb4c6f292_207038_24763bbde862ffcede8475cc01d19bd6.webp 500w, /2022/02/galerien-im-feed/images/_hua21aee36f709680a22ff05abb4c6f292_207038_23402c991136347cecf400501bc77b22.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/02/galerien-im-feed/images/_hua21aee36f709680a22ff05abb4c6f292_207038_23402c991136347cecf400501bc77b22.webp" title="Sehr schlecht aufgelöste Vorschaubilder, wie man sie so auch im Feed sieht." loading="lazy" width="816" height="459" /></picture></a><figcaption>Sehr schlecht aufgelöste Vorschaubilder, wie man sie so auch im Feed sieht.</figcaption></figure><p>
</p>

<h2 id="datensparsamkeit" data-numberify>Datensparsamkeit<a class="anchor ms-1" href="#datensparsamkeit"></a></h2>
<p>Eigentlich ist das eine gute Sache, denn es werden nur die Bilder geladen, die man auf einer Seite auch anschauen will und nicht solche, die erst ganz weit unten auf der Seite zu sehen wären, man aber gar nicht bis dorthin scrollt.</p>

<h2 id="mehr-daten-für-alle-dafür-im-feedreader-sichtbar" data-numberify>Mehr Daten für alle, dafür im Feedreader sichtbar<a class="anchor ms-1" href="#mehr-daten-für-alle-dafür-im-feedreader-sichtbar"></a></h2>
<p>Ich habe das jetzt trotzdem umgestellt und diese extrem schlecht aufgelösten Minimalvorschaubilder deaktiviert. Das bedeutet, dass jetzt auf der Seite immer sofort die kleinen Vorschaubilder geladen werden. Diese sind maximal 450*450 Pixel groß.</p>

<h2 id="geänderte-einstellungen-für-shortcode-gallery" data-numberify>Geänderte Einstellungen für Shortcode-Gallery<a class="anchor ms-1" href="#geänderte-einstellungen-für-shortcode-gallery"></a></h2>
<p>Dazu muss man die Option <code>previewType</code> der Shortcode-Gallery auf <code>none</code> setzen.</p>
<p>Es ist leider nicht möglich, das nur für den Feed so umzusetzen.</p>

<h2 id="beispielgalerie" data-numberify>Beispielgalerie<a class="anchor ms-1" href="#beispielgalerie"></a></h2>
<p>Hier eine Testgalerie mit Fotos einer <a  href="/2019/05/fotos-von-der-heutigen-fahrradtour/">früheren Fahrradtour</a> für die Leser im Feedreader. Sollte passen :)</p>




	





	
          <p><a  href="testgalerie/2019-05-14-fotos-fahrradtour-11.jpg"></p><figure class="image-caption"><a href="/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-11.jpg"><picture>
                <source type="image/webp" srcset="/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-11_hu8a21981fb063edd2268f2be3898cd825_1354464_360x0_resize_q95_h2_catmullrom.webp 360w,/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-11_hu8a21981fb063edd2268f2be3898cd825_1354464_500x0_resize_q95_h2_catmullrom.webp 500w,/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-11_hu8a21981fb063edd2268f2be3898cd825_1354464_816x0_resize_q95_h2_catmullrom.webp 816w, /2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-11_hu8a21981fb063edd2268f2be3898cd825_1354464_1632x0_resize_q95_h2_catmullrom.webp 1632w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px,(min-width: 1200px) 1632px" />
                <img alt="" srcset="/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-11_hu8a21981fb063edd2268f2be3898cd825_1354464_360x0_resize_q95_h2_catmullrom.webp 360w, /2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-11_hu8a21981fb063edd2268f2be3898cd825_1354464_500x0_resize_q95_h2_catmullrom.webp 500w, /2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-11_hu8a21981fb063edd2268f2be3898cd825_1354464_816x0_resize_q95_h2_catmullrom.webp 816w,/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-11_hu8a21981fb063edd2268f2be3898cd825_1354464_1632x0_resize_q95_h2_catmullrom.webp 1632w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px,(min-width: 1200px) 1632px"
                     src="/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-11_hu8a21981fb063edd2268f2be3898cd825_1354464_816x0_resize_q95_h2_catmullrom.webp" title="" loading="lazy" width="816" height="543" /></picture></a><figcaption></figcaption></figure><p>
</a></p>

	

	
          <p><a  href="testgalerie/2019-05-14-fotos-fahrradtour-5.jpg"></p><figure class="image-caption"><a href="/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-5.jpg"><picture>
                <source type="image/webp" srcset="/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-5_hu8a21981fb063edd2268f2be3898cd825_2730043_360x0_resize_q95_h2_catmullrom.webp 360w,/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-5_hu8a21981fb063edd2268f2be3898cd825_2730043_500x0_resize_q95_h2_catmullrom.webp 500w,/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-5_hu8a21981fb063edd2268f2be3898cd825_2730043_816x0_resize_q95_h2_catmullrom.webp 816w, /2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-5_hu8a21981fb063edd2268f2be3898cd825_2730043_1632x0_resize_q95_h2_catmullrom.webp 1632w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px,(min-width: 1200px) 1632px" />
                <img alt="" srcset="/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-5_hu8a21981fb063edd2268f2be3898cd825_2730043_360x0_resize_q95_h2_catmullrom.webp 360w, /2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-5_hu8a21981fb063edd2268f2be3898cd825_2730043_500x0_resize_q95_h2_catmullrom.webp 500w, /2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-5_hu8a21981fb063edd2268f2be3898cd825_2730043_816x0_resize_q95_h2_catmullrom.webp 816w,/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-5_hu8a21981fb063edd2268f2be3898cd825_2730043_1632x0_resize_q95_h2_catmullrom.webp 1632w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px,(min-width: 1200px) 1632px"
                     src="/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-5_hu8a21981fb063edd2268f2be3898cd825_2730043_816x0_resize_q95_h2_catmullrom.webp" title="" loading="lazy" width="816" height="543" /></picture></a><figcaption></figcaption></figure><p>
</a></p>

	

	
          <p><a  href="testgalerie/2019-05-14-fotos-fahrradtour-9.jpg"></p><figure class="image-caption"><a href="/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-9.jpg"><picture>
                <source type="image/webp" srcset="/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-9_hu8a21981fb063edd2268f2be3898cd825_2568826_360x0_resize_q95_h2_catmullrom.webp 360w,/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-9_hu8a21981fb063edd2268f2be3898cd825_2568826_500x0_resize_q95_h2_catmullrom.webp 500w,/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-9_hu8a21981fb063edd2268f2be3898cd825_2568826_816x0_resize_q95_h2_catmullrom.webp 816w, /2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-9_hu8a21981fb063edd2268f2be3898cd825_2568826_1632x0_resize_q95_h2_catmullrom.webp 1632w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px,(min-width: 1200px) 1632px" />
                <img alt="" srcset="/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-9_hu8a21981fb063edd2268f2be3898cd825_2568826_360x0_resize_q95_h2_catmullrom.webp 360w, /2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-9_hu8a21981fb063edd2268f2be3898cd825_2568826_500x0_resize_q95_h2_catmullrom.webp 500w, /2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-9_hu8a21981fb063edd2268f2be3898cd825_2568826_816x0_resize_q95_h2_catmullrom.webp 816w,/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-9_hu8a21981fb063edd2268f2be3898cd825_2568826_1632x0_resize_q95_h2_catmullrom.webp 1632w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px,(min-width: 1200px) 1632px"
                     src="/2022/02/galerien-im-feed/testgalerie/2019-05-14-fotos-fahrradtour-9_hu8a21981fb063edd2268f2be3898cd825_2568826_816x0_resize_q95_h2_catmullrom.webp" title="" loading="lazy" width="816" height="543" /></picture></a><figcaption></figcaption></figure><p>
</a></p>

	


]]></content:encoded></item><item><title>Änderungen im Blog – Bessere Auflösung in den Galerien</title><link>https://natenom.de/2022/02/aenderungen-blog-hoehere-aufloesung-hovereffekt/</link><pubDate>Mon, 21 Feb 2022 01:03:15 +0100</pubDate><guid>https://natenom.de/2022/02/aenderungen-blog-hoehere-aufloesung-hovereffekt/</guid><description><![CDATA[<p>Beim Anschauen des Blogs auf einem Smartphone ist mir aufgefallen, dass Bilder aus der Galerie, die als &ldquo;Thumbnail&rdquo; in ca. 400 Pixel Breite angezeigt werden, sehr matschig aussahen. Das lag daran, dass der <a  class='urlextern'  href="https://github.com/mfg92/hugo-shortcode-gallery">Shortcode der Galerie</a> per Voreinstellung kleinere Varianten der Bilder mit maximal 300 Pixel Breite bzw. 150 Pixel Höhe renderte, aber diese größer darstellte.</p>]]></description><content:encoded><![CDATA[<p>Beim Anschauen des Blogs auf einem Smartphone ist mir aufgefallen, dass Bilder aus der Galerie, die als &ldquo;Thumbnail&rdquo; in ca. 400 Pixel Breite angezeigt werden, sehr matschig aussahen. Das lag daran, dass der <a  class='urlextern'  href="https://github.com/mfg92/hugo-shortcode-gallery">Shortcode der Galerie</a> per Voreinstellung kleinere Varianten der Bilder mit maximal 300 Pixel Breite bzw. 150 Pixel Höhe renderte, aber diese größer darstellte.</p>
<p>Das erste Bild ist matchig, das zweite (nach der Änderung im Blog), ist höher aufgelöst.</p>




	





	
          <p><a  href="images/2022-02-20-screenshot-blog-1-galerie-matchig.png"></p><figure class="image-caption"><picture><source type="png" srcset="/2022/02/aenderungen-blog-hoehere-aufloesung-hovereffekt/images/2022-02-20-screenshot-blog-1-galerie-matchig.png" />
			         <img alt="" src="/2022/02/aenderungen-blog-hoehere-aufloesung-hovereffekt/images/2022-02-20-screenshot-blog-1-galerie-matchig.png" title="" width="576" height="1312" loading="lazy" /></picture><figcaption></figcaption></figure><p>
</a></p>

	

	
          <p><a  href="images/2022-02-20-screenshot-blog-2-galerie-gut.png"></p><figure class="image-caption"><picture><source type="png" srcset="/2022/02/aenderungen-blog-hoehere-aufloesung-hovereffekt/images/2022-02-20-screenshot-blog-2-galerie-gut.png" />
			         <img alt="" src="/2022/02/aenderungen-blog-hoehere-aufloesung-hovereffekt/images/2022-02-20-screenshot-blog-2-galerie-gut.png" title="" width="576" height="1312" loading="lazy" /></picture><figcaption></figcaption></figure><p>
</a></p>

	



<h2 id="höhere-auflösung-für-thumbnails" data-numberify>Höhere Auflösung für Thumbnails<a class="anchor ms-1" href="#höhere-auflösung-für-thumbnails"></a></h2>
<p>Das habe ich nun auf maximal 450 mal 450 Pixel angepasst und nun sieht das richtig gut aus. Der Größenunterschied zu 300 mal 150 Pixel ist nur minimal.</p>
<p>Realisiert habe ich das mit einem Eintrag in den Abschnitt <code>Params</code> in der Hugo-Konfiguration:</p>
<pre tabindex="0"><code>gallerythumbnailResizeOptions = &#34;450x450 q85 Lanczos&#34;
</code></pre><p>Zudem kann man pro Galerie den Vorgabewert überschreiben mit:</p>
<pre tabindex="0"><code>{{​&lt; nat_gallery match=&#34;images/*&#34; … thumbnailResizeOptions=&#34;850x850 q85 Lanczos&#34; … &gt;​}}
</code></pre><p>Bei diesem <a  href="/2015/07/ein-paar-bilder-von-den-schoenen-bauten-unseres-minecraft-servers/">Blogbeitrag z. B., wo es sehr breite Panoramascreenshots gibt</a>, habe ich den Wert auf 850 x 850 erhöht, damit es gut aussieht.</p>
<p>Noch besser wäre es natürlich, wenn der Shortcode ein <a  class='urlextern'  href="https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images">srcset</a> für die Anzeigegrößen nutzen würde und Hugo dann alle möglichen Größen rendern würde.</p>

<h2 id="hovereffekt" data-numberify>Hovereffekt<a class="anchor ms-1" href="#hovereffekt"></a></h2>
<p>Zusätzlich habe ich auch noch <code>thumbnailHoverEffect</code> aktiviert, sodass beim Hovern mit dem Mauszeiger die Bilder um den Faktor 1,1 vergrößert dargestellt werden. Das ist wenig, sieht aber schön aus, wie ich finde.</p>
<p>Auch das kommt in die Hugo-Konfiguration und ist danach Vorgabe für alle Galerien:</p>
<pre tabindex="0"><code>gallerythumbnailHoverEffect = &#34;enlarge&#34;
</code></pre>]]></content:encoded></item><item><title>Bildbeschreibungen in meinen Galerien – Zwei Methoden verfügbar</title><link>https://natenom.de/2022/02/bildbeschreibungen-in-meinen-galerien-zwei-methoden/</link><pubDate>Tue, 15 Feb 2022 07:02:46 +0100</pubDate><guid>https://natenom.de/2022/02/bildbeschreibungen-in-meinen-galerien-zwei-methoden/</guid><description>Update: Eine erste Galerie, wo ich das mal mit den .meta-Dateien umgesetzt habe, gibt es hier.
Bisher werden hier im Blog bei Verwendung des Galerie-Shortcodes hugo-shortcode-gallery nur die Bilder angezeigt. Ich hätte aber gerne für manche Bilder eine Beschreibung. So, wie ich es noch von WordPress kenne.
Zwei Methoden verfügbar Für die verwendete Galerie gibt es zwei Methoden:
Verwendung sogenannter Sidecar-Dateien. Hinzufügen der Variable ImageDescription zu den Exif-Metadaten eines Fotos.</description><content:encoded><![CDATA[<div class="shortcode-update">
<p>Update: Eine erste Galerie, wo ich das mal mit den .meta-Dateien umgesetzt habe, <a  href="/2022/02/fotos-der-letzten-tage-2">gibt es hier</a>.</p>
</div>

<p>Bisher werden hier im Blog bei Verwendung des Galerie-Shortcodes <a  class='urlextern'  href="https://github.com/mfg92/hugo-shortcode-gallery/">hugo-shortcode-gallery</a> nur die Bilder angezeigt. Ich hätte aber gerne für manche Bilder eine Beschreibung. So, wie ich es noch von WordPress kenne.</p>

<h2 id="zwei-methoden-verfügbar" data-numberify>Zwei Methoden verfügbar<a class="anchor ms-1" href="#zwei-methoden-verfügbar"></a></h2>
<p>Für die verwendete Galerie gibt es zwei Methoden:</p>
<ol>
<li>Verwendung sogenannter <a  class='urlextern'  href="https://github.com/mfg92/hugo-shortcode-gallery#sidecar-files">Sidecar-Dateien</a>.</li>
<li>Hinzufügen der Variable ImageDescription zu den Exif-Metadaten eines Fotos.</li>
</ol>
<p>Im Prinzip kann man für beide Möglichkeiten einfache Script schreiben, um die Metadaten zu Bildern hinzuzufügen.</p>

<h3 id="methode-sidecar" data-numberify>Methode Sidecar<a class="anchor ms-1" href="#methode-sidecar"></a></h3>
<p>Das sind json-Dateien, die es für jedes einzelne Bild gibt.</p>
<p>Heißt das Foto etwa <code>2021-01-07-mammutbaum-pforzheim.jpg</code>, dann kommen die folgenden Daten in die Datei <code>2021-01-07-mammutbaum-pforzheim.jpg.meta</code>:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>&#34;Title&#34;: &#34;Ein Mammutbaum in Pforzheim&#34;
</span></span><span style="display:flex;"><span>}</span></span></code></pre></div></p>
<p>In der Dokumentatino von hugo-shortcode-gallery sind noch weitere Metadaten in der Datei .meta enthalten, nach meinem Test wird aber nur &ldquo;Title&rdquo; im HTML-Code der Galerien hinterlegt.</p>

<h3 id="methode-exif-metadaten" data-numberify>Methode Exif Metadaten<a class="anchor ms-1" href="#methode-exif-metadaten"></a></h3>
<p><a  href="/tags/exif/">Exif-Metadaten</a> werden mit meinen Einstellungen in den Bildern der Galerie angezeigt, wenn sie in der Lightbox geöffnet werden. Dazu habe ich in der Konfiguration von Hugo die Option <code>galleryShowExif = true</code> gesetzt.</p>
<p>Unter Linux kann man z. B. mit dem Tool exiftool Exif-Daten in Dateien schreiben:
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>exiftool -imagedescription<span style="color:#f92672">=</span><span style="color:#e6db74">&#34;Ein Mammutbaum in Pforzheim&#34;</span> 2021-01-07-mammutbaum-pforzheim.jpg
</span></span><span style="display:flex;"><span>    <span style="color:#ae81ff">1</span> image files updated</span></span></code></pre></div></p>

<h2 id="ergebnis-in-beiden-fällen" data-numberify>Ergebnis in beiden Fällen<a class="anchor ms-1" href="#ergebnis-in-beiden-fällen"></a></h2>
<p>Der Titel wird dann sowohl beim Hover über das Thumbnail angezeigt als auch in der Lightbox oben am Rand. Im HTML-Code fehlt leider das Alt Attribut, dazu werde ich beim Entwickler einen Bugreport erstellen, damit er das noch einfügen kann.</p>
<p>Titel beim Hovern mit der Maus über ein Bild:
</p><figure class="image-caption"><picture>
                <source type="image/webp" srcset="/2022/02/bildbeschreibungen-in-meinen-galerien-zwei-methoden/images/2022-02-15-screenshot-titel-galerie-bei-hover_hu57c6a810219de8fccb0a1a4688fb3da2_316829_360x0_resize_q95_h2_catmullrom_3.webp 360w,/2022/02/bildbeschreibungen-in-meinen-galerien-zwei-methoden/images/2022-02-15-screenshot-titel-galerie-bei-hover_hu57c6a810219de8fccb0a1a4688fb3da2_316829_500x0_resize_q95_h2_catmullrom_3.webp 500w,/2022/02/bildbeschreibungen-in-meinen-galerien-zwei-methoden/images/2022-02-15-screenshot-titel-galerie-bei-hover_hu57c6a810219de8fccb0a1a4688fb3da2_316829_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="Anzeige des Bildtitels, wenn man mit der Maus darüber hovert." srcset="/2022/02/bildbeschreibungen-in-meinen-galerien-zwei-methoden/images/2022-02-15-screenshot-titel-galerie-bei-hover_hu57c6a810219de8fccb0a1a4688fb3da2_316829_360x0_resize_q95_h2_catmullrom_3.webp 360w, /2022/02/bildbeschreibungen-in-meinen-galerien-zwei-methoden/images/2022-02-15-screenshot-titel-galerie-bei-hover_hu57c6a810219de8fccb0a1a4688fb3da2_316829_500x0_resize_q95_h2_catmullrom_3.webp 500w, /2022/02/bildbeschreibungen-in-meinen-galerien-zwei-methoden/images/2022-02-15-screenshot-titel-galerie-bei-hover_hu57c6a810219de8fccb0a1a4688fb3da2_316829_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/02/bildbeschreibungen-in-meinen-galerien-zwei-methoden/images/2022-02-15-screenshot-titel-galerie-bei-hover_hu57c6a810219de8fccb0a1a4688fb3da2_316829_816x0_resize_q95_h2_catmullrom_3.webp" title="Anzeige des Bildtitels, wenn man mit der Maus darüber hovert." loading="lazy" width="816" height="507" /></picture><figcaption>Anzeige des Bildtitels, wenn man mit der Maus darüber hovert.</figcaption></figure><p>
</p>
<p>Titel in der Lightbox:
</p><figure class="image-caption"><picture><source type="png" srcset="/2022/02/bildbeschreibungen-in-meinen-galerien-zwei-methoden/images/2022-02-15-screenshot-titel-galerie-in-der-lightbox.png" />
			         <img alt="Anzeige des Titels in der Lightbox." src="/2022/02/bildbeschreibungen-in-meinen-galerien-zwei-methoden/images/2022-02-15-screenshot-titel-galerie-in-der-lightbox.png" title="Anzeige des Titels in der Lightbox." width="786" height="1005" loading="lazy" /></picture><figcaption>Anzeige des Titels in der Lightbox.</figcaption></figure><p>
</p>

<h2 id="noch-nicht-entschieden" data-numberify>Noch nicht entschieden<a class="anchor ms-1" href="#noch-nicht-entschieden"></a></h2>
<p>Ich habe mich noch nicht entschieden, welche Methode ich nutzen werde. In jedem Fall werde ich das Script später hier im Blog veröffentlichen, mit der ich in Zukunft die Bildbeschreibungen hinterlegen werde.</p>
<p>Die Methode mit den Exif-Metadaten hätte den Vorteil, dass die Daten auch in anderen Programmen angezeigt werden können. Zudem könnte ich anfangen, in meiner Fotoverwaltungssoftware immer diese Daten bereits einzutragen.</p>
<div class="shortcode-notice update">
    <div class="shortcode-notice-title update">
        Update</div>
    <div class="notice-content">Ich habe mich für die Methode mit den Exif-Metadaten entschieden und verwende dazu Digikam, <a  href="/2022/04/bildbeschreibungen-galerien-blog-via-digikam/">siehe hier</a>.</div>
</div>


]]></content:encoded><enclosure url="https://natenom.de/2022/02/bildbeschreibungen-in-meinen-galerien-zwei-methoden/cover.png" length="316829" type="image/png"/></item><item><title>Fix für Galerien, wenn das letzte Bild viel zu groß dargestellt wird</title><link>https://natenom.de/2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/</link><pubDate>Tue, 15 Feb 2022 06:01:32 +0100</pubDate><guid>https://natenom.de/2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/</guid><description>Für die Darstellung von Galerien in meinem Blog verwende ich den &amp;ldquo;Shortcode&amp;rdquo; hugo-shortcode-gallery, welcher eine Galerie auf Basis von Justified-Gallery erzeugt.
Ich bin damit auch sehr zufrieden. Bis auf einen Punkt: Ist in der letzen Zeile der Galerie nur noch ein Bild enthalten, dann wird dessen Thumbnail viel größer dargestellt, als es tatsächlich ist, und sieht dadurch matschig aus.
Das liegt daran, dass die Option lastRow per Voreinstellung auf justify gesetzt ist, was dazu führt, dass die letzte Reihe immer auf die selbe Breite gezogen wird, wie die Reihen darüber.</description><content:encoded><![CDATA[<p>Für die Darstellung von Galerien in meinem Blog verwende ich den &ldquo;Shortcode&rdquo; <a  class='urlextern'  href="https://github.com/mfg92/hugo-shortcode-gallery">hugo-shortcode-gallery</a>, welcher eine Galerie auf Basis von <a  class='urlextern'  href="http://miromannino.github.io/Justified-Gallery/">Justified-Gallery</a> erzeugt.</p>
<p>Ich bin damit auch sehr zufrieden. Bis auf einen Punkt: Ist in der letzen Zeile der Galerie nur noch ein Bild enthalten, dann wird dessen Thumbnail viel größer dargestellt, als es tatsächlich ist, und sieht dadurch matschig aus.</p>
<p>Das liegt daran, dass die Option <code>lastRow</code> per Voreinstellung auf <code>justify</code> gesetzt ist, was dazu führt, dass die letzte Reihe immer auf die selbe Breite gezogen wird, wie die Reihen darüber. Bei zwei oder mehr Bildern sieht man das nicht, bei nur einem Bild aber sehr deutlich.</p>
<p>So sieht es aus, wenn in der letzten Reihe nur ein Bild enthalten ist:
</p><figure class="image-caption"><picture>
                <source type="image/webp" srcset="/2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/images/2022-02-15-screenshot-hugo-gallery-lastrow-default_hu71d54a5433ba228640a05c796be1c64a_646629_360x0_resize_q95_h2_catmullrom_3.webp 360w,/2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/images/2022-02-15-screenshot-hugo-gallery-lastrow-default_hu71d54a5433ba228640a05c796be1c64a_646629_500x0_resize_q95_h2_catmullrom_3.webp 500w,/2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/images/2022-02-15-screenshot-hugo-gallery-lastrow-default_hu71d54a5433ba228640a05c796be1c64a_646629_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="Screenshot einer Galerie, in der in der letzten Reihe nur ein matschiges Bild zu sehen ist." srcset="/2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/images/2022-02-15-screenshot-hugo-gallery-lastrow-default_hu71d54a5433ba228640a05c796be1c64a_646629_360x0_resize_q95_h2_catmullrom_3.webp 360w, /2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/images/2022-02-15-screenshot-hugo-gallery-lastrow-default_hu71d54a5433ba228640a05c796be1c64a_646629_500x0_resize_q95_h2_catmullrom_3.webp 500w, /2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/images/2022-02-15-screenshot-hugo-gallery-lastrow-default_hu71d54a5433ba228640a05c796be1c64a_646629_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/images/2022-02-15-screenshot-hugo-gallery-lastrow-default_hu71d54a5433ba228640a05c796be1c64a_646629_816x0_resize_q95_h2_catmullrom_3.webp" title="Screenshot einer Galerie, in der in der letzten Reihe nur ein matschiges Bild zu sehen ist." loading="lazy" width="816" height="806" /></picture><figcaption>Screenshot einer Galerie, in der in der letzten Reihe nur ein matschiges Bild zu sehen ist.</figcaption></figure><p>
</p>
<p>Und so sieht es aus, nachdem man entweder für die einzelne Galerie die Option <code>lastRow=&quot;nojustify&quot;</code> oder in der Hugo Konfiguration <code>gallerylastRow = &quot;nojustify&quot;</code> einstellt hat:</p>
<p></p><figure class="image-caption"><picture>
                <source type="image/webp" srcset="/2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/images/2022-02-15-screenshot-hugo-gallery-lastrow-nojustify_hu0d5944feb92eac60f3d778fc724cf063_319194_360x0_resize_q95_h2_catmullrom_3.webp 360w,/2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/images/2022-02-15-screenshot-hugo-gallery-lastrow-nojustify_hu0d5944feb92eac60f3d778fc724cf063_319194_500x0_resize_q95_h2_catmullrom_3.webp 500w,/2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/images/2022-02-15-screenshot-hugo-gallery-lastrow-nojustify_hu0d5944feb92eac60f3d778fc724cf063_319194_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                                          sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px" />
                <img alt="Mit nojustify wird das letzte Bild normal dargestellt und füllt nicht mehr die ganze Reihe aus." srcset="/2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/images/2022-02-15-screenshot-hugo-gallery-lastrow-nojustify_hu0d5944feb92eac60f3d778fc724cf063_319194_360x0_resize_q95_h2_catmullrom_3.webp 360w, /2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/images/2022-02-15-screenshot-hugo-gallery-lastrow-nojustify_hu0d5944feb92eac60f3d778fc724cf063_319194_500x0_resize_q95_h2_catmullrom_3.webp 500w, /2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/images/2022-02-15-screenshot-hugo-gallery-lastrow-nojustify_hu0d5944feb92eac60f3d778fc724cf063_319194_816x0_resize_q95_h2_catmullrom_3.webp 816w"
                     sizes="(max-width: 424px) 360px, (max-width: 596px) 500px, (min-width: 565px) 816px"
                     src="/2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/images/2022-02-15-screenshot-hugo-gallery-lastrow-nojustify_hu0d5944feb92eac60f3d778fc724cf063_319194_816x0_resize_q95_h2_catmullrom_3.webp" title="Mit nojustify wird das letzte Bild normal dargestellt und füllt nicht mehr die ganze Reihe aus." loading="lazy" width="816" height="491" /></picture><figcaption>Mit nojustify wird das letzte Bild normal dargestellt und füllt nicht mehr die ganze Reihe aus.</figcaption></figure><p>
</p>
<p>Alle Einstellungsmöglichkeiten der Galerie und auch eine Live-Vorschau gibt es auf der Webseite der verwendeten Gallery, <a  class='urlextern'  href="http://miromannino.github.io/Justified-Gallery/options-and-events/">siehe hier</a>.</p>
]]></content:encoded><enclosure url="https://natenom.de/2022/02/fix-fuer-galerie-bei-zu-gross-dargestelltem-letztem-bild/cover.png" length="646629" type="image/png"/></item><item><title>Update auf WordPress 5.3 – Gutenberg Editor endlich komplett benutzbar – Probleme mit der Bildergalerie (teilweise) gelöst</title><link>https://natenom.de/2019/11/update-auf-wordpress-5-3-gutenberg-editor-endlich-komplett-benutzbar-probleme-mit-der-bildergalerie-teilweise-geloest/</link><pubDate>Wed, 13 Nov 2019 09:20:28 +0000</pubDate><guid>https://natenom.de/2019/11/update-auf-wordpress-5-3-gutenberg-editor-endlich-komplett-benutzbar-probleme-mit-der-bildergalerie-teilweise-geloest/</guid><description>&lt;p>Bisher war ich mehr oder minder gezwungen, weiterhin den Classic Editor vom alten WordPress weiterhin zu verwenden. Denn beim Erstellen einer Galerie wurden nur die kleinen Auflösungen der Bilder darin verlinkt und es gab keine Möglichkeit das im Editor zu ändern. Deshalb musste man entweder komplett oder zumindest zum Einfügen einer Bildergalerie in den alten Editor wechseln.&lt;/p></description><content:encoded><![CDATA[<p>Bisher war ich mehr oder minder gezwungen, weiterhin den Classic Editor vom alten WordPress weiterhin zu verwenden. Denn beim Erstellen einer Galerie wurden nur die kleinen Auflösungen der Bilder darin verlinkt und es gab keine Möglichkeit das im Editor zu ändern. Deshalb musste man entweder komplett oder zumindest zum Einfügen einer Bildergalerie in den alten Editor wechseln.</p>
<p>Mit dem heutigen Update auf <a  class='urlextern'  href="https://wordpress.org/news/2019/11/kirk/">WordPress 5.3</a> wurde das Problem teilweise behoben. Zwar kann man immer noch nicht die Vorschaugröße selbst einstellen. Diese wird indirekt automatisch über die Anzahl der Spalten der Galerie festgelegt. Aber immerhin wird beim Anklicken der Bilder nicht mehr die Miniversion der Bilder geöffent sondern das Bild in voller Auflösung. Für mich reicht das aus. Einen schon ziemlich alten Bugreport dazu gibt es auf <a  class='urlextern'  href="https://github.com/WordPress/gutenberg/issues/1450">Github, siehe hier</a>.<figure class="wp-block-gallery columns-2"></p>
<ul class="blocks-gallery-grid">
  <li class="blocks-gallery-item">
    <figure><a href="/wp-content/uploads/2019/11/wp_classic-editor_gallery.png"><img loading="lazy" src="/wp-content/uploads/2019/11/wp_classic-editor_gallery.png" alt="" data-id="46113" data-full-url="/wp-content/uploads/2019/11/wp_classic-editor_gallery.png" data-link="/?attachment_id=46113" class="wp-image-46113" srcset="/wp-content/uploads/2019/11/wp_classic-editor_gallery.png 590w, /wp-content/uploads/2019/11/wp_classic-editor_gallery-300x161.png 300w, /wp-content/uploads/2019/11/wp_classic-editor_gallery-150x81.png 150w" sizes="(max-width: 590px) 100vw, 590px" /></a><figcaption class="blocks-gallery-item__caption">Galerieeinstellungen im Classic Editor</figcaption></figure>
  </li>
  <li class="blocks-gallery-item">
    <figure><a href="/wp-content/uploads/2019/11/wp_gutenberg-editor_gallery.png"><img loading="lazy" src="/wp-content/uploads/2019/11/wp_gutenberg-editor_gallery.png" alt="" data-id="46112" data-full-url="/wp-content/uploads/2019/11/wp_gutenberg-editor_gallery.png" data-link="/?attachment_id=46112" class="wp-image-46112" srcset="/wp-content/uploads/2019/11/wp_gutenberg-editor_gallery.png 308w, /wp-content/uploads/2019/11/wp_gutenberg-editor_gallery-195x300.png 195w, /wp-content/uploads/2019/11/wp_gutenberg-editor_gallery-97x150.png 97w" sizes="(max-width: 308px) 100vw, 308px" /></a><figcaption class="blocks-gallery-item__caption">Galerieeinstellungen im Gutenberg Editor</figcaption></figure>
  </li>
</ul></figure> 
<p>Wenn man trotzdem noch den Classic Editor für Galerien verwenden möchte, so muss man jetzt nur noch zum Erstellen einer Galerie in diesen Wechseln. Eine bereits vorhandene Galerie in einem Beitrag kann man jetzt auch im Gutenberg Editor komplett mit allen Einstellungen bearbeiten, so als wäre man im alten Editor.</p>
<p>Ich brauche das aber nicht mehr, deshalb konnte ich heute das Plugin für den Classic Editor endlich löschen und arbeite jetzt nur noch mit dem Gutenberg Editor. Gleichzeitig kann ich auch das Plugin <a  href="/2014/07/wordpress-plugin-fuer-bestaetigung-zum-veroeffentlichen-eines-beitrags/">Publish Confirm</a> löschen, das bei einem, meist versehentlichen, Klick auf „Veröffentlichen“ eine zusätzliche Abfrage stellte, damit nicht aus Versehen ein unfertiger Blogbeitrag veröffentlicht wird. Diese Funktion ist bereits im Gutenberg Editor enthalten.</p>
<p>Sehr schön; einen schönen Editor bekommen, zwei Plugins entfernt. Passt. In den nächsten Tagen werde ich dann noch testen, ob das neue Thema Twenty Twenty für meine Bedürfnisse passen könnte.</p>]]></content:encoded></item><item><title>Gutenberg-Editor für WordPress – Wegen Bug werden in Galerien nur kleine Bildervarianten verlinkt</title><link>https://natenom.de/2019/04/gutenberg-editor-fuer-wordpress-wegen-bug-werden-in-galerien-nur-kleine-bildervarianten-verlinkt/</link><pubDate>Sun, 07 Apr 2019 16:02:11 +0000</pubDate><guid>https://natenom.de/2019/04/gutenberg-editor-fuer-wordpress-wegen-bug-werden-in-galerien-nur-kleine-bildervarianten-verlinkt/</guid><description>&lt;p>Ich würde gerne den neuen Gutenberg-Editor von WordPress nutzen, doch leider gibt es eine fehlerhafte Funktion, die das verhindert.&lt;/p></description><content:encoded><![CDATA[<p>Ich würde gerne den neuen Gutenberg-Editor von WordPress nutzen, doch leider gibt es eine fehlerhafte Funktion, die das verhindert.</p>
<p>Fügt man einen Galerie-Block ein, dann werden nicht die voll aufgelösten Bilder verlinkt sondern nur kleine Versionen der Bilder.</p>
<p>Die einzige Möglichkeit ist aktuell, dass man für das Erstellen einer Galerie in den Classiceditor wechselt und dann wieder zurück.</p>
<p>Einen Bugreport gibt es bereits, <a  class='urlextern'  href="https://github.com/WordPress/gutenberg/issues/13851">siehe hier</a>.<figure class="wp-block-image"></p>
<p><a  href="/wp-content/uploads/2019/04/wordpress-gutenberg-galerie.png"><img loading="lazy" src="/wp-content/uploads/2019/04/wordpress-gutenberg-galerie-600x590.png" alt="" class="wp-image-44621" srcset="/wp-content/uploads/2019/04/wordpress-gutenberg-galerie-600x590.png 600w, /wp-content/uploads/2019/04/wordpress-gutenberg-galerie-150x148.png 150w, /wp-content/uploads/2019/04/wordpress-gutenberg-galerie-300x295.png 300w, /wp-content/uploads/2019/04/wordpress-gutenberg-galerie-768x756.png 768w, /wp-content/uploads/2019/04/wordpress-gutenberg-galerie.png 819w" sizes="(max-width: 600px) 100vw, 600px" /></a></figure></p>]]></content:encoded></item><item><title>Änderungen in meinem Blog – Übersichtlicher, schöner und weniger Daten</title><link>https://natenom.de/2016/11/aenderungen-in-meinem-blog-uebersichtlicher-schoener-und-weniger-daten/</link><pubDate>Fri, 04 Nov 2016 13:41:09 +0000</pubDate><guid>https://natenom.de/2016/11/aenderungen-in-meinem-blog-uebersichtlicher-schoener-und-weniger-daten/</guid><description>&lt;p>Habe in den letzten Tagen ein paar Verbesserungen im Blog umgesetzt. Ein Dankeschön dafür auch wieder an Vrifox.&lt;/p></description><content:encoded><![CDATA[<p>Habe in den letzten Tagen ein paar Verbesserungen im Blog umgesetzt. Ein Dankeschön dafür auch wieder an Vrifox.</p>
<h2 id="bessere-übersicht" data-numberify>Bessere Übersicht<a class="anchor ms-1" href="#bessere-übersicht"></a></h2>
<p>Fast alle Artikel auf den Übersichtsseiten haben jetzt einen „Weiterlesen“-Link. Das macht das Durchstöbern angenehmer, weil man nicht den ganzen Artikel herunterscrollen muss.</p>
<p><a  href="/wp-content/uploads/2016/11/weiterlesen_link_uebersicht.png"><img loading="lazy" class="alignnone size-medium wp-image-37093" src="/wp-content/uploads/2016/11/weiterlesen_link_uebersicht-232x300.png" alt="weiterlesen_link_uebersicht" srcset="/wp-content/uploads/2016/11/weiterlesen_link_uebersicht-232x300.png 232w, /wp-content/uploads/2016/11/weiterlesen_link_uebersicht-116x150.png 116w, /wp-content/uploads/2016/11/weiterlesen_link_uebersicht-600x777.png 600w, /wp-content/uploads/2016/11/weiterlesen_link_uebersicht.png 647w" sizes="(max-width: 232px) 100vw, 232px" /></a></p>

<h2 id="übersichtliche-galerien" data-numberify>Übersichtliche Galerien<a class="anchor ms-1" href="#übersichtliche-galerien"></a></h2>
<p>Bei Galerien bzw. Artikel mit vielen Bildern wurden bisher sehr große Vorschaubilder verwendet, sodass man direkt beim Aufruf einer Übersichtsseite mit solchen Artikeln sehr viele Daten herunterladen mussten. Auch musste man ewig nach unten scrollen, um zum nächsten Artikel zu kommen.</p>
<p>Hätte ich in solchen Artikeln nur einen Weiterlesen-Link eingefügt, dann wäre die Vielfältigkeit der Bilder verloren gegangen. Denn man hat mir berichtet, dass teilweise intelligente Menschen davon ausgingen, solche Artikel würden nur aus einem einzigen Bild bestehen (dem bis zum Weiterlesen-Link).</p>
<p>Mit der neuen Lösung der Minivorschaubilder sieht man direkt alle Bilder und kann sich durch diese durchklicken, indem man eines davon anklickt.</p>
<p><a  href="/wp-content/uploads/2016/11/kleine_vorschaubilder_galerien.png"><img loading="lazy" class="alignnone size-medium wp-image-37092" src="/wp-content/uploads/2016/11/kleine_vorschaubilder_galerien-261x300.png" alt="kleine_vorschaubilder_galerien" srcset="/wp-content/uploads/2016/11/kleine_vorschaubilder_galerien-261x300.png 261w, /wp-content/uploads/2016/11/kleine_vorschaubilder_galerien-131x150.png 131w, /wp-content/uploads/2016/11/kleine_vorschaubilder_galerien-768x881.png 768w, /wp-content/uploads/2016/11/kleine_vorschaubilder_galerien-600x688.png 600w, /wp-content/uploads/2016/11/kleine_vorschaubilder_galerien.png 787w" sizes="(max-width: 261px) 100vw, 261px" /></a></p>

<h2 id="mehr-artikelbilder-oberhalb-der-überschrift" data-numberify>Mehr Artikelbilder (oberhalb der Überschrift)<a class="anchor ms-1" href="#mehr-artikelbilder-oberhalb-der-überschrift"></a></h2>
<p>Ist ein Bild in einem Artikel vorhanden, so wird dieses auch immer für die Überschrift verwendet. Das sieht insgesamt schöner aus.</p>

<h2 id="mehr-informationen-zu-bildern" data-numberify>Mehr Informationen zu Bildern<a class="anchor ms-1" href="#mehr-informationen-zu-bildern"></a></h2>
<p>Teilweise sind die Bilder in den Gallerien jetzt auch mit Kommentaren versehen, zumindest wenn ich mich an den Ort erinnern kann oder es etwas dazu zu sagen gibt.</p>
<p>Diese werden entweder angezeigt, wenn man mit der Maus über das Bild fährt oder links oben wenn es in groß geöffnet ist.</p>
<img loading="lazy" class="alignnone size-medium wp-image-37094" src="/wp-content/uploads/2016/11/zusatzinformationen_bilder-300x199.png" alt="zusatzinformationen_bilder" srcset="/wp-content/uploads/2016/11/zusatzinformationen_bilder-300x199.png 300w, /wp-content/uploads/2016/11/zusatzinformationen_bilder-150x100.png 150w, /wp-content/uploads/2016/11/zusatzinformationen_bilder.png 358w" sizes="(max-width: 300px) 100vw, 300px" />]]></content:encoded></item><item><title>Mit fgallery Web-Verzeichnisse mit Bildern verschönern</title><link>https://natenom.de/2015/07/mit-fgallery-web-verzeichnisse-mit-bildern-verschoenern/</link><pubDate>Wed, 15 Jul 2015 15:00:09 +0000</pubDate><guid>https://natenom.de/2015/07/mit-fgallery-web-verzeichnisse-mit-bildern-verschoenern/</guid><description>&lt;p>Habe kürzlich die Bilderverzeichnisse mit alten Minecraft-Screenshots unter &lt;a href="https://f.natenom.de/public/minecraft/screenshots/">f.natenom.de&lt;/a> so angepasst, dass pro Unterverzeichnis statt der Dateilisten eine Galerie erscheint.&lt;/p></description><content:encoded><![CDATA[<p>Habe kürzlich die Bilderverzeichnisse mit alten Minecraft-Screenshots unter <a  href="https://f.natenom.de/public/minecraft/screenshots/">f.natenom.de</a> so angepasst, dass pro Unterverzeichnis statt der Dateilisten eine Galerie erscheint.</p>
<p>So sah es vorher aus:</p>
<p><a  href="/wp-content/uploads/2015/07/bilder_index.png"><img loading="lazy" class="alignnone size-large wp-image-32974" src="/wp-content/uploads/2015/07/bilder_index-600x393.png" alt="bilder_index" srcset="/wp-content/uploads/2015/07/bilder_index-600x393.png 600w, /wp-content/uploads/2015/07/bilder_index-150x98.png 150w, /wp-content/uploads/2015/07/bilder_index-300x197.png 300w, /wp-content/uploads/2015/07/bilder_index.png 856w" sizes="(max-width: 474px) 100vw, 474px" /></a></p>
<p>Und so jetzt:<br>
<a  href="/wp-content/uploads/2015/07/bilder_index_danach.png"><img loading="lazy" class="alignnone size-large wp-image-32975" src="/wp-content/uploads/2015/07/bilder_index_danach-600x393.png" alt="bilder_index_danach" srcset="/wp-content/uploads/2015/07/bilder_index_danach-600x393.png 600w, /wp-content/uploads/2015/07/bilder_index_danach-150x98.png 150w, /wp-content/uploads/2015/07/bilder_index_danach-300x197.png 300w, /wp-content/uploads/2015/07/bilder_index_danach.png 856w" sizes="(max-width: 474px) 100vw, 474px" /></a></p>

<h2 id="technische-umsetzung" data-numberify>Technische Umsetzung<a class="anchor ms-1" href="#technische-umsetzung"></a></h2>
<p>Zur Erzeugung der Galerien wurde <a  href="/2014/04/neue-version-von-fgallery-zur-erzeugung-statischer-galerien/">fgallery</a> verwendet. Die Galerien benötigen danach nur statisches HTML und JavaScript. Man benötigt dafür nur einen einfachen Webserver ohne PHP oder Datenbank.</p>
<p>Ein sehr einfaches Script für diese Aufgabe ist z. B.:</p>
<pre>#!/bin/bash
FGALLERY="/usr/local/fgallery-1.7/fgallery"
IMAGEDIR="${1}"
mv "${IMAGEDIR}" ".${IMAGEDIR}_src"
"${FGALLERY}" -d -s -j2 ".${IMAGEDIR}_src" "${IMAGEDIR}"</pre>
<p>Aufgerufen wird es mit:</p>
<pre>scriptname bilder_von_bla</pre>
<p>Das Script benennt das Verzeichnis „bilder_von_bla“ im aktuellen Verzeichnis um in „.bilder_von_bla_src“ und erzeugt in einem „neuen“ Verzeichnis mit dem vorherigen Namen „bilder_von_bla“ eine Galerie mittels <a  class='urlextern'  href="http://www.thregr.org/~wavexx/software/fgallery/index.html">fgallery</a>.</p>
<p>Wichtig ist dabei, dass am Ende des Verzeichnisses kein Schrägstrich steht.</p>
<p>Wenn man die Originaldateien nicht mehr benötigt, dann kann man die versteckten Verzeichnisse mit _src am Ende danach löschen. In meinem Fall hat sich der Speicherplatz von ~400 auf ~80 MiB verringert :)</p>
<p>Passt.</p>]]></content:encoded></item><item><title>Neue Version von fgallery zur Erzeugung statischer Galerien</title><link>https://natenom.de/2014/04/neue-version-von-fgallery-zur-erzeugung-statischer-galerien/</link><pubDate>Fri, 18 Apr 2014 08:53:16 +0000</pubDate><guid>https://natenom.de/2014/04/neue-version-von-fgallery-zur-erzeugung-statischer-galerien/</guid><description>&lt;p>Mittels &lt;a class='urlextern' href="http://www.thregr.org/~wavexx/software/fgallery/index.html"title="fgallery: a modern, minimalist javascript photo gallery">fgallery&lt;/a> kann man offline eine Bildergalerie aus einer Liste von Bildern oder aus einem Verzeichnis mit Bildern erstellen, diese hochladen und muss sich dann nie wieder darum kümmern. Es werden lediglich HTML, CSS und JavaScript verwendet.&lt;/p></description><content:encoded><![CDATA[<p>Mittels <a  class='urlextern'  href="http://www.thregr.org/~wavexx/software/fgallery/index.html"title="fgallery: a modern, minimalist javascript photo gallery">fgallery</a> kann man offline eine Bildergalerie aus einer Liste von Bildern oder aus einem Verzeichnis mit Bildern erstellen, diese hochladen und muss sich dann nie wieder darum kümmern. Es werden lediglich HTML, CSS und JavaScript verwendet.</p>
<p>Der Entwickler der Anwendung hat gestern die neue Version 1.6 herausgegeben, in der die Metadaten von den Vorschaubildern und den verkleinerten Bildern automatisch entfernt werden. In den Bildern mit voller Auflösung bleiben diese jedoch weiterhin enthalten; das Hinzufügen dieser kann jedoch unterdrückt werden.</p>
<p>Die wenigen weiteren Änderungen gibt es im Changelog, <a  class='urlextern'  href="http://www.thregr.org/~wavexx/software/fgallery/NEWS.html"title="http://www.thregr.org/~wavexx/software/fgallery/NEWS.html">siehe hier</a>.</p>
<p>Interessant ist auch die geänderte ToDo-Liste:</p>
<ul>
<li>Videos ermöglichen</li>
<li>Übersichtsmodus mit Vorschaubildchen</li>
<li>Möglichkeit, die Thumbnails zu deaktivieren</li>
<li>EXIF-Daten anzeigen, <a  class='urlextern'  href="https://github.com/wavexx/fgallery/issues/17"title="Additional exif information · Issue #17 · wavexx/fgallery · GitHub">siehe hier</a></li>
</ul>
<p>Bin gespannt :)</p>
<p> </p>]]></content:encoded></item><item><title>Statische Bildergalerie – Update für fgallery …</title><link>https://natenom.de/2014/01/statische-bildergalerie-update-fuer-fgallery/</link><pubDate>Wed, 29 Jan 2014 16:16:45 +0000</pubDate><guid>https://natenom.de/2014/01/statische-bildergalerie-update-fuer-fgallery/</guid><description>&lt;p>fgallery ist ein Perl-Script, mit dem man eine statische Bildergalerie erzeugen kann. Diese lädt man dann irgendwo auf einen Webspace hoch. PHP oder eine Datenbank werden nicht benötigt, es läuft alles mit HTML und JavaScript. Einmal hochgeladen, muss man sich um solche eine Bildergalerie nie wieder Gedanken machen. Weitere Informationen zu fgallery &lt;a href="/2013/11/statische-online-galerie-update-fuer-fgallery-version-1-2/"title="Statische Online-Galerie: Update für fgallery (Version 1.2)">gibt es hier&lt;/a>.&lt;/p></description><content:encoded><![CDATA[<p>fgallery ist ein Perl-Script, mit dem man eine statische Bildergalerie erzeugen kann. Diese lädt man dann irgendwo auf einen Webspace hoch. PHP oder eine Datenbank werden nicht benötigt, es läuft alles mit HTML und JavaScript. Einmal hochgeladen, muss man sich um solche eine Bildergalerie nie wieder Gedanken machen. Weitere Informationen zu fgallery <a  href="/2013/11/statische-online-galerie-update-fuer-fgallery-version-1-2/"title="Statische Online-Galerie: Update für fgallery (Version 1.2)">gibt es hier</a>.</p>
<p>Im Januar gab es bereits zwei Updates der <a  class='urlextern'  href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html"title="GNU General Public License v2.0 - GNU Project - Free Software Foundation">GPLv2</a> lizenzierten Software; die interessanten Änderungen sind:</p>
<ul>
<li>
<p>Es ist nicht mehr notwendig, manuell das Verzeichnis mit der Vorlage in das Zielverzeichnis zu kopieren, daher reicht z. B. der folgende Befehl aus, eine Galerie in /tmp/g zu erstellen:</p>
<pre><code>fgallery /pfad/zu/bildern /tmp/g &quot;Name der Galerie&quot;
</code></pre>
</li>
<li>
<p>Es kann mit -j angegeben werden, wieviele Threads parallel genutzt werden sollen, um Bilder zu verarbeiten</p>
</li>
<li>
<p>Schnellere Erzeugung des Bildarchivs, wenn p7zip installiert ist</p>
</li>
</ul>
<p>Die gesamte Liste <a  class='urlextern'  href="http://www.thregr.org/~wavexx/software/fgallery/NEWS.html"title="http://www.thregr.org/~wavexx/software/fgallery/NEWS.html">findet sich hier</a>.</p>

<h2 id="leerzeichen8230" data-numberify>Leerzeichen&#8230;<a class="anchor ms-1" href="#leerzeichen8230"></a></h2>
<p>Verzeichnisse mit Leerzeichen bereitem dem Programm Probleme; dies wurde in der aktuellen Version in <a  class='urlextern'  href="https://github.com/wavexx/fgallery"title="wavexx/fgallery · GitHub">Git</a> behoben; den Download dazu <a  class='urlextern'  href="https://github.com/wavexx/fgallery/archive/master.zip"title="https://github.com/wavexx/fgallery/archive/master.zip">gibt es hier</a>.</p>

<h2 id="gentoo8230" data-numberify>Gentoo&#8230;<a class="anchor ms-1" href="#gentoo8230"></a></h2>
<p>Auf meinem Gentoo musste perl mit dem USE-Flag &ldquo;ithreads&rdquo; neu kompiliert werden, welches per Voreinstellung nicht aktiviert ist, da es damit Kompatibilitätsprobleme geben soll.</p>

<h2 id="o" data-numberify>\o/<a class="anchor ms-1" href="#o"></a></h2>
<p>Die Projektseite von fgallery findet <a  class='urlextern'  href="http://www.thregr.org/~wavexx/software/fgallery/index.html"title="fgallery: a modern, minimalist javascript photo gallery">sich hier</a>. Eine <a  class='urlextern'  href="http://www.thregr.org/~wavexx/software/fgallery/demo/"title="http://www.thregr.org/~wavexx/software/fgallery/demo/">Demo-Galerie</a> gibt es auch.</p>
<p>Es fehlt nur noch die Anzeige der Exif-Daten, dann kann ich das für alle <a  href="/tags/fotos/">Bildergalerien</a> verwenden :)</p>
<p></p><figure class="image-caption"><picture><source type="png" srcset="/2014/01/statische-bildergalerie-update-fuer-fgallery/fgallery_1.4-cover.png" />
			         <img alt="Screenshot eines Beispielalbums. Oben ein großes Bild und darunter kleine Thumbnails." src="/2014/01/statische-bildergalerie-update-fuer-fgallery/fgallery_1.4-cover.png" title="" width="808" height="619" loading="lazy" /></picture><figcaption></figcaption></figure><p>
</p>]]></content:encoded><enclosure url="https://natenom.de/2014/01/statische-bildergalerie-update-fuer-fgallery/fgallery_1.4-cover.png" length="765258" type="image/png"/></item><item><title>Statische Online-Galerie: Update für fgallery (Version 1.2)</title><link>https://natenom.de/2013/11/statische-online-galerie-update-fuer-fgallery-version-1-2/</link><pubDate>Sat, 30 Nov 2013 20:32:56 +0000</pubDate><guid>https://natenom.de/2013/11/statische-online-galerie-update-fuer-fgallery-version-1-2/</guid><description><![CDATA[<p>Mittels fgallery erzeugt man auf der Kommandozeile eine Bilder-Galerie, die man dann auf irgendeinen Webspace hochladen kann und um das man sich nie wieder kümmern muss, da nur HTML und JavaScript verwendet werden.</p>
<p>Heute wurde die Version 1.2 freigegeben. Das Projekt verwendet die Lizenz <a  class='urlextern'  href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GPLv2</a>.</p>]]></description><content:encoded><![CDATA[<p>Mittels fgallery erzeugt man auf der Kommandozeile eine Bilder-Galerie, die man dann auf irgendeinen Webspace hochladen kann und um das man sich nie wieder kümmern muss, da nur HTML und JavaScript verwendet werden.</p>
<p>Heute wurde die Version 1.2 freigegeben. Das Projekt verwendet die Lizenz <a  class='urlextern'  href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GPLv2</a>.</p>
<h2 id="eigenschaften-von-fgallery" data-numberify>Eigenschaften von fgallery<a class="anchor ms-1" href="#eigenschaften-von-fgallery"></a></h2>
<ul>
<li>
<p>Bilder werden automatisch ausgerichtet</p>
</li>
<li>
<p>Aussehen wurde für mobile Geräte angepasst</p>
</li>
<li>
<p>Die Wischfunktion ist auf mobilen Geräten verfügbar</p>
</li>
<li>
<p>Wechselt automatisch zwischen vertikalem und horizontalem Modus, sowohl auf mobilen Geräten als auch auf dem Desktop. Hier am Beispiel von Firefox auf Android: </p><figure class="image-caption"><picture><source type="png" srcset="/2013/11/statische-online-galerie-update-fuer-fgallery-version-1-2/fgallery_in_ff_mobile_horizontal-cover.png" />
			         <img alt="fgallery Screenshot horizontal" src="/2013/11/statische-online-galerie-update-fuer-fgallery-version-1-2/fgallery_in_ff_mobile_horizontal-cover.png" title="" width="800" height="480" loading="lazy" /></picture><figcaption></figcaption></figure><p>
 </p><figure class="image-caption"><picture><source type="png" srcset="/2013/11/statische-online-galerie-update-fuer-fgallery-version-1-2/fgallery_in_ff_mobile_vertical.png" />
			         <img alt="fgallery Screenshot vertikal" src="/2013/11/statische-online-galerie-update-fuer-fgallery-version-1-2/fgallery_in_ff_mobile_vertical.png" title="" width="480" height="800" loading="lazy" /></picture><figcaption></figcaption></figure><p>
</p>
</li>
<li>
<p><a  class='urlextern'  href="http://www.thregr.org/~wavexx/software/fgallery/index.html#portraits-and-face-detection">Gesichtserkennung</a> für die Generierung von Thumbnails, sodass ein Gesicht in der Mitte der Vorschau zu sehen ist</p>
</li>
<li>
<p>Enthält per Voreinstellung alle Originalbilder in einer Zip-Datei zum Herunterladen</p>
</li>
<li>
<p>Sortiert wird nach Aufnahmedatum</p>
</li>
</ul>

<h2 id="angucken" data-numberify>Angucken<a class="anchor ms-1" href="#angucken"></a></h2>
<p>Eine Demo-Galerie des Entwicklers gibt es <a  class='urlextern'  href="http://www.thregr.org/~wavexx/software/fgallery/demo/">hier</a>.</p>

<h2 id="verwendung" data-numberify>Verwendung<a class="anchor ms-1" href="#verwendung"></a></h2>
<p>Die Erzeugung einer eigenen Galerie wird <a  class='urlextern'  href="http://www.thregr.org/~wavexx/software/fgallery/index.html#usage">hier</a> beschrieben. Das Ergebnis kann man irgendwo hochladen, fertig.</p>

<h2 id="herunterladen-und-code" data-numberify>Herunterladen und Code<a class="anchor ms-1" href="#herunterladen-und-code"></a></h2>
<p>Herunterladen kann man fgallery <a  class='urlextern'  href="http://www.thregr.org/~wavexx/software/fgallery/releases/">hier</a>; der Quelltext liegt auch auf <a  class='urlextern'  href="https://github.com/wavexx/fgallery">GitHub</a>.</p>

<h2 id="fazit" data-numberify>Fazit<a class="anchor ms-1" href="#fazit"></a></h2>
<p>Sehr schön, weil man so eine Galerie einmal hochladen kann und dann keine Arbeit mehr damit hat.</p>
<p>Was mir zum Einsatz für <a  href="/tags/fotos/">eigene Bilder</a> noch fehlt ist die Anzeige der Exif-Daten wie z. B. Belichtungszeit und anderer relevanter Daten für Fotografie. Aber das steht auf der <a  class='urlextern'  href="http://www.thregr.org/~wavexx/software/fgallery/index.html#todo">Todo-Liste des Entwicklers</a>.</p>]]></content:encoded><enclosure url="https://natenom.de/2013/11/statische-online-galerie-update-fuer-fgallery-version-1-2/fgallery_in_ff_mobile_horizontal-cover.png" length="321617" type="image/png"/></item></channel></rss>