api.onPageChange funktioniert nicht mit Endlos-Scrolling

Ich versuche, die Tag-Links mit dem folgenden Code zu ändern, und es scheint zu funktionieren, wenn ich die Seite aktualisiere oder zu einer neuen Seite navigiere, aber es funktioniert nicht, wenn ich auf der Seite nach unten scrolle, wo durch Endlos-Scrolling neue Elemente geladen werden:

<script type="text/discourse-plugin" version="0.8">
	api.onPageChange(() =>{
		var tags = document.getElementsByClassName("discourse-tag");
		for (i = 0; i < tags.length; i++) {
			var tag = tags[i];
			var url = tag.href;
			var newUrl = "https://site.com" + url;
			tag.href = newUrl;
		}
	});
</script>

Muss ich etwas anderes als oder zusätzlich zu api.onPageChange verwenden?

1 „Gefällt mir“

Ja, das wird nicht funktionieren. Es wird nur bei einer Routenänderung ausgelöst. Du solltest stattdessen den Code überschreiben, der diese Tags direkt rendert, anstatt die DOM-Auswahl zu verwenden.

9 „Gefällt mir“

Danke, Robert – ich hatte gehofft, dass etwas Einfaches ausreicht! :see_no_evil:

Es ist schon eine Weile her, seit ich die Plugin-Anleitung gelesen habe, aber meiner Erinnerung nach läuft es so ab?

  • rails g plugin NAME
  • die Datei finden, die du ändern möchtest
  • sie in dasselbe Verzeichnis in deinem Plugin kopieren
  • deine Änderungen vornehmen

Allerdings funktioniert das bei mir nicht.

Das direkte Bearbeiten dieser Datei (Zeile 29): discourse/app/assets/javascripts/discourse/app/lib/render-tag.js at bbe5d8d5cf1220165842985c0e2cd4c454d501cd · discourse/discourse · GitHub hat den gewünschten Effekt, aber wenn ich die Datei an folgendem Ort dupliziere, hat das keine Auswirkung: plugins/my-plugin/app/assets/javascripts/discourse/app/lib/render-tag.js.

Hast du eine Idee, was ich falsch mache? Hat sich seit dem Lesen der Anleitungen etwas geändert? (Aus irgendeinem Grund dachte ich, es wäre so einfach, Dateien zu überschreiben, um kleine Dinge wie diese zu ändern).

1 „Gefällt mir“

Du brauchst kein Plugin, das ist clientseitig. Verwende eine Theme-Komponente.

7 „Gefällt mir“

Danke! Komischerweise habe ich gestern Abend begonnen, die Tag Icons anzupassen, und es hat funktioniert! :smiley:

Aus reinem Interesse: Hätte die von mir beschriebene Plugin-Datei-Überschreib-Methode auch funktionieren sollen? (Falls ja, hast du eine Idee, was ich falsch gemacht habe?)

1 „Gefällt mir“