Generación de títulos de página y evento page:changed

Esta pregunta se adentra en los detalles técnicos de la API.

Estoy utilizando un fork del excelente componente de tema Matomo. Esto permite rastrear las vistas de página con Matomo. Mi fork es un intento de solucionar ciertos problemas. Es esencialmente idéntico. El comportamiento descrito a continuación también ocurre con el componente original (upstream).

El componente utiliza la función de retorno onPageChange para configurar una API o funcionalidad de Matomo.

El problema que estoy experimentando es que, en ocasiones, la función de retorno onPageChange se ejecuta antes de que se genere el título de la página. Esto es inconsistente. A veces el título está completamente formado y otras veces no.

El resultado es que el historial de registros de Matomo contiene una mezcla de títulos de página completos e incompletos.

Al revisar el código fuente de Discourse, esto se llama antes del disparador page:changed:

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

Todo esto parece que debería funcionar: el título debería actualizarse para el momento en que se llama a onPageChange. Sin embargo, no es así, al menos no de manera consistente.

Existe otro problema que podría estar relacionado. onPageChange a veces se llama dos veces. Esta es mi solución (y la motivación para el fork):

En el caso en que onPageChange se llame dos veces para la misma vista de página, una de las dos llamadas proporciona un argumento url diferente de la ubicación actual de la ventana. Verifico esto y salgo temprano.

(Tenga en cuenta que manejo el evento page:changed a través de onAppEvent en lugar de onPageChange, pero observo el mismo comportamiento en ambos casos.)

He probado a ver si el título se establece con el siguiente código:

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

Lo que he descubierto es que si creo un nuevo tema, el título del tema no está establecido en la llamada a api.onPageChange que se realiza inmediatamente después de crear el tema. En ese caso, se utiliza el título del sitio en su lugar. ¿Parece que esto es lo que está sucediendo en tu sitio? Si no ves ningún título, asegúrate de haber rellenado las configuraciones del sitio title y site description. Esas configuraciones se encuentran en la pestaña “Required” de la página de configuraciones de tu sitio.

Gracias por investigar esto, Simon. No es lo que yo estoy viendo. Preparé una grabación de pantalla y te enviaré el enlace fuera de banda, junto con una referencia al código fuente del componente del tema en uso.

La esencia es que los títulos no se muestran en una llamada inicial a un tema desde una aplicación ya cargada. En la página de entrada (es decir, la primera vez que se carga la aplicación) veo el título en onPageChanged, y en cualquier página después de la primera. La grabación lo hace mucho más claro, espero :slight_smile: