knuspermagier.de
Ein L und zwei P. Philipp!

Kirby Nervigkeiten

Ich habe mehrere Kirby-Blogs und viele Seiten gemacht und ich würde Kirby auch jeder Zeit wieder für alles mögliche verwenden, doch ab und zu gibt es wirklich so Kleinkram, der mich einfach nervt, weil ich denke, ach komm, das ist schnell gemacht, und dann geht es einfach nicht. Das betrifft vor allem Sachen im Panel.

Macht zum Beispiel mal ein type: blocks-Feld und darunter eine section vom Typ files. Angenommen, ihr wollt im dem blocks nun eine Galerie einfügen, wäre es super, wenn man direkt aus der files-Section eine Datei reindroppen könnte, statt zuerst in den Edit-Mode der Gallerie zu gehen und dort auf “Select Files” zu drücken? Geht leider nicht.

Man kann nichtmal aus dem Finder direkt Sachen auf das Gallerie-Preview droppen. Ahh.


Natürlich bin ich auch Programmierer und weiß, dass

  • a) Ich hier ein absolutes Nischenproblem habe, was vorher einfach keinem auffiel, weil die meisten so eine Seite halt einmal anlegen, die Bilder in die Galerie packen und fertig.
  • b) Das sich das nicht mal eben implementieren lässt, da da sicher ein riesiger Rattenschwanz dran hängt, so eine Drag-and-Drop Funktion über verschiedene Komponenten zu bauen, die intern sicher auch noch unterschiedlich aufgebaut sind, weil sie warhscheinlich mit vier Jahren Zeitabstand entwickelt wurden, oder so. Ich würde mich auch anbieten, das einzubauen, fürchte mich aber auch einfach vor zweihundert Jahren Pull-Request-Review, weil es eigentlich erstmal architekturell bedacht werden muss.

Immerhin kann ich mir anderweitig helfen. Alles was ich wollte, war Bilder in einem Grid anzeigen. Alles auf das blocks-Feld umzustellen, nur um zwei Bilder nebeneinander anzuzeigen, wäre eh irgendwie overengineert gewesen. Daher einfach kurz dieser schmutzige Hack:

'hooks' => [
        'kirbytags:before' => function ($text, array $data = [], array $options = []) {
            return preg_replace_callback('/\(grid\)(.*)\(\/grid\)/isU', function ($match) {
                return sprintf('<div class="blog-image-grid"><div class="blog-image-grid-inner">%s</div></div>', $match[1]);
            }, $text);
        }
    ],

Und schon kann ich im Post einfach folgendes verwenden:

(grid)
(imag3: blubb.jpg)
(imag3: blabb.jpg)
(/grid)

(CSS gibts natürlich auch noch.)

So leicht kann's dann doch sein sein! Danke, Kirby.