페이지 제목 생성 및 page:changed 이벤트

이 질문은 API의 세부 사항에 해당합니다.

저는 뛰어난 Matomo 테마 컴포넌트의 포크를 사용하고 있습니다. 이 컴포넌트를 사용하면 Matomo로 페이지 뷰를 추적할 수 있습니다. 제 포크는 문제점을 우회하기 위한 시도이며, 본질적으로 원본과 동일합니다. 아래에 설명된 동작은 업스트림 컴포넌트에서도 동일하게 발생합니다.

해당 컴포넌트는 onPageChange 콜백을 사용하여 Matomo API/기능을 설정합니다.

제가 겪고 있는 문제는 때때로 onPageChange 콜백이 페이지 타이틀이 생성되기 이전에 호출된다는 점입니다. 이는 일관성이 없습니다. 타이틀이 완전히 형성된 경우도 있고, 그렇지 않은 경우도 있습니다.

그 결과 Matomo 로그 히스토리에 완전히 형성된 페이지 타이틀과 그렇지 않은 타이틀이 혼재되어 있습니다.

Discourse 소스 코드를 살펴보면, 이는 page:changed 트리거보다 이전에 호출됩니다:

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

이 모든 것이 정상적으로 작동해야 할 것으로 보입니다. onPageChange가 호출될 시점에는 타이틀이 새로고침되어 있어야 합니다. 하지만 그렇지 않습니다. 적어도 일관되게 그러하지는 않습니다.

관련되어 있을 수 있는 또 다른 문제가 있습니다. onPageChange가 때때로 두 번 호출됩니다. 이것이 제 우회 방법(그리고 포크의 동기)입니다:

onPageChange가 동일한 페이지 뷰에 대해 두 번 호출되는 경우, 두 호출 중 하나는 현재 창 위치와 다른 url 인수를 제공합니다. 저는 이를 확인하고 조기 종료합니다.

(page:changed 이벤트는 onPageChange가 아닌 onAppEvent를 통해 처리하지만, 어느 경우든 동일한 동작을 관찰할 수 있습니다.)

다음 코드를 사용하여 제목이 설정되는지 테스트해 보았습니다:

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

확인한 결과, 새 주제를 생성하면 주제 생성 직후 호출되는 api.onPageChange 호출에서 해당 주제의 제목이 설정되지 않았습니다. 그 경우 대신 사이트 제목이 사용됩니다. 이 현상이 당신의 사이트에서도 발생하고 있는 것 같나요? 제목이 전혀 표시되지 않는다면, title(제목)과 site description(사이트 설명) 사이트 설정이 채워져 있는지 확인해 주세요. 해당 설정은 사이트 설정 페이지의 “Required”(필수) 탭에서 찾을 수 있습니다.

이 부분을 확인해 주셔서 감사합니다, Simon. 제가 확인한 내용과는 다릅니다. 화면 녹화를 만들어 두었고, 테마 컴포넌트 소스에 대한 참조와 함께 링크를 별도로 전달해 드리겠습니다.

요약하자면, 로드된 앱에서 토픽에 대한 초기 호출 시 제목이 렌더링되지 않습니다. 진입 페이지(즉, 앱이 처음 로드되는 시점)에서는 onPageChanged에서 첫 번째 페이지 이후의 모든 페이지에서 제목이 표시되는 것을 확인할 수 있습니다. hopefully 이 녹화가 상황을 훨씬 더 명확하게 보여줄 것입니다 :slight_smile: