... ganz habe ich noch nicht verstanden, was dieses Script leisten kann.
Trotzdem habe ich ein paar Anmerkungen/Kritik zur Technik, um den Traffic und die Zahl der Ajax-Aufrufe zu optimieren. da trifft es sich ganz gut, dass das Script momentan überarbeitet wird
im forum-Template existiert die Variable {{showlast}} . dein ganzes Script könntest du damit klammern, wenn es nur in "letzte Beiträge" arbeiten soll
im Script, gehst du davon aus, dass du 10 Threads/Seite erhältst. Das kann jedoch in jedem Forum anders eingestellt sein, teste mal {{threads_per_page}}
mit dieser Funktion lädst du mehrere Seiten:
1 2 3
$.when.apply($,requests).done(function(){ //... }
um im wesentlichen die thread_ids zu erhalten. Diese Seiten könnte man kürzen unter Ausnutzung von {{template_stoploading(forum)}} .
Dazu denke ich mir einen URL-Parameter "show_threadids " aus, also "/forum.php?show=last&show_threadids"
ich gehe davon aus, dass das Script in forum_header installiert ist
mir gefällt nicht, dass für jeden Thread einen getdeep()-Aufruf gebraucht wird, (denke Ingmar hat da auch Bauchschmerzen) getdeep kann mit einem Aufruf mehrere tids verarbeiten
das wäre für jede Seite jetzt einfach getan:
1 2 3 4 5 6 7 8 9 10
const tid_array= document.getElementById("show_tids").textContent.split(" "); xobor.plugin(PluginName).getDeep({ target_id: tid_array, target_type: "1" }, res_arr=>{ if (res_array){ res_array.forEach(res=>{ //.... wie bisher }) } })
Bernd, meine ursprüngliche Idee war es eigentlich, das Community Radar zuerst als Plugin zu erstellen und es dann auf einer komplett eigenen Seite im Forum anzeigen zu lassen.
So würde es die restlichen Seiten überhaupt nicht belasten.
Wolfgang hat es jetzt für den Start erst einmal unten in die "Letzten Beiträge" integriert. Deine technischen Vorschläge und Optimierungen finde ich aber richtig gut, vielen Dank dafür!
Ich finde es klasse, wie wir das Skript hier zusammen weiterentwickeln.
Ganz nach dem Motto: Gemeinsam sind wir stark! 💪
Ich habe einfach so viele Ideen und Inspirationen im Kopf und möchte unbedingt noch weitere coole Erweiterungen für uns machen. Das dauert natürlich alles seine Zeit, aber ich gebe mir wirklich viel Mühe.
Als Nächstes kam mir zum Beispiel die Idee, ein ähnliches Skript speziell für Admins und Moderatoren zu schreiben – ebenfalls in diesem modernen Kartenformat.
Dort könnte man auf einen Blick sehen, wer gerade online oder offline ist und für welche Forenbereiche die jeweiligen Teammitglieder zuständig sind.
Ich muss aber auch ganz ehrlich etwas zugeben: Ich schaffe es einfach nicht, Plugins so zu erstellen, wie Xobor das in den offiziellen Einsteiger-Tutorials mit den ganzen Variablen-Schritten verlangt.
Ich raffe diesen komplizierten Weg, den Xobor da als Beispiel zeigt, einfach nicht und bin dafür ehrlich gesagt zu blöd. 😅
Ich nutze daher immer meine eigene, einfache Variante: Für das Template (v4) kopiere ich das Skript direkt in die Fußzeile! Oder man legt einfach ein Plugin unter "Untere Leiste - header" an.
Wichtig ist dabei im Plugin nur, dass man rechts oben das "Unterstützte Template" markiert – also das Business-Template (144) mit einem Mausklick oder per Strg + Mausklick auswählt.
Das funktioniert für mich und meine Skripte einfach am besten und reicht vollkommen aus.
Ich bin zwar nicht perfekt, aber ich hatte dank eurer genialen Ideen und Vorschläge gerade eine riesige Inspiration! 💡
Gemeinsam sind wir stark: Ich finde es einfach absolut klasse, wie ihr euch hier einsetzt. Es stimmt einfach: Viele Augen sehen mehr als nur zwei Augen! 👀
Riesen Respekt an euch: Es ist faszinierend, auf welche technischen Details ihr achtet. Als normaler Leser oder Benutzer eines Forums denkt man an solche Dinge wie Serverlast oder veraltete Beiträge auf Seite 5 gar nicht nach. Respekt dafür, ich hätte da alleine echt nicht dran gedacht! 🛠️
💻 Der neue, serverschonende Code (v2.0)
Ich habe mich direkt hingesetzt und unser Skript mithilfe eures Feedbacks komplett neu aufgebaut. Bernds Bulk-Request für getDeep ist jetzt drin und die alten Beiträge über 30 Tage fliegen dank des neuen Filters sofort raus!
// NEU: Bernd-Filter! Wenn Beitrag zu alt, wird er direkt übersprungen! if (isTooOld(date)) return;
// Kategorie aus Titel bestimmen let type = "discussion"; for (const [t, r] of Object.entries(filterRules)) if (r.regex && r.regex.test(title)) { type = t; break; } const tid = (threadUrl.match(/t(\d+)f/) || [])[1]; const m = finalUrl.match(/#msg(\d+)/), msgid = m ? m[1] : null;
Habe Dein JS nicht zum Laufen bekommen, es werden keine Karten angezeigt! Da stecken noch einige Fehler drin, z.B. Zeile 91+92 . Ich denke, die Filter-Logik passt nicht, es werden keine msg-IDs geliefert. Einige Funktionen überschneiden sich.
Das JS in Beitrag #1 ist bereits "serverschonend " und "get-Deep " optimiert. Hier gibt es eine Anfrage pro Seite. Bei 100 Beiträgen = 10 Seiten --> 10 Serveranfragen[/i]. Wollte man die Serverlast weiter minimieren, müssten die Karten ohne Text angezeigt werden! Das JS ist stark minimiert und kompakt.
// Laden und Filtern (Logik zur API-Abfrage optimiert) const pages=Math.ceil(MaxPosts/{{threads_per_page}}),requests=[...Array(pages)].map((_,i)=>$.get(`/forum.php?show=last${i?`&s=${i*{{threads_per_page}}}`:""}`));
// NEU: Bernd-Filter! Wenn Beitrag zu alt, wird er direkt übersprungen! if (isTooOld(date)) return;
// Kategorie aus Titel bestimmen let type = "discussion"; for (const [t, r] of Object.entries(filterRules)) if (r.regex && r.regex.test(title)) { type = t; break; } const tid = (threadUrl.match(/t(\d+)f/) || [])[1]; const m = finalUrl.match(/#msg(\d+)/), msgid = m ? m[1] : null;
Update: Was ist im Forum so los? Das Community Radar!
wollte Danke sagen, habe mich nochmal drangesetzt, um die Serverlast und CPU-Last zu reduzieren. Was ich jetzt erst richtig verstanden habe, war die Funktion "MaxDaysOld ", klasse Idee von Bernd! "Was ist los ", heist ja auch, was passiert aktuell im Forum. Für die Kategorie "Diskussionen " passt das natürlich bestens! Hier ist eine Gültigkeit der Karten gut angebracht! Es gibt aber Kategorien, wie "Ideen " und "Tipps " die zeitlos sind und immer gebraucht werden, auch wenn sie ein paar Jahre alt sind! Vielleicht könnte man "MaxDaysOld " auch nur für bestimmte Kategorien einrichten, oder? Je nach Forum, kann man auch die Suchkategorien anpassen. Ist es ein Quassel-Forum, würden hier alle Kategorien passen, denke ich! Auf jeden Fall habe ich diese geniale Funktion mit in das JS Beitrag #1 eingebaut, weil sie einfach universell einsetzbar ist.