Es gibt verschiedene Möglichkeiten, Kommentare auf Deinen Seiten aufzulisten. Die einfachste ist die Verwendung der Plugin-Snippets. Es gibt Snippets für jede Art von Antwort (Kommentare und Webmentions). Es gibt jeweils ein für die gesamte Liste und ein Snippet für jeden einzelnen Eintrag.
Snippets für Listen
Um eine verschachtelte Liste von Kommentaren anzuzeigen, kannst Du Snippet für Kommentare nutzen:
<?php snippet('komments/list/comments'); ?>
Du kannst jede Art von Antwort so auflisten. Ersetze einfach die Art der Antwort, die du anzeigen möchtest. Eine Liste mit Likes sieht so aus:
<?php snippet('komments/list/likes'); ?>
Einzelne Antwort
Jeder Antworttyp hat ebenfalls ein eigenes Snippet. Um einen einzelnen Kommentar anzuzeigen, kannst Du folgendes Snippet verwenden:
<?php snippet('komments/response/comment', ['comments' => $comments, 'comment' => $comment]); ?>
Beachte bitte, dass das Kommentar-Snippet zwei Parameter benötigt. Es braucht nicht nur den einzelnen Kommentar, sondern die vollständige Liste, um den verschachtelten Baum zu erstellen. Alle anderen Snippets benötigen lediglich den einzelnen Kommentar als Parameter:
<?php snippet('komments/response/like', ['comment' => $comment]); ?>
Anpassungen
Natürlich kannst Du jedes Snippet an Deine Bedürfnisse anpassen, indem Du es überschreibst:
- Erstelle ein neues Snippet unter
site/snippets/list/TYPE.php
odersite/snippets/response/TYPE.php
- Kopiere den Code aus dem existierenden Snippet in das neue.
- Führe Änderungen nach Deinem Geschmack durch.
Hier die vollständige Liste der Snippets und wo Du sie findest.
Eigene Auflistungen
Anstatt die Snippets zu verwenden, kannst Du alles von Grund auf neu erstellen.
Hole Dir alle veröffentlichten Kommentare einer Seite:
$commentList = $page->comments();
Jetzt hast Du eine Structure. Du kannst sie filtern oder sie durchlaufen, wie Du es mit Seiten tun würdest. Du könntest alle Kommentare auflisten:
<?php if ($comments = $commentList->filterBy('type', 'comment')) : ?>
<ul class="list-comments">
<?php foreach ($comments as $comment) ?>
// DISPLAY RESPONSE
<?php endforeach; ?>
</ul>
<?php endif; ?>
Wie Du siehst, gibt es eine Filtermöglichkeit, um nur Kommentare zu bekommen. Du kannst jedes Feld filtern. Siehe Datenstrukturen
In Deinen foreach Schleifen kannst Du die Snippets verwenden oder eigenen Code. Es gibt ein Basis-Snippet, das Du möglicherweise verwenden möchtest. Es verfügt über Slots, damit Du es leicht anpassen kannst.
Kommentar schreiben