Useragent mit im Like-Hash
$visitor = md5('v-' . kirby()->visitor()->ip() . kirby()->visitor()->userAgent() );
Hat den Vorteil, dass mehrere Personen aus einem Hashalt (mit der gleichen IP-Nummer) den gleichen Artikel liken können. Ich hab dazu einen Fork des Originalplugins von Medienbäcker erstellt und ihn gefragt ob das so passt für ihn. Er hat angeboten, dass wir die Idee mit in den Masterbranch übernehmen, wow, find ich geil. Würde das aber wenn, optional einbinden wollen, also so dass der Entwickler in der Config entscheiden kann ob er den Useragent mit in den Hash einbezieht. Das klappt hier bei mir schon soweit. Ins Repository hole ich das später noch.
In dem Zusammenhang dann Folgendes gelernt:
Werte aus der Config nutzen
Config:
'assbach.likes' => [
'useragent' => true, #put useragent/browser in hash
],
Plugin:
if( option('assbach.likes.useragent', false) === true ) { ... }
edit: Maurices Tipp aus den Kommentaren hier übernommen, Danke.
Stats im Panel

Ich wollte gern die Summe aller Likes im Panel angezeigt bekommen und hab mir lange einen abgebrochen. Am Ende hab ich es über ne Collection gelöst, die direkt den Wert übergibt.
Collection "all-likes-count":
return function ($site) {
return count($site->find('blog')->children()->listed()->pluck('likes',";"));
};
Blueprint:
sections:
stats:
type: stats
size: huge
reports:
- label: Likes
value: "{{ kirby.collection('all-likes-count') }}"
theme: positive
- label: Bilder
value: "{{ site.index.images.count }}"
- label: Artikel
value: "{{ site.find('blog').children.count }}"
link: https://assbach.de/panel/pages/blog
- label: Songs
value: "{{ site.index.audio.count }}"
link: https://assbach.de/assbach-singt
In einem Template sähe das so aus:
<?= $kirby->collection("all-likes-count"); ?>
Einige Sachen aus dieser Anleitung hab ich im Panel nicht ans Laufen bekommen, siehe weiter unten.
Speichern und Aktualisieren von Felder in einer Page
$page = $page->update(
[
'likes' => $page->likes()->value() . $visitor . ';',
'pageLikeCount' => $pageLikeCount
]);
Siehe auch Docs.
Page Models
in den Docs.
Wollte ich eigentlich für die Likes im Panel nutzen, wie oben erwähnt, hat aber nicht funktioniert. In Page-Templates allerdings schon, hier ein paar Beispiele:
site/models/blogindex.php
<?php
class BlogindexPage extends Page {
public function modelval() {
return "this comes from a model";
}
}
?>
site/templates/blogindex.php
from model: <?= $page->modelval();
mit Übergabe eines einfache Arrays
class BlogindexPage extends Page
{
public function modelValues(): array
{
return [
'label' => 'Revenue',
'value' => 326
];
}
}
im template
dump( $page->modelValues() );
from model: <?= $page->modelValues()['label']; ?>
mit Übergabe eines mehrdimensionalen Arrays:
class BlogindexPage extends Page
{
public function modelValues(): array
{
return [
[
'label' => 'Revenue',
'value' => 456
],
[
'label' => 'Orders',
'value' => 123
],
];
}
}
from model: <?= $page->modelValues()[0]['value']; ?>
Loop:
foreach($page->modelValues() as $mv) {
echo $mv["label"].": ". $mv["value"]."<br>";
}