Kirby Learnings: Part 2

02.11.2023 07:49 Uhr

Nach der Umstellung auf Kirby, hab ich noch einiges gelernt und möchte das festhalten.

Spaltenbreiten im Panel

Ich hab ewig versucht zwei Toggles in einer Spalte mit 1/3-Breite nebeneinander zu setzen, weil eigentlich genug Platz wäre. Das geht aber offenbar nicht. Wenn ich die Spalte auf 1/2 setze, klappt es und die beiden Switches stehen schön nebeneinander. Das gefällt mir aber im Ganzen nicht, so dass ich die Felder nach links über das Content-Textfeld geholt hab.

toggles in 1/3 Spalte leider untereinander
toggles in breiterer Spalte nebeneinander, wie gewünscht

Collections

Gut zu wissen und wohl auch irgendwie logisch, dass in der config.php noch keine Collections zur Verfügung stehen, die in /collections angelegt wurden. Sprich, man muss die Queries "ausschreiben".

In der Config sieht das für das Feed-Plugin z.B. so aus:

 $feed = page('blog')->children()->listed()->filterBy('tags', 'Wochenrückblick', ',')->sortBy(function ($page) {
                    return $page->published()->toDate();
                }, 'desc')->limit(10)->feed($options);

Die Collection "wochenrueckblicke", die sich hier nicht nutzen ließ:

return function ($site) {
    return $site->find('blog')->children()->listed()->flip()->filterBy('tags', 'Wochenrückblick', ',');
};

also eigentlich hätte ich in der Config gern Folgendes genutzt

 $feed = $kirby->collection("wochenrueckblicke")->sortBy(function ($page) {
                    return $page->published()->toDate();
                }, 'desc')->limit(10)->feed($options);

Das ging aber nicht.

Sortierung von Unterordnern

Quelle

num: '{{ page.published.toDate("Ymd") }}'

Sorgt dafür, dass Folder nicht z.B. "4_wochenrueckblick-kw39-2023" heißen sondern "231001_wochenrueckblick-kw39-2023". Wird angepasst, sobald man über's Panel etwas an der Seite ändert und speichert, also nicht für alle bereits angelegten Seiten und deren Ordner. Heißt: Idealerweise so im Blueprint (article.yml bei mir) einstellen, bevor man unzählige Artikel anlegt. "published" ist hierbei das Veröffentlichungsdatum des Artikels, Beispiel Published: 2023-10-01 12:18:00

Caching

Hat bei mir für fehlerhafte Darstellungen gesorgt, bin noch nicht sicher warum, hab ich erstmal wieder deaktiviert. Bin auch nicht sicher ob das wegen der dynamischen externen Inhalte bei mir Sinn macht (Startseite z.B. mit letzten Mastodon-Post und Bildern von Mastodon). Diese hätte ich vom Caching ausschließen können, aber eigentlich will man ja grade, dass die Startseite schnell lädt. Folgendes hatte ich in der config.

    cache
    'cache' => [
        'pages' => [
          'active' => true,
          'ignore' => function ($page) {
            return $page->nocache()->value() === true;
          }
        ]
    ],

XML-Sitemap

Über das Feed-Plugin. config-Part sieht so aus:

[
            'pattern' => 'sitemap.xml',
            'method' => 'GET',
            'action'  => function () {
                $options = [
                    'images'       => false,
                    'videos'       => false,
                ];
                $feed = site()->index()->listed()->filterBy('hidefromweb', '!=', 'true')->limit(50000)->sitemap($options);
                return $feed;
            }
        ],

hidefromweb ist ein eigener Wert, den ich nutze um Artikel nur im RSS-Feed und nicht auf der Website zu veröffentlichen. Dachte erst ich könnte den Status 'unlisted' nutzen, aber das ist zu sehr verdrahtet und ich nutze hier lieber etwas Eigenes.

Artikel aus dem RSS-Feed ausschließen

Als Gegenpart zu hidefromweb gibt es hidefromrss. Config-Part:

 $feed = page('blog')->children()->listed()->filterBy('hidefromrss', '!=', 'true')->sortBy(function ($page) {
                    return $page->published()->toDate();
                }, 'desc')->limit(10)->feed($options);

Backups

Das Backup-Plugin funktioniert nicht (mehr). Siehe auch. Janitor war installiert. Ich warte erstmal auf Kirby v4, ansonsten bau ich mir was Eigenes.

Minify

Beim ersten Versuch mit dem Plugin klappen die Comments nicht mehr. Ich teste mich mal durch die Einstellungen. Edit: done, inline javascript musste angepasst werden.

Random Teasers

Nicht wirklich ein Kirby-Learning aber es gibt vereinzelte Artikel ohne Beitragsbild. Da ich dafür aber trotzdem gern Teaser-Images auf der Startseite und der Blog-Indexseite haben wollte hab ich mit Haikei zufällige Wellenform-Bilder erstellt, wie auch im Hintergrund der Website. Davon wird beim Aufruf zufällig eins ausgesucht und beim Teaser angezeigt jetzt.

zufälliges Teaserbild

Alle Bilder der kompletten Seite

Mit $site->index()->images() kommt man an alle Bilder der Website. Daraus hab ich ne collection gebaut und die nach Änderungsdatum des Bildes sortiert: foreach($kirby->collection("all-images")->sortBy('modified', 'desc') as $image). DIe Seite /bilder ist noch im Aufbau.

Ausbau Suchergebnisse

autofocus im Suchfeld, damit man beim Aufruf der Seite direkt tippen kann. Außerdem Ergebnisse in Seiten und Artikel aufgeteilt und Anzahl der Ergebnisse mit eingebunden unter Beachtung von "hidefromweb".

<?php 
 $resultsAll = $results->filterBy('hidefromweb', '!=', 'true'); 
 $resultsPages = $results->filterBy('template', '!=', 'article')->filterBy('hidefromweb', '!=', 'true'); 
 $resultsArticles = $results->filterBy('template', 'article')->filterBy('hidefromweb', '!=', 'true'); 
...
 if (count($resultsPages) > 0 ): 
?>

Weiterhin offen

  • Backup
  • Stats im Panel (Total Count Likes zB)
  • funktionierendes minify
  • Dateinamen von Uploads nicht ausschließlich lowercase. Möglich?
  • Darstellung von Audiofiles in der Mediengalerie auf der Startseite (nicht kirby) done
  • nächster und vorheriger Artikel ohne die versteckten (hidefromweb)

— Sascha

Letzte Änderung: 28.04.2024 15:19 Uhr
teilen mit Elk
Sascha
von
Antworten, Likes, Boosts.
« Vorheriger Artikel Nächster Artikel »

© 2024 assbach.de · Private Website von Sascha Aßbach. Umgesetzt mit Kirby 4 · RSS-Feed

Freiberufliches, Design, Webdevelopment bei assbach.com