Update-Anleitung

Version 2 to 3

WATCH OUT!

Das Update auf Version 3 enthält mehrere Breaking Changes!

Komments 3 nutzt eine neue Datenstruktur zum Speichern von Kommentaren. Aus diesem Grund müssen alte Kommentare migriert werden. Das Plugin löscht keine alten Kommentare, um das Risiko von Datenverlust zu verringern. Je nach gewähltem Speichertyp muss es jedoch in die einzelnen Page-Dateien schreiben.

Bitte:

  1. Sichere Deine Daten
  2. Teste die Migration erst lokal oder auf einer Testinstanz, nicht direkt im Live-Betrieb

Version 3 bringt grundlegende Änderungen in allen Aspekten des Plugins mit sich. Du musst Deine Templates und Code an die neue Version anpassen.

Speichertypen

Das Plugin ist jetzt weitaus flexibler bei der Auswahl von Speichertypen. Du kannst aus zwei Speicheroptionen wählen:

  • Dateispeicher
  • Datenbank-Speicher

Dateispeicher speichert alle Kommentare in den Page-Dateien, wie schon in der vorherigen Version. Dies funktioniert ausreichend gut für Websites mit einer geringen Anzahl von Kommentaren. Diese Speicherart unterstützt nicht alle neuen Funktionen wie die Stapelverarbeitung. Ich empfehle den Wechsel zum Datenbank-Speicher.

Datenbankspeicherung speichert alle Kommentare in einer SQLite-Datenbank. Das ist schneller und zuverlässiger als das Speichern in Dateien. Außerdem unterstützt es alle neuen Funktionen wie die Stapelverarbeitung. Wenn Du zu einer Datenbank wechseln kannst, empfehle ich es Dir.

SQLite ist der neue Standardspeichertyp.

Migration

Du musst alte Kommentare in die neue Datenstruktur umwandeln. Es gibt zwei Möglichkeiten, dies zu tun:

  1. Nutze die Panel-Ansicht zur Migration der Kommentare (empfohlen).
  2. Nutze die Migrationsklasse, um Kommentare in einem Skript zu migrieren.

Beide Optionen sind einfach zu handhaben. Alte Kommentare werden nicht gelöscht, Du musst nach der Migration selbst aufräumen. Das ist wichtig, um Datenverlust zu vermeiden.

Speichertyp konfigurieren.

Lege den Speichertyp in Deiner config.php fest. Im Fall von SQLite musst Du den Pfad angeben, in dem die Datenbank gespeichert ist. Wähle einen Pfad, in dem die Datenbankdatei geschrieben werden kann und der ggf. schon in einer Sicherungskopie landet. Der Ordner "content" könnte ein guter Ort dafür sein.

'mauricerenck.komments.storage.type' => 'sqlite',
'mauricerenck.komments.storage.sqlitePath' => './content/.db/',

Wenn Du den Dateispeicher-Typ verwenden möchtest, musst Du die folgende Konfiguration festlegen:

'mauricerenck.komments.storage.type' => 'markdown',

Die Migration ausführen

Wenn SQLite als Speichertyp festgelegt ist, führt das Plugin beim nächsten Aufruf der Seite oder des Panels die Datenbankmigration aus. Es sollte eine Datenbankdatei im angegebenen Pfad erstellt werden.

Du musst auch alte Kommentare migrieren. Aktiviere die Kommentarmigration, indem Du Folgendes in Deiner config.php festlegst:

'mauricerenck.komments.migrations.comments' => true

Migration im Panel (empfohlen)

Um alte Kommentare in die neue Struktur zu migrieren, kannst Du Dich im Panel anmelden und die Ansicht „Kommentare“ in der linken Seitenleiste öffnen. Solange der Migrationsmodus aktiviert ist, wird der Migrationsscreen angezeigt:

Drücke einfach den Button, um die Migration zu starten. Das Plugin durchsucht alle Seiten nach Kommentaren, listet jede Seite auf und beginnt dann, jeden Kommentar zu migrieren. Schließe bitte die Seite nicht, bis die Migration abgeschlossen ist.

Migration via Migration Klasse

Wenn Du die Migration in einem Skript ausführen möchtest, kannst Du die Klasse KommentsMigration verwenden. Hier ist ein Beispiel:

<?php
$migration = new mauricerenck\Komments\Migrations();
$migration->convertComments();
?>

Das macht im Grunde dasselbe wie die Migration im Panel, aber in einem Schritt.

Ich empfehle, die Migration über das Panel durchzuführen, da du so das Risiko von Timeouts reduzierst, besonders wenn du eine große Anzahl von Kommentaren hast.

Nach der Migration kannst Du die alten Kommentare aus Deinen Page-Dateien löschen. Das ist aber nicht notwendig.

Sobald fertig, öffne die config.php und setze mauricerenck.komments.commentMigration auf false. Beim nächsten Öffnen der Komments-Ansicht im Panel siehst Du die normale Ansicht mit ausstehenden Kommentaren.

Templates und Snippets anpassen

Eine der größten Änderungen ist der Zugriff auf die Kommentare. Es gibt keine Arrays von Kommentaren und Daten mehr. Stattdessen ist alles eine Structure, wie Du es von Kirby kennst. Auf diese Weise wird der Zugriff und die Filterung von Kommentaren viel einfacher. Das bedeutet aber auch, dass Du Deine Templates und Snippets an die neue Struktur anpassen musst, sofern Du eigene verwendest.

Veraltete snippets

snippet name snippet path new snippet name new snippet path
komments/webmention webmentions-splitted.php DEPRECATED
omments/webmention-splitted webmentions-splitted.php DEPRECATED
komments/kommentform kommentform.php komments/form form.php
komments/type/like mention-type-like.php komments/response/like response-like.php
komments/type/reply mention-type-reply.php komments/response/reply response-reply.php
komments/type/repost mention-type-repost.php komments/response/repost response-repost.php
komments/type/mention mention-type-mention.php komments/response/mention response-mention.php

Neue snippets

snippet description filename
komments/form Zeigt das Kommentarformular. form.php
komments/response/base Basis für jeden Response-Typ anpassbar durch slots response-base.php
komments/response/comment Einzelner Kommentar response-comment.php
komments/response/like Einzelnes Like response-like.php
komments/response/mention Einzelne Mention response-mention.php
komments/response/reply Einzelne Reply response-reply.php
komments/response/repost Einzelner Repost response-repost.php
komments/list/comments Liste aller öffentlichen Kommentare list-comments.php
komments/list/likes Liste aller Likes list-likes.php
komments/list/mentions Liste aller Mentions list-mentions.php
komments/list/replies Liste aller Replies list-replies.php
komments/list/reposts Liste aller Reposts list-reposts.php

Kommentare empfangen

Kommentare können nun mithilfe einer Page-Methode anstelle der Frontendklasse abgerufen werden.

In Version 2

$kommentsFrontend = new mauricerenck\Komments\KommentsFrontend();
$commentList = $kommentsFrontend->getCommentList($page);

In Version 3

$commentList = $page->comments();

Anzeigen von Kommentaren und Webmentions.

Der Zugriff und Umgang mit Kommentaren wurden in Version 3 enorm vereinfacht. Alles ist eine Collection oder Structure, sodass Du damit wie mit Seiten oder eigenen Structures arbeiten kannst.

Reaktionen auflisten

In Version 2

<?php if ($commentList['replies']->count() > 0) : ?>
    <ul class="list-replies">
        <?php foreach ($commentList['replies'] as $comment) : ?> 
            DISPLAY RESPONSE
        <?php endforeach; ?>
    </ul>
<?php endif; ?>

In Version 3

<?php if ($comments = $commentList->filterBy('type', 'comment')) : ?>
    <ul class="list-comments">
        <?php foreach ($comments as $comment) ?> 
            DISPLAY RESPONSE
        <?php endforeach; ?>
    </ul>
<?php endif; ?>

Eine Reaktion anzeigen

In Version 2 hat jede Antwortart ihr eigenes Snippet. In Version 3 verwendet jede Antwort das Basis-Response-Snippet, welches mit Slots nutzt, die individuell von den jeweiligen Antworttypen gefüllt werden.

Du kannst auf die Daten jeder Antwort wie auf Seiten zugreifen. Zum Beispiel, um den Text eines Kommentars anzuzeigen:

<?= $comment->content()->kirbytext(); ?>

Hier ist eine Liste aller Felder.

Das sollte es gewesen sein. Schau Dir bitte die anderen Dokumentationen an, um weiteres Finetuning vorzunehmen.