Seitentitelgenerierung und page:changed-Ereignis

Diese Frage geht ins Detail der API.

Ich verwende einen Fork der hervorragenden Matomo-Themenkomponente. Damit können Sie Seitenaufrufe mit Matomo verfolgen. Mein Fork ist ein Versuch, Probleme zu umgehen. Er ist im Wesentlichen identisch. Das unten beschriebene Verhalten tritt auch bei der ursprünglichen Komponente auf.

Die Komponente verwendet den Callback onPageChange, um eine Matomo-API bzw. -Funktion zu konfigurieren.

Das Problem, das ich habe, ist, dass der Callback onPageChange zuweilen vor der Generierung des Seitentitels aufgerufen wird. Das ist inkonsistent. Manchmal ist der Titel vollständig vorhanden, manchmal nicht.

Das Ergebnis ist, dass der Matomo-Protokollverlauf eine Mischung aus vollständig gebildeten und unvollständigen Seitentiteln enthält.

Wenn ich mir den Discourse-Quellcode anschaue, wird dies vor dem Trigger page:changed aufgerufen:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/lib/page-tracker.js#L31

Das sieht alles so aus, als ob es funktionieren sollte – der Titel sollte bis zum Aufruf von onPageChange aktualisiert sein. Das ist er jedoch – zumindest nicht konsistent.

Es gibt ein weiteres Problem, das damit zusammenhängen könnte. onPageChange wird manchmal zweimal aufgerufen. Das ist meine Workaround-Lösung (und der Grund für den Fork):

Im Fall, dass onPageChange zweimal für denselben Seitenaufruf aufgerufen wird, liefert einer der beiden Aufrufe ein url-Argument, das von der aktuellen Fensterposition abweicht. Ich prüfe dies und breche frühzeitig ab.

(Beachten Sie, dass ich das page:changed-Ereignis über onAppEvent und nicht über onPageChange behandle, aber ich sehe das gleiche Verhalten in beiden Fällen.)

Ich habe getestet, ob der Titel mit dem folgenden Code gesetzt wird:

<script type="text/discourse-plugin" version="0.2">
api.onPageChange( (url, title) => {
    console.log('url', url);
    console.log('title', title)
})
</script>

Meine Feststellung ist: Wenn ich ein neues Thema erstelle, wird der Titel des Themas beim Aufruf von api.onPageChange, der unmittelbar nach der Erstellung des Themas erfolgt, nicht gesetzt. In diesem Fall wird stattdessen der Seitentitel verwendet. Scheint das auf deiner Seite ebenfalls der Fall zu sein? Wenn du überhaupt keinen Titel siehst, stelle sicher, dass du die Site-Einstellungen title und site description ausgefüllt hast. Diese Einstellungen findest du auf dem Tab „Erforderlich“ deiner Site-Einstellungsseite.

Danke, dass du dir das angesehen hast, Simon. Das ist nicht das, was ich sehe. Ich habe eine Bildschirmaufnahme erstellt und werde dir den Link außerhalb des Kanals zusammen mit einem Verweis auf die verwendete Theme-Komponentenquelle schicken.

Der Kernpunkt ist jedoch, dass Titel bei einem initialen Aufruf eines Themas aus einer geladenen App nicht gerendert werden. Auf einer Einstiegsseite (d. h. beim ersten Laden der App) sehe ich den Titel in onPageChanged, und auf jeder Seite nach der ersten. Die Aufnahme macht das hoffentlich viel klarer :slight_smile: