WBCE CMS – Way Better Content Editing.
You are not logged in.
Pages: 1
Hach ja...
Kennt Ihr das? Man hat das eine Projekt soweit am laufen und fängt an zu Überlegen das man ja an einem anderen Projekt eigentlich mal wieder weitermachen sollte. Und dann kommt einem plötzlich in den Kopf: Da gäbe es ja so eine Kleinigkeit, die wäre schon so ein bisschen geil wenn man das hätte. Der arme Claude hat zwar gestöhnt, aber trotz allem fleißig seine Arbeit getan wie aufgetragen. Naja, fast, meistens,.... ab und zu... Egal. es ist mal wieder etwas herausgekommen was ich euch nicht vorenthalten wollte.
Auf einer meiner Seiten habe ich ein paar externe Tools verlinkt und auch ein Image auf meinem Server. Nun würde mich halt mal interessieren wie oft überhaupt auf diese Links/Downloads geklickt wird. die Download Gallery 3 war mir dann aber wieder zu mächtig. Das wäre wie mit Kanonen auf Spatzen....
Ich möchte einfach nur einen Link anlegen, diesen in eine Seite einbinden und später sehen wie oft dieser angeklickt wurde.
Daraus ist das Modul LinkCounter entstanden.
IM Adminbereich kann man Links eintragen (externe oder WBCE interne Links) und einen Titel dazu vergeben. Dann kann man diesen Link, per Droplet, im CKEditor einbinden wo man diesen haben möchte. Jeder Klick darauf wird dann gezählt und leitet weiter auf die entsprechende Seite/Datei/Link.
Ein Droplet für eine einfache Klickstatistik gibt es natürlich auch.
Hier eine Zusammenfassung.
LINK COUNTER - WORKFLOW
========================1. BACKEND: Link erstellen
- Admin-Tools → Link Counter → "Hinzufügen"
- Titel + URL/Seite eingeben
- Speichern2. FRONTEND: Droplet einfügen
- Im WYSIWYG-Editor: [[LinkCounter?id=1]] (Nummer wie im Backend angezeigt)
- Alternative: [[LinkCounterStats?limit=10]] für Statistik-Tabelle3. TRACKING: Automatisch
- Besucher klickt auf Link
- Counter wird erhöht
- Weiterleitung zum Ziel4. STATISTIK: Übersicht
- Backend → Link Counter
- Klicks pro Link
- Filter & Sortierung
- CSV-Export5. VERWALTUNG
- Links bearbeiten/löschen
- Counter zurücksetzen
- Aktiv/Inaktiv schalten
Vielleicht kanns ja jemand gebrauchen
Aktuell V 1.1.0
Last edited by beach (23.01.2026 13:37:46)
Offline
florian, jean
Sehr schön so weit.
Einige Hinweise:
update.php löscht auch Droplet "Download", riskant, da generischer Name
delete.php löscht auch Droplets "Download", "DownloadStats"
tool.php, reset_counter.php, modify.php, delete.php, add.php, export.php Direktaufrufabsicherung fehlt ( if(!defined('WB_PATH')) exit("Cannot access this file directly ".__FILE__); ) => Aufruf als nicht angemeldeter User -> Weiterleitung auf BE-Login, Aufruf als angemeldeter Admin-User -> Seiten werden ohne "Drumherum" angezeigt
modify.php, view.php eigentlich nur bei Page-Modulen, nicht bei Admintools, scheinen Reste von einem Download-Modul zu sein
view.php => Funktion "Download"-Button?
/modules/linkcounter/view.php ohne Anmeldung erreichbar
Speichern nach Bearbeiten nicht möglich
Hochkomma (') im Link-Titel wird als l' im BE und FE angezeigt
fehlende Edit-/Lösch-Icons im BE (nur gelbes/rotes Rechteck)
Speichern/Abbrechen ungleich groß
CSV-Export enthält auch WBCE-Backend-Header
.claude/settings.local.json im Zip
Last edited by florian (18.01.2026 08:12:58)
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Noch etwas Merkwürdiges: Das LinkCounter-Backend erzeugt Einträge im Errorlog
2026-01-18T07:15:38+00:00 [Visitor Request] .../admin/admintools/tool.php?tool=linkcounter
2026-01-18T07:15:38+00:00 [User Notice] /modules/outputfilter_dashboard/functions.php:[1490] from /modules/outputfilter_dashboard/functions.php:[1966] opf_apply_filters "output filter failed: returned empty content"
2026-01-18T07:15:38+00:00 [User Warning] /modules/outputfilter_dashboard/functions_outputfilter.php:[1218] from /modules/outputfilter_dashboard/plugins/cachecontrol/filter.php:[42] opf_cut_extract "opf_cut_extract(): content is not a string"
2026-01-18T07:15:38+00:00 [User Warning] /modules/outputfilter_dashboard/functions_outputfilter.php:[1279] from /modules/outputfilter_dashboard/plugins/cachecontrol/filter.php:[59] opf_glue_extract "opf_glue_extract(): content is not a string"
2026-01-18T07:15:38+00:00 [User Notice] /modules/outputfilter_dashboard/functions.php:[1490] from /modules/outputfilter_dashboard/functions.php:[1968] opf_apply_filters "output filter failed: returned empty content"
2026-01-18T07:15:38+00:00 [User Notice] /modules/outputfilter_dashboard/functions.php:[1490] from /modules/outputfilter_dashboard/functions.php:[1969] opf_apply_filters "output filter failed: returned empty content"
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Moin,
ich habe auch Interesse an so was, weil mit WBCE-Hausmittel ist so eine Analyse leider nicht möglich.
Ich sehe dabei aber ein anderes Problem.
Bei den Webseiten, die ich betreue, hat sich die Besucherstatistik in der letzten Zeit total verändert. Wenn es früher mehr oder weniger "echte Besucher" waren, sind jetzt überwiegend irgendwelche Crawler, die dazu noch schwer zu identifizieren sind. Es ist schon sehr seltsam, wenn bei einer komplett deutschsprachen Seite an der ersten Stelle bei der Besucherstatistik die chinesische Sprache steht...
Wie kann man dann diese Klicks zählen? Oder auswerten? Die Crawler klicken auf jeden Fall darauf, die "echte Menschen" aber "je nach dem".
Kann man da vielleicht die mehr oder weniger "echte Klicks" irgendwie rausfiltern?
Offline
Danke florian. Da habe ich ja noch einiges zu tun.
@kleo: Ich denke man könnte vielleicht die Zeit messen die vom rendern der Seite bis zum Klick vergangen ist. Bots klicken meist sehr schnell evtl den Link auch erst leicht verzögert einblenden. So das ein Mensch deutlich länger braucht bis er auf den Link klickt. Könnte so vielleicht einen Teil der Bots ausblenden....
Offline
berny
man könnte vielleicht die Zeit messen die vom rendern der Seite bis zum Klick vergangen ist...
Ja, es ist vielleicht keine schlechte Methode!
Sonst hat man X-Klicks und nur sehr wenige davon sind dann von den echten Menschen. Und man weiß dann auch nicht, wie viele. Und das mach dann die Haupfunktion des Moduls sinnlos: man will eigentlich untersuchen, wie die Menschen auf bestimmte Inhalte reagieren, und nicht wie die Bots...
Offline
Zuerst schaue ich mal das alles funktioniert wie geplant.
Dann überlege ich mal wie man das umsetzen kann.
Habe ansonsten hoffentlich alles beseitigt was florian gefunden hat.
Mein Errorlog ist sauber geblieben.
Aktuelle Version 0.9.11 im ersten Thema angehängt.
Ein wenig Aufräumen fehlt noch, aber sonst scheint alles zu funktionieren.
Offline
Sehr gut, funktioniert jetzt einwandfrei, bis auf den CSV-Export - da gibt es mit PHP 8.4 noch eine Deprecated-Meldung:
2026-01-19T06:44:26+00:00 [Deprecated] /modules/linkcounter/export.php:[66] from /modules/linkcounter/export.php:[66] fputcsv "fputcsv(): the $escape parameter must be provided as its default value will change"
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
Der Fehler der diese Meldung verursacht hat, wurde behoben. Außerdem wird nun in der CSV auch die internen Links mit der ID angegeben.
Aktuelle Version 0.9.13 im ersten Thema verlinkt.
Offline
Prima, danke.
Würde das Tool dann im AOR ergänzen, wenn's recht ist?
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
berny, beach
Warte noch kurz.
Werde es die Tage noch aufräumen und dann auf Github stellen.
Offline
florian
So. Hab nochmal aufräumen lassen und die Version auf 1.0.0 gesetzt. Repo ist auf Github verfügbar
https://github.com/Beachbone/wbce-linkcounter
In der https://github.com/Beachbone/wbce-linkc … IPTION.txt habe ich eine Beschreibung für das AOR erstellen lassen
@kleo: Das mit der Botfalle ist noch nicht drin. Aber das behalte ich noch im Hinterkopf.
Last edited by beach (21.01.2026 22:48:01)
Offline
Machst du noch einen Release 1.0.0 auf https://github.com/Beachbone/wbce-linkcounter/releases ?
Vgl. z.B. https://github.com/WBCE/News-with-Images/releases
(Da immer noch falsche Annahmen herumgeistern: Nein, die Github-Zips müssen nicht zuerst entpackt und wieder gepackt werden, sondern lassen sich nach dem Download über Erweiterungen > Module direkt installieren. )
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
beach
Wenn ich es richtig gemacht habe sollte das Release erstellt sein 
Git bleibt für mich ein Buch mit 7 Siegeln. 
Offline
Sehr schön, Eintrag ist ergänzt -> https://addons.wbce.org/pages/addons.ph … m&item=177
Sorgen sind wie Nudeln: man macht sich meist zu viele.
Offline
beach, byteworker
Sehr schönes Modul, werde ich sicher beim Download meiner Templates einsetzen. Vielen Dank dafür!
Offline
Danke byteworker.
@kleo: ich habe mal einen Crawlerschutz implementiert wie ich mir den vorstelle.
Wenn man diesen in den Einstellungen (im Adminbereich) aktiviert, wird jedem Link ein verschleierter Timestamp angehängt. Im Backend wird dann geprüft ob eine Mindestzeit eingehalten wurde (einstellbar, Standard bei 500ms) und dann entweder ohne zu zählen weitergeleitet oder einfach die gleiche Seite wieder aufgerufen.
Ich denke das sollte einen großen Teil der Crawler erwischen. Alle wird man nie erkennen können.
Version ist im ersten Thema upgedated
Offline
Danke beach für das Modul,
Ich habe im AOR gelesen das zwei Droplets beinhaltet:
Das klinkt für mich so als ob man auch damit Linkleichen erkennen kann?
Siehe auch mein Beitrag:
https://forum.wbce.org/viewtopic.php?pid=24802#p24802
Hoster: ALL-INKL *** Grundsätzliche WBCE Konfig ***
WBCE: 1.6.5 • BE: 2.1.0 • PHP: 8.3.29 * 1. Projekt: FE: Simple responsive * 2. Projekt: FE: hortal * 3. Projekt: FE: WBCEZon * 4. Projekt: FE: WBCETik * Alle • BE: Argos
Status Projekt 1-4: OK
Offline
Ist eigentlich nicht vorgesehen.
Die Droplets blenden einfach nur die generierten Links ein bzw eine Tabelle mit allen Links und den Statistiken.
Eine Funktion das man die eingetragenen Links "anpingen" lässt um diese zu prüfen wäre mit Sicherheit machbar.
Aber nur die Links aus dem Linkcounter.
Wenn man alle Links checken möchte, wäre das evtl mit einem eigenen Modul möglich. Müsste man dann die DB nach allen Links durchforsten und diese anpingen. Dann das Ergebnis ausgeben.
Wird aber bestimmt aufwändig.
Offline
Danke beach,
War für mich nur zum Verständnis.
Hoster: ALL-INKL *** Grundsätzliche WBCE Konfig ***
WBCE: 1.6.5 • BE: 2.1.0 • PHP: 8.3.29 * 1. Projekt: FE: Simple responsive * 2. Projekt: FE: hortal * 3. Projekt: FE: WBCEZon * 4. Projekt: FE: WBCETik * Alle • BE: Argos
Status Projekt 1-4: OK
Offline
Pages: 1