WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

Ankündigung

#1 17.01.2026 23:13:17

beach
Developer

LinkCounter

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
   - Speichern

2. FRONTEND: Droplet einfügen
   - Im WYSIWYG-Editor: [[LinkCounter?id=1]]  (Nummer wie im Backend angezeigt)
   - Alternative: [[LinkCounterStats?limit=10]] für Statistik-Tabelle

3. TRACKING: Automatisch
   - Besucher klickt auf Link
   - Counter wird erhöht
   - Weiterleitung zum Ziel

4. STATISTIK: Übersicht
   - Backend → Link Counter
   - Klicks pro Link
   - Filter & Sortierung
   - CSV-Export

5. VERWALTUNG
   - Links bearbeiten/löschen
   - Counter zurücksetzen
   - Aktiv/Inaktiv schalten

Vielleicht kanns ja jemand gebrauchen
Aktuell V 1.1.0

Beitrag geändert von beach (23.01.2026 13:37:46)

Offline

Liked by:

florian, jean

#2 18.01.2026 08:10:27

florian
Administrator

Re: LinkCounter

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)
    attachment.php?item=3923&download=1

  • Speichern/Abbrechen ungleich groß
    attachment.php?item=3924&download=1

  • CSV-Export enthält auch WBCE-Backend-Header
    attachment.php?item=3925&download=1

  • .claude/settings.local.json im Zip

Beitrag geändert von florian (18.01.2026 08:12:58)

Offline

#3 18.01.2026 08:20:33

florian
Administrator

Re: LinkCounter

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"

Offline

#4 18.01.2026 14:15:17

kleo
Mitglied

Re: LinkCounter

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

#5 18.01.2026 17:10:09

beach
Developer

Re: LinkCounter

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

Liked by:

berny

#6 18.01.2026 20:49:21

kleo
Mitglied

Re: LinkCounter

beach schrieb:

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

#7 18.01.2026 22:20:43

beach
Developer

Re: LinkCounter

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

#8 19.01.2026 07:47:09

florian
Administrator

Re: LinkCounter

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"

Offline

#9 19.01.2026 12:43:51

beach
Developer

Re: LinkCounter

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

#10 20.01.2026 07:13:44

florian
Administrator

Re: LinkCounter

Prima, danke.
Würde das Tool dann im AOR ergänzen, wenn's recht ist?

Offline

Liked by:

berny, beach

#11 20.01.2026 21:55:42

beach
Developer

Re: LinkCounter

Warte noch kurz.
Werde es die Tage noch aufräumen und dann auf Github stellen.

Offline

Liked by:

florian

#12 21.01.2026 22:39:00

beach
Developer

Re: LinkCounter

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.

Beitrag geändert von beach (21.01.2026 22:48:01)

Offline

#13 22.01.2026 07:34:43

florian
Administrator

Re: LinkCounter

thumb_up 
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. )

Offline

Liked by:

beach

#14 22.01.2026 08:09:53

beach
Developer

Re: LinkCounter

Wenn ich es richtig gemacht habe sollte das Release erstellt sein roll
Git bleibt für mich ein Buch mit 7 Siegeln.  big_smile

Offline

#15 22.01.2026 08:35:47

florian
Administrator

Re: LinkCounter

Sehr schön, Eintrag ist ergänzt -> https://addons.wbce.org/pages/addons.ph … m&item=177

Offline

Liked by:

beach, byteworker

#16 22.01.2026 09:49:50

byteworker
Mitglied

Re: LinkCounter

Sehr schönes Modul, werde ich sicher beim Download meiner Templates einsetzen. Vielen Dank dafür!

Offline

#17 23.01.2026 13:47:04

beach
Developer

Re: LinkCounter

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

#18 23.01.2026 14:06:38

Slugger
Developer

Re: LinkCounter

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.x * Alle • BE: Argos
Status Projekt 1-4:  OK

Online

#19 23.01.2026 14:33:56

beach
Developer

Re: LinkCounter

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

#20 23.01.2026 16:06:38

Slugger
Developer

Re: LinkCounter

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.x * Alle • BE: Argos
Status Projekt 1-4:  OK

Online

#21 06.03.2026 18:53:53

Slugger
Developer

Re: LinkCounter

Hallo beach,
ich habe das jetzt eingebaut.
Funktioniert auch richtig gut thumb_up

Frage:
Wie bringe ich das Droplet dazu, das ich ein Bild damit verlinken kann und das beim Klick eine neue Seite geöffnet wird?

Beitrag geändert von Slugger (06.03.2026 18:54:24)


Hoster: ALL-INKL *** Grundsätzliche WBCE Konfig ***
WBCE: 1.6.5 • BE: 2.1.0 • PHP: 8.x * Alle • BE: Argos
Status Projekt 1-4:  OK

Online

#22 07.03.2026 10:07:09

beach
Developer

Re: LinkCounter

Ein Bild kannst du nur als externen Link mit der entsprechenden URL angeben. Bilder aus dem Media Verzeichnis sind aktuell nicht vorgesehen. Auch wird der Link immer im gleichen Fenster geöffnet.

Offline

#23 01.04.2026 14:55:41

beach
Developer

Re: LinkCounter

Link Counter 1.1.0 → 1.2.0 — PHP 8.5-Kompatibilität, neuer-Tab-Option, Sesterze-Layout
Stand: 1. April 2026

Das Modul wurde auf PHP 8.5-Kompatibilität geprüft, um eine neue Feature-Option für das Öffnen von Links in einem neuen Tab/Fenster erweitert und das Admin-Backend optisch auf den Sesterze-Stil umgebaut.

Änderungen

save.php
- DB-Fehlertext ($database->get_error()) wird jetzt in der Fehlermeldung ausgegeben — erleichtert die Fehlerdiagnose

install.php
- Neue Spalte open_target ENUM('_self','_blank') DEFAULT '_self' in der Tabellendefinition — speichert das gewünschte Öffnungsverhalten pro Link
- Droplet LinkCounter: gibt target="_blank" rel="noopener noreferrer" aus wenn open_target = _blank gesetzt ist
- Droplet LinkCounterStats: gleiches Verhalten für die Statistiktabelle

upgrade.php
- ALTER TABLE ergänzt open_target-Spalte bei bestehenden Installationen (Default: _self = gleiches Fenster)
- Droplet-Update-Erkennung auf open_target umgestellt — beide Droplets werden automatisch aktualisiert

add.php
- Neues Toggle-Feld "In neuem Tab öffnen" im Bearbeitungsformular
- Droplet-Code-Box entfernt
- Layout auf Sesterze-Stil umgebaut (lc-wrap, Cards, Toggle-Switches, FA-Icons)

overview.php
- Droplet-Hilfe-Sektion entfernt
- Layout auf Sesterze-Stil umgebaut (Cards, saubere Tabelle, Icon-Buttons, Empty-State)
- Emojis in Buttons durch Font Awesome 4.x Icons ersetzt (fa-pencil, fa-trash, fa-plus, fa-download, fa-cog)
- Kleines fa-external-link Icon im Titel wenn ein Link im neuen Tab öffnet

css/backend.css
- Komplett neu geschrieben auf Basis des Sesterze Design-Systems
- CSS-Token --lc-font-base (aktuell 14px) als zentrale Schriftgröße
- Tabellen-Spaltenbreiten per colgroup definiert für gleichmäßige Platznutzung
- Toggle-Switches für Checkboxen (Aktiv, In neuem Tab öffnen)
- Keine externen Fonts oder CDN-Abhängigkeiten

js/frontend.js
- Crawler-Schutz bleibt vollständig erhalten
- window.location.href ersetzt durch window.open() wenn target="_blank" — verhindert dass der Crawler-Schutz-Handler das neue Tab ignoriert

Hinweis für bestehende Installationen

ZIP einspielen über Backend → Addons → Modul hochladen. upgrade.php ergänzt automatisch die neue Spalte open_target mit dem Defaultwert _self (gleiches Fenster). Bestehende Links verhalten sich damit unverändert. Die Droplets werden beim Upgrade ebenfalls automatisch aktualisiert.

Umgebung
Link Counter: 1.2.0
WBCE: 1.6.5
PHP: 8.5.4

Beitrag geändert von beach (01.04.2026 14:55:55)

Offline

Liked by:

Slugger, florian

#24 14.09.2026 18:37:51

Slugger
Developer

Re: LinkCounter

Hi beach,
ich hatte gestern im Modul einen Link aktualisiert.

Wenn ich jetzt den Link im Frontend anklicke öffnen zwei zwei neue Fenster mit dem gleichen inhalt.

Ist mir zuerst in der Mobilen Ansicht mit Andriod aufgeallen, bei der gegenprüfung auf einem Iphone konnte ich nichts feststellen.

Am Rechner mit Chrome, war was durch den Popupblocker nicht aufgefallen, nachdem ich ihn für diese Seite deaktiviert habe, stellt sich das Problem auch am Rechner da.

Der Link über Linkstats funktioniert ohne Probleme.

Hast du eine Idee?


Hoster: ALL-INKL *** Grundsätzliche WBCE Konfig ***
WBCE: 1.6.5 • BE: 2.1.0 • PHP: 8.x * Alle • BE: Argos
Status Projekt 1-4:  OK

Online

#25 14.09.2026 19:35:34

beach
Developer

Re: LinkCounter

Danke für den Hinweis. werde ich mir bei nächster Gelegenheit anschauen.
Aktuell erstmal den Updater etwas überarbeiten

Offline

Fußzeile des Forums

up