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

**URL:** https://meta.discourse.org/t/page-title-generation-and-page-changed-event/158170
**Category:** Support
**Created:** [7월 19, 2020, 2:49오후 UTC](https://meta.discourse.org/t/page-title-generation-and-page-changed-event/158170 "2020-07-19T14:49:46Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![gar1t](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gar1t/32/380142_2.png) [@gar1t](https://meta.discourse.org/u/gar1t)
#### Post date: [7월 19, 2020, 2:49오후 UTC](https://meta.discourse.org/t/page-title-generation-and-page-changed-event/158170/1 "2020-07-19T14:49:46Z")

</div>

이 질문은 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](https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/lib/page-tracker.js#L31)

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

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

> <https://github.com/guildai/discourse-matomo-analytics/blob/master/common/head_tag.html#L2-L13>

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

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

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [7월 22, 2020, 8:28오후 UTC](https://meta.discourse.org/t/page-title-generation-and-page-changed-event/158170/2 "2020-07-22T20:28:25Z")

</div>

> [@gar1t](#):
>
> 제가 겪는 문제는 때때로 `onPageChange` 콜백이 페이지 제목이 생성되기 _이전에_ 호출된다는 점입니다. 이는 일관성이 없습니다. 때로는 제목이 완전히 형성되어 있고, 때로는 그렇지 않습니다.

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

```javascript
<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”(필수) 탭에서 찾을 수 있습니다.

---

<div class="post-metadata">

### Author: ![guildai](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/guildai/32/248544_2.png) [@guildai](https://meta.discourse.org/u/guildai)
#### Post date: [7월 22, 2020, 9:22오후 UTC](https://meta.discourse.org/t/page-title-generation-and-page-changed-event/158170/3 "2020-07-22T21:22:01Z")

</div>

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

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