Skip to content

Commit ace472b

Browse files
author
Kicktemp Bot
committed
Docs Sync: Update from com_kickbannerstats commit 4e4a8ee86353285b48914240257d8960b41cac12
1 parent bd10d0f commit ace472b

File tree

5 files changed

+138
-0
lines changed

5 files changed

+138
-0
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# API & Looker Studio Integration
2+
3+
KickBannerStats stellt eine JSON-API über den Joomla API Wrapper bereit. Diese wird primär genutzt, um Daten an **Google Looker Studio** zu übergeben.
4+
5+
## API Endpoint
6+
7+
Der Zugriff erfolgt über den `StatisticsController`.
8+
9+
**Basis-URL:**
10+
11+
### Authentifizierung
12+
Die API nutzt die Standard Joomla API Token Authentifizierung (`Bearer Token` oder `X-Joomla-Token`).
13+
14+
### Filter-Parameter
15+
Die API unterstützt folgende GET-Parameter zur Filterung:
16+
17+
| Parameter | Typ | Beschreibung |
18+
| :--- | :--- | :--- |
19+
| `filter[begin]` | String (Y-m-d) | Startdatum (inklusiv) |
20+
| `filter[end]` | String (Y-m-d) | Enddatum (inklusiv) |
21+
| `filter[client_id]` | Int | Nur spezifischer Kunde |
22+
| `filter[banner_id]` | Int | Nur spezifisches Banner |
23+
24+
## Beispiel Response
25+
https://ihre-domain.de/api/index.php/v1/kickbannerstats/statistics
26+
27+
```json
28+
[
29+
{
30+
"date": "2026-01-20",
31+
"banner_id": 422,
32+
"client_id": 13,
33+
"impressions": 1319,
34+
"clicks": 3,
35+
"banner_name": "Musical Kids Amulett",
36+
"client_name": "besser-im-blick",
37+
"updated_at": "2026-02-12 13:37:39"
38+
},
39+
{
40+
"date": "2026-01-19",
41+
"banner_id": 422,
42+
"client_id": 13,
43+
"impressions": 41324,
44+
"clicks": 38,
45+
"banner_name": "Musical Kids Amulett",
46+
"client_name": "besser-im-blick",
47+
"updated_at": "2026-02-12 13:37:39"
48+
}
49+
]
50+
```
51+
52+
Looker Studio Connector
53+
Um diese Daten in Looker Studio zu nutzen, benötigen Sie ein Google Apps Script (Community Connector), welches diese API konsumiert.
54+
55+
Schema Definition
56+
Im Connector mappen Sie die JSON-Felder wie folgt:
57+
58+
date -> Datum (YYYYMMDD)
59+
60+
banner_name -> Text
61+
62+
client_name -> Text
63+
64+
impressions -> Zahl
65+
66+
clicks -> Zahl
67+
68+
CTR -> Berechnetes Feld (clicks / impressions)
69+
70+
::: tip Caching
71+
Da die Daten in #__kickbannerstats_daily nur einmal täglich aktualisiert werden, empfiehlt es sich, im Looker Studio Connector ein Caching von 12 bis 24 Stunden zu aktivieren.
72+
:::
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Architektur & Datenbank
2+
3+
Der Kern von KickBannerStats ist die Entkopplung von "Schreiben" (Joomla Core) und "Lesen" (KickBannerStats).
4+
5+
## Datenbank-Schema
6+
7+
Die Komponente nutzt eine eigene, flache Tabelle zur Speicherung der Tageswerte pro Banner und Kunde.
8+
9+
```sql
10+
CREATE TABLE IF NOT EXISTS `#__kickbannerstats_daily`
11+
(
12+
`date` DATE NOT NULL,
13+
`banner_id` INT UNSIGNED NOT NULL,
14+
`client_id` INT UNSIGNED NOT NULL,
15+
`impressions` INT UNSIGNED NOT NULL DEFAULT 0,
16+
`clicks` INT UNSIGNED NOT NULL DEFAULT 0,
17+
`banner_name` VARCHAR(255) NOT NULL,
18+
`client_name` VARCHAR(255) NOT NULL,
19+
`updated_at` DATETIME NOT NULL,
20+
PRIMARY KEY (`date`, `banner_id`, `client_id`),
21+
KEY `idx_banner_date` (`banner_id`, `date`),
22+
KEY `idx_client_date` (`client_id`, `date`)
23+
) ENGINE = InnoDB
24+
DEFAULT CHARSET = utf8mb4
25+
DEFAULT COLLATE = utf8mb4_unicode_ci;

src/components/com_kickbannerstats/backend.md

Whitespace-only changes.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Einführung
2+
3+
**KickBannerStats** ist eine spezialisierte Joomla-Komponente, die entwickelt wurde, um die Performance von Banner-Auswertungen zu optimieren und eine nahtlose Integration mit Business-Intelligence-Tools wie **Google Looker Studio** zu ermöglichen.
4+
5+
## Das Problem
6+
Die native Joomla-Tabelle `#__banner_tracks` speichert jeden einzelnen View und Klick als separate Zeile. Bei stark frequentierten Seiten wächst diese Tabelle schnell auf Millionen von Einträgen an.
7+
* **Performance:** Direkte Abfragen für Zeiträume (z.B. "Letzter Monat") werden extrem langsam.
8+
* **Externe Tools:** APIs laufen in Timeouts, wenn sie versuchen, Rohdaten live zu aggregieren.
9+
10+
## Die Lösung
11+
KickBannerStats entkoppelt die Datenerfassung von der Auswertung:
12+
1. **Aggregation:** Ein Task-Plugin verdichtet die Rohdaten täglich in eine optimierte Tabelle (`#__kickbannerstats_daily`).
13+
2. **Performance:** Statt Millionen Zeilen zu scannen, greift die API auf wenige tausend vorbrechnete Datensätze zu.
14+
3. **Konnektivität:** Eine spezialisierte API liefert JSON-Daten, die perfekt für Looker Studio formatiert sind.
15+
16+
## Features
17+
* 🚀 **High-Performance:** Schnelle Dashboards auch bei großen Datenmengen.
18+
* 🤖 **Automatisierung:** `Scheduler Task` für tägliche Updates.
19+
* back **Backfill:** Nachträglicher Import historischer Daten.
20+
* 📊 **Looker Studio Ready:** Native JSON-Ausgabe für Community Connectors.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"text": "KickBannerStats",
3+
"items": [
4+
{
5+
"text": "Einführung",
6+
"link": "/components/com_kickbannerstats/"
7+
},
8+
{
9+
"text": "Architektur",
10+
"link": "/components/com_kickbannerstats/architecture"
11+
},
12+
{
13+
"text": "Backend Nutzung",
14+
"link": "/components/com_kickbannerstats/backend"
15+
},
16+
{
17+
"text": "API Integration",
18+
"link": "/components/com_kickbannerstats/api-integration"
19+
}
20+
]
21+
}

0 commit comments

Comments
 (0)