Skip to content

Commit 67a3023

Browse files
committed
docs: update tracker script document
1 parent a7b91fe commit 67a3023

File tree

12 files changed

+732
-214
lines changed

12 files changed

+732
-214
lines changed

website/docs/website/track-script.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ you can get this script code from your **Tianji** website list
2222

2323
This is a very common method in website analysis. You can use it quickly get it by using **Tianji**.
2424

25+
### Basic Usage
26+
2527
After you inject script code into your website, you just need add a `data-tianji-event` in dom attribute.
2628

2729
for example:
@@ -32,6 +34,90 @@ for example:
3234

3335
Now, when user click this button, your dashboard will receive new event
3436

37+
### Attach Event Data
38+
39+
You can attach additional data to your events by using `data-tianji-event-{key}` attributes. Any attribute matching this pattern will be collected and sent with the event.
40+
41+
```html
42+
<button
43+
data-tianji-event="purchase"
44+
data-tianji-event-product="Premium Plan"
45+
data-tianji-event-price="99"
46+
data-tianji-event-currency="USD">
47+
Buy Now
48+
</button>
49+
```
50+
51+
This will send an event named `purchase` with the following data:
52+
```json
53+
{
54+
"product": "Premium Plan",
55+
"price": "99",
56+
"currency": "USD"
57+
}
58+
```
59+
60+
### Track Link Clicks
61+
62+
When using `data-tianji-event` on anchor (`<a>`) tags, **Tianji** handles them specially to ensure the event is tracked before navigation:
63+
64+
```html
65+
<a href="/pricing" data-tianji-event="view-pricing">Check Pricing</a>
66+
```
67+
68+
For internal links (not opening in new tab), the tracker will:
69+
1. Prevent the default navigation
70+
2. Send the tracking event
71+
3. Navigate to the target URL after tracking completes
72+
73+
For external links or links with `target="_blank"`, the event is tracked without blocking the navigation.
74+
75+
### JavaScript API
76+
77+
After the tracker script is loaded, you can also track events programmatically using the `window.tianji` object.
78+
79+
#### Track Custom Events
80+
81+
```javascript
82+
// Simple event tracking
83+
window.tianji.track('button-clicked');
84+
85+
// Event with custom data
86+
window.tianji.track('purchase', {
87+
product: 'Premium Plan',
88+
price: 99,
89+
currency: 'USD'
90+
});
91+
92+
// Track with custom payload object
93+
window.tianji.track({
94+
website: 'your-website-id',
95+
name: 'custom-event',
96+
data: { key: 'value' }
97+
});
98+
99+
// Track using a function (receives current page info)
100+
window.tianji.track((payload) => ({
101+
...payload,
102+
name: 'dynamic-event',
103+
data: { timestamp: Date.now() }
104+
}));
105+
```
106+
107+
#### Identify Users
108+
109+
You can attach user information to tracking sessions:
110+
111+
```javascript
112+
window.tianji.identify({
113+
userId: 'user-123',
114+
115+
plan: 'premium'
116+
});
117+
```
118+
119+
This information will be associated with subsequent events from this user.
120+
35121

36122
## Modify default script name
37123

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
---
22
sidebar_position: 1
3-
_i18n_hash: 94d2e9b28e14ee0258d96bc450acf5f6
3+
_i18n_hash: bd680ba831a70a5f00ce7db124d136dc
44
---
55
# Installation ohne Docker
66

7-
Die Verwendung von Docker zur Installation von `Tianji` ist der beste Weg, da Sie sich keine Gedanken über Umgebungsprobleme machen müssen.
7+
Die Installation von `Tianji` mit Docker ist der beste Weg, da Sie sich nicht um Umweltprobleme kümmern müssen.
88

9-
Wenn Ihr Server jedoch kein Docker unterstützt, können Sie versuchen, es manuell zu installieren.
9+
Falls Ihr Server jedoch keine Docker-Unterstützung bietet, können Sie es manuell installieren.
1010

1111
## Anforderungen
1212

1313
Sie benötigen:
1414

1515
- [Node.js](https://nodejs.org/en/download/) 18.12+ / 20.4+
16-
- [pnpm](https://pnpm.io/) 9.x (9.7.1 besser)
16+
- [pnpm](https://pnpm.io/) 9.x (9.7.1 wird empfohlen)
1717
- [Git](https://git-scm.com/downloads)
18-
- [PostgreSQL](https://www.postgresql.org/)
18+
- [Postgresql](https://www.postgresql.org/)
1919
- [pm2](https://pm2.keymetrics.io/) - Um Tianji im Hintergrund auszuführen
20-
- [Apprise](https://github.com/caronc/apprise) - optional, falls Sie Benachrichtigungen benötigen
20+
- [apprise](https://github.com/caronc/apprise) - optional, falls Sie Benachrichtigungen benötigen
2121

2222
## Code klonen und bauen
2323

@@ -31,38 +31,38 @@ pnpm build
3131

3232
## Umgebungsdatei vorbereiten
3333

34-
Erstellen Sie eine `.env` Datei in `src/server`
34+
Erstellen Sie eine `.env` Datei im Verzeichnis `src/server`
3535

3636
```ini
3737
DATABASE_URL="postgresql://user:[email protected]:5432/tianji?schema=public"
38-
JWT_SECRET="ersetzen-sie-mich-durch-einen-beliebigen-string"
38+
JWT_SECRET="ersetzen-sie-mich-durch-einen-zufälligen-string"
3939
```
4040

41-
Stellen Sie sicher, dass Ihre Datenbank-URL korrekt ist, und vergessen Sie nicht, die Datenbank vorher zu erstellen.
41+
Stellen Sie sicher, dass Ihre Datenbank-URL korrekt ist und denken Sie daran, die Datenbank zuvor zu erstellen.
4242

43-
Weitere Umgebungen finden Sie in diesem Dokument [environment](./environment.md)
43+
Weitere Umgebungen finden Sie in diesem Dokument [environment](./environment.md).
4444

45-
> Wenn Sie können, ist es besser sicherzustellen, dass Ihr Encoding en_US.utf8 ist, zum Beispiel: `createdb -E UTF8 -l en_US.utf8 tianji`
45+
> Wenn möglich, stellen Sie sicher, dass Ihre Zeichencodierung auf en_US.utf8 eingestellt ist, zum Beispiel: `createdb -E UTF8 -l en_US.utf8 tianji`
4646
4747
## Server ausführen
4848

4949
```bash
5050
npm install pm2 -g && pm2 install pm2-logrotate
5151

52-
# DB-Migration initialisieren
52+
# Datenbankmigration initialisieren
5353
cd src/server
5454
pnpm db:migrate:apply
5555

5656
# Server starten
5757
pm2 start ./dist/src/server/main.js --name tianji
5858
```
5959

60-
Standardmäßig läuft `Tianji` auf `http://localhost:12345`.
60+
Standardmäßig wird `Tianji` unter `http://localhost:12345` ausgeführt.
6161

6262
## Code auf neue Version aktualisieren
6363

6464
```bash
65-
# Neuen Release/Tags auschecken
65+
# Neue Versions-/Tags übernehmen
6666
cd tianji
6767
git fetch --tags
6868
git checkout -q <version>
@@ -73,7 +73,7 @@ pnpm install
7373
# Projekt bauen
7474
pnpm build
7575

76-
# DB-Migrationen durchführen
76+
# Datenbankmigrationen durchführen
7777
cd src/server
7878
pnpm db:migrate:apply
7979

@@ -85,22 +85,22 @@ pm2 restart tianji
8585

8686
## Installation von `isolated-vm` fehlgeschlagen
8787

88-
Wenn Sie Python 3.12 verwenden, wird ein Fehler wie folgt angezeigt:
88+
Wenn Sie Python 3.12 verwenden, wird möglicherweise folgender Fehler angezeigt:
8989

9090
```
9191
ModuleNotFoundError: No module named 'distutils'
9292
```
9393

94-
Das liegt daran, dass Python 3.12 `distutils` aus dem eingebauten Modul entfernt hat. Jetzt haben wir eine gute Lösung dafür.
94+
Dies liegt daran, dass Python 3.12 `distutils` als integriertes Modul entfernt hat. Es gibt jedoch eine gute Lösung dafür.
9595

96-
Sie können Ihre Python-Version von 3.12 auf 3.9 ändern, um das Problem zu lösen.
96+
Sie können Ihre Python-Version von 3.12 auf 3.9 ändern, um das Problem zu beheben.
9797

98-
### Wie man es mit einem von Brew verwalteten Python löst
98+
### Wie man es mit Brew-verwaltetem Python löst
9999

100100
```bash
101101
brew install [email protected]
102102
rm /opt/homebrew/bin/python3
103103
ln -sf /opt/homebrew/bin/python3 /opt/homebrew/bin/python3.9
104104
```
105105

106-
Dann können Sie die Version mit `python3 --version` überprüfen.
106+
Anschließend können Sie die Version mit `python3 --version` überprüfen.
Lines changed: 108 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,150 @@
11
---
22
sidebar_position: 1
3-
_i18n_hash: bcb6522b66b64594f82548e296f77934
3+
_i18n_hash: ef9fc0eb6072a8f037b70ff2b56e12ae
44
---
55
# Tracker-Skript
66

77
## Installation
88

9-
Um Website-Ereignisse zu verfolgen, musst du nur ein einfaches Skript (< 2 KB) in deine Website einbinden.
9+
Um Website-Ereignisse zu verfolgen, müssen Sie nur ein einfaches Skript (< 2 KB) in Ihre Website einfügen.
1010

1111
Das Skript sieht wie folgt aus:
1212

1313
```html
14-
<script async defer src="https://<your-self-hosted-domain>/tracker.js" data-website-id="xxxxxxxxxxxxx"></script>
14+
<script async defer src="https://<Ihre-eigene-Domain>/tracker.js" data-website-id="xxxxxxxxxxxxx"></script>
1515
```
1616

17-
Du kannst diesen Skriptcode aus deiner **Tianji**-Websiteliste abrufen.
17+
Sie können diesen Skript-Code aus Ihrer **Tianji**-Websiteliste erhalten.
1818

19-
## Ereignisbericht
19+
## Ereignis melden
2020

21-
**Tianji** bietet eine einfache Möglichkeit, Benutzerklickereignisse zu melden. Es hilft dir, zu verfolgen, welche Aktionen Benutzer mögen und häufig verwenden.
21+
**Tianji** bietet eine einfache Möglichkeit, Benutzer-Klickereignisse zu melden. Es ist einfach, nachzuvollziehen, welche Aktionen der Benutzer mag und häufig verwendet.
2222

23-
Dies ist eine sehr häufige Methode in der Website-Analyse. Du kannst sie schnell mit **Tianji** nutzen.
23+
Dies ist eine sehr gängige Methode in der Website-Analyse. Sie können es schnell nutzen, indem Sie **Tianji** verwenden.
2424

25-
Nachdem du den Skriptcode in deine Website eingebunden hast, musst du nur ein `data-tianji-event` in das DOM-Attribut einfügen.
25+
### Grundlegende Nutzung
26+
27+
Nachdem Sie den Skript-Code in Ihre Website eingefügt haben, müssen Sie nur ein `data-tianji-event` im DOM-Attribut hinzufügen.
2628

2729
Zum Beispiel:
2830

2931
```html
30-
<button data-tianji-event="submit-login-form">Login</button>
32+
<button data-tianji-event="submit-login-form">Anmelden</button>
3133
```
3234

33-
Jetzt, wenn ein Benutzer auf diese Schaltfläche klickt, erhält dein Dashboard ein neues Ereignis.
35+
Wenn ein Benutzer nun auf diese Schaltfläche klickt, erhält Ihr Dashboard ein neues Ereignis.
3436

35-
## Standard-Skriptnamen ändern
37+
### Ereignisdaten anhängen
3638

37-
> Diese Funktion ist ab v1.7.4 verfügbar.
39+
Sie können zusätzliche Daten an Ihre Ereignisse anhängen, indem Sie `data-tianji-event-{key}`-Attribute verwenden. Jedes Attribut, das diesem Muster entspricht, wird gesammelt und mit dem Ereignis gesendet.
3840

39-
Du kannst die Umgebungsvariable `CUSTOM_TRACKER_SCRIPT_NAME` beim Starten verwenden.
41+
```html
42+
<button
43+
data-tianji-event="purchase"
44+
data-tianji-event-product="Premium Plan"
45+
data-tianji-event-price="99"
46+
data-tianji-event-currency="USD">
47+
Jetzt kaufen
48+
</button>
49+
```
4050

41-
Zum Beispiel:
51+
Dies sendet ein Ereignis namens `purchase` mit den folgenden Daten:
52+
```json
53+
{
54+
"product": "Premium Plan",
55+
"price": "99",
56+
"currency": "USD"
57+
}
58+
```
59+
60+
### Link-Klicks verfolgen
61+
62+
Bei der Verwendung von `data-tianji-event` auf Anker (`<a>`) -Tags behandelt **Tianji** diese speziell, um sicherzustellen, dass das Ereignis vor der Navigation verfolgt wird:
63+
64+
```html
65+
<a href="/pricing" data-tianji-event="view-pricing">Preise anzeigen</a>
66+
```
67+
68+
Für interne Links (nicht in einem neuen Tab geöffnet) wird der Tracker:
69+
1. Die Standardnavigation verhindern
70+
2. Das Verfolgungsereignis senden
71+
3. Nach Abschluss der Verfolgung zur Ziel-URL navigieren
72+
73+
Für externe Links oder Links mit `target="_blank"` wird das Ereignis verfolgt, ohne die Navigation zu blockieren.
74+
75+
### JavaScript-API
76+
77+
Nachdem das Tracker-Skript geladen ist, können Sie auch Ereignisse programmatisch unter Verwendung des `window.tianji`-Objekts verfolgen.
78+
79+
#### Benutzerdefinierte Ereignisse verfolgen
80+
81+
```javascript
82+
// Einfaches Ereignisverfolgen
83+
window.tianji.track('button-clicked');
84+
85+
// Ereignis mit benutzerdefinierten Daten
86+
window.tianji.track('purchase', {
87+
product: 'Premium Plan',
88+
price: 99,
89+
currency: 'USD'
90+
});
91+
92+
// Verfolgen mit benutzerdefiniertem Payload-Objekt
93+
window.tianji.track({
94+
website: 'Ihre-Website-ID',
95+
name: 'benutzerdefiniertes-ereignis',
96+
data: { key: 'value' }
97+
});
98+
99+
// Verfolgen mithilfe einer Funktion (erhält aktuelle Seiteninformationen)
100+
window.tianji.track((payload) => ({
101+
...payload,
102+
name: 'dynamisches-ereignis',
103+
data: { timestamp: Date.now() }
104+
}));
105+
```
106+
107+
#### Benutzer identifizieren
108+
109+
Sie können Benutzerdaten an Session-Tracking anhängen:
110+
111+
```javascript
112+
window.tianji.identify({
113+
userId: 'user-123',
114+
115+
plan: 'premium'
116+
});
117+
```
118+
119+
Diese Informationen werden mit nachfolgenden Ereignissen dieses Benutzers verbunden.
120+
121+
## Standardmäßigen Skriptnamen ändern
122+
123+
> Diese Funktion ist verfügbar ab v1.7.4+
124+
125+
Sie können die Umgebung `CUSTOM_TRACKER_SCRIPT_NAME` verwenden, wenn Sie damit starten
126+
127+
zum Beispiel:
42128
```
43129
CUSTOM_TRACKER_SCRIPT_NAME="my-tracker.js"
44130
```
45131

46-
Dann kannst du auf dein Tracker-Skript über `"https://<your-self-hosted-domain>/my-tracker.js"` zugreifen.
132+
dann können Sie Ihr Tracker-Skript mit `"https://<Ihre-eigene-Domain>/my-tracker.js"` besuchen.
47133

48-
Dies hilft dir, einige Werbeblocker zu umgehen.
134+
Dies soll Ihnen helfen, einige Werbeblocker zu umgehen.
49135

50-
Du benötigst nicht die `.js`-Endung. Es kann ein beliebiger Pfad sein, du kannst sogar `CUSTOM_TRACKER_SCRIPT_NAME="this/is/very/long/path"` verwenden.
136+
Sie benötigen nicht das `.js`-Suffix. Es kann jeder beliebige Pfad sein, den Sie wählen, sogar `CUSTOM_TRACKER_SCRIPT_NAME="this/is/very/long/path"`.
51137

52138
## Nur bestimmte Domains verfolgen
53139

54-
Im Allgemeinen meldet der Tracker alle Ereignisse, unabhängig davon, wo deine Website läuft. Manchmal müssen wir jedoch Ereignisse wie `localhost` ignorieren.
140+
Im Allgemeinen wird der Tracker alle Ereignisse melden, wo immer Ihre Seite läuft. Aber manchmal müssen wir Ereignisse wie `localhost` ignorieren.
55141

56-
Tianji bietet ein Attribut für das Tracker-Skript, um dies zu tun.
142+
Tianji bietet ein Attribut des Tracker-Skripts, um dies zu tun.
57143

58-
Du kannst `data-domains` in dein Skript einfügen. Der Wert sollte deine Stammdomains sein, die verfolgt werden sollen. Verwende `,` um mehrere Domains zu trennen.
144+
Sie können `data-domains` in Ihr Skript hinzufügen. Der Wert sollte Ihre Root-Domains zum Verfolgen sein. Verwenden Sie `,` um mehrere Domains zu trennen.
59145

60146
```html
61-
<script async defer src="https://<your-self-hosted-domain>/tracker.js" data-website-id="xxxxxxxxxxxxx" data-domains="website.com,www.website.com"></script>
147+
<script async defer src="https://<Ihre-eigene-Domain>/tracker.js" data-website-id="xxxxxxxxxxxxx" data-domains="website.com,www.website.com"></script>
62148
```
63149

64-
Dann kannst du nur die Ereignisse von diesen Domains sehen.
150+
Dann können Sie nur die Ereignisse von diesen Domains sehen.

0 commit comments

Comments
 (0)