gar1t
(Garrett)
1
この質問は API の詳細な部分に関するものです。
私は優れた Matomo テーマコンポーネントのフォークを使用しています。これにより、Matomo でページビューをトラッキングできます。私のフォークは、いくつかの問題を回避するための試みであり、本質的にはオリジナルと同一です。以下に述べる動作は、アップストリームのコンポーネントでも発生します。
このコンポーネントは、Matomo の API/機能を設定するために onPageChange コールバックを使用しています。
私が直面している問題は、場合によっては onPageChange コールバックがページタイトルが生成される前に実行されてしまうことです。これは一貫性がありません。タイトルが完全に形成されている場合もあれば、そうでない場合もあります。
その結果、Matomo のログ履歴には、完全に形成されたページタイトルとそうでないものが混在してしまいます。
Discourse のソースコードを確認すると、これは page:changed トリガーよりも前に呼び出されています。
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/app/lib/page-tracker.js#L31
すべてが正常に動作するように見えます - onPageChange が呼び出される頃にはタイトルが更新されているはずです。しかし、少なくとも一貫してそうではありません。
関連する可能性のある別の問題もあります。onPageChange が時には 2 回呼び出されることがあります。これが私の回避策(およびフォークの動機)です。
onPageChange が同じページビューに対して 2 回呼び出される場合、その 2 回の呼び出しのうちの 1 つは、現在のウィンドウの場所とは異なる url 引数を提供します。私はこれをチェックして早期に終了します。
(私は onPageChange ではなく onAppEvent を通じて page:changed イベントを処理していますが、どちらの場合でも同様の動作が見られます。)
simon
2
以下のコードでタイトルが設定されるかどうかをテストしました。
<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(サイト説明)の設定が埋められているか確認してください。
guildai
(Garrett)
3
Simon、調査いただきありがとうございます。私の環境ではそのようには表示されていません。画面録画を作成しましたので、別途リンクと、現在使用されているテーマコンポーネントのソースへの参照をお送りします。
要点としては、アプリが読み込まれた状態でトピックに初めてアクセスした際、タイトルがレンダリングされないという点です。エントリーページ(アプリを初めて読み込んだ際)では、onPageChanged でタイトルが表示されますが、最初のページ以降のすべてのページでも同様に表示されます。この録画動画をご覧いただければ、状況がより明確になると思います 