It also seems to work if you replace api.onPageChange(() => {
with $( document ).ready(function() {
and then the script won’t load on every page, but I never know for sure where I need api.onPageChange(() => { .
ich habe nach etwas Ähnlichem gesucht, aber unter Ausschluss einiger Gruppen, also habe ich es mit ChatGPT versucht, und die Antwort war:
Um ein HTML-Theme in Discourse zu erstellen, das ein Skript auslöst, das bestimmte Gruppen ausschließt, müssen Sie die Theme-Anpassungsoptionen von Discourse zusammen mit JavaScript verwenden, um Gruppen ausschlüsse zu handhaben. Discourse bietet api.getCurrentUser(), um Benutzerdetails abzurufen, einschließlich ihrer Gruppen, was nützlich sein kann, um Ihr Skript bedingt auszulösen.
Hier ist ein Beispiel, wie Sie dies im Abschnitt Ihres Themes oder Komponenten implementieren könnten:
<script type="text/discourse-plugin" version="0.8">
api.onPageChange(() => {
// Aktuelle Benutzerdetails abrufen
const currentUser = api.getCurrentUser();
if (currentUser) {
// Liste der Gruppennamen, die von der Skriptausführung ausgeschlossen werden sollen
const excludedGroups = ['group1', 'group2'];
// Die Gruppen des Benutzers abrufen
const userGroups = currentUser.groups.map(group => group.name);
// Prüfen, ob der Benutzer zu einer ausgeschlossenen Gruppe gehört
const isExcluded = excludedGroups.some(group => userGroups.includes(group));
if (!isExcluded) {
// Ihre benutzerdefinierte Skriptlogik hier
console.log('Skript wird für diesen Benutzer ausgeführt.');
// Beispiel: benutzerdefinierte Logik für nicht ausgeschlossene Benutzer auslösen
// customScriptFunction();
} else {
console.log('Benutzer gehört zu einer ausgeschlossenen Gruppe, Skript wird nicht ausgeführt.');
}
}
});
</script>
Erklärung:
api.onPageChange(): Führt das Skript jedes Mal aus, wenn sich die Seite ändert.
api.getCurrentUser(): Ruft die Details des aktuell angemeldeten Benutzers ab.
excludedGroups: Listen Sie die Gruppen auf, die Sie ausschließen möchten.
userGroups.includes(group): Prüft, ob der Benutzer zu einer ausgeschlossenen Gruppe gehört.
Bedingte Skriptausführung: Das Skript wird nur ausgeführt, wenn der Benutzer keiner ausgeschlossenen Gruppe angehört.
Sie können customScriptFunction(); durch jedes Skript ersetzen, das Sie ausführen müssen. Lassen Sie mich wissen, wenn Sie weitere Anpassungen benötigen!
Ich meine, mein Verstand ist völlig überwältigt davon . Ich habe es noch nicht ausprobiert, aber ist der ChatGPT-Code korrekt?