設定 Google Analytics
要在 Zensical 中加入 Google Analytics 4 很簡單,可以使用底下兩種方式的其中一種即可。
從 zensical.toml 設定檔插入
只要在 zensical.toml 中加入底下設定即可。
這是官方建議的做法,也跟本專案實際使用的方式相同。
手動加入追蹤程式碼
除了 的方式之外,也可以手動將底下程式碼加到 overrides/main.html 中!
{% extends "base.html" %}
{% block extrahead %}
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>
{% endblock %}
記得把 G-XXXXXXXXXX 換成你的 GA4 評估 ID。
搜尋追蹤
若要追蹤站內搜尋,到 Google Analytics 後台的資料串流 → 增強型評估,確認 網站搜尋 已開啟。
「這一頁對您有幫助嗎?」評分元件
可以在每頁底部加上簡單的意見回饋元件,讓讀者立即評價這頁是否有幫助:
[project.extra.analytics]
provider = "google"
property = "G-XXXXXXXXXX"
[project.extra.analytics.feedback]
title = "這一頁對您有幫助嗎?"
[[project.extra.analytics.feedback.ratings]]
icon = "material/emoticon-happy-outline"
name = "這一頁很有幫助"
data = 1
note = "感謝您的回饋!"
[[project.extra.analytics.feedback.ratings]]
icon = "material/emoticon-sad-outline"
name = "這一頁還可以更好"
data = 0
note = """
感謝您的回饋!請透過
<a href="https://github.com/your-repo/issues/new/?title=[Feedback]+{title}+-+{url}" target="_blank" rel="noopener">意見表單</a>
告訴我們如何改進這一頁。
"""
| 屬性 | 說明 |
|---|---|
title、ratings |
兩者都必填。評分的數量不限,例如可以做 1~5 顆星 |
icon |
評分圖示,必須是內建圖示,否則建置會失敗。常見組合:material/emoticon-happy-outline + emoticon-sad-outline、material/thumb-up-outline + thumb-down-outline、material/heart + heart-broken |
name |
滑鼠移上去或鍵盤聚焦時顯示的說明 |
data |
隨自訂事件傳送到 Google Analytics 的值(必須是整數) |
note |
讀者送出評分後顯示的訊息,可含 HTML。可用 {url}(頁面網址)與 {title}(頁面標題)預先填好表單,例如上面連到 GitHub 的「新增 issue」表單 |
與 Cookie 同意整合
這個元件會把資料送到第三方服務,所以已經和 Cookie 同意整合:讀者如果沒有接受 analytics Cookie,就不會顯示評分元件。
某一頁不想顯示,用 front matter 隱藏:
在 Google Analytics 查看評分
- 進入 Google Analytics → 管理 → 自訂定義,切換到「自訂指標」,建立指標:名稱
Page helpful、說明Was this page helpful?、事件參數data、測量單位Standard。 - 到「探索」建立新的空白探索:維度加入「事件名稱」與「網頁位置」;指標加入「事件計數」與「Page helpful」;列放「網頁位置」;值放兩個指標;篩選條件為「事件名稱 完全符合
feedback」。
報表大約需要 24 小時以上才會開始顯示資料。
使用其他分析服務
想串接其他以 JavaScript 追蹤的分析服務,在 overrides/ 建立 partials/integrations/analytics/custom.html(檔名就是 provider 的名稱),並在設定使用:
overrides/partials/integrations/analytics/custom.html
<script>
/* 在這裡加入自訂的分析整合 */
var property = "{{ config.extra.analytics.property }}"
document.addEventListener("DOMContentLoaded", function() {
/* 使用 instant navigation 時,location$ 會在每次換頁時送出目前網址 */
location$.subscribe(function(url) {
/* 在這裡加入自訂的頁面事件追蹤 */
})
})
</script>
analytics 底下可以放任意的鍵值,方便在多個專案共用同一個整合。
自訂評分元件的處理,只要用 JavaScript 處理使用者互動產生的事件:
docs/js/feedback.js
document$.subscribe(function() {
var feedback = document.forms.feedback
if (typeof feedback === "undefined") return
feedback.hidden = false // 預設是隱藏的,要先顯示
feedback.addEventListener("submit", function(ev) {
ev.preventDefault()
var page = document.location.pathname // 取得頁面
var data = ev.submitter.getAttribute("data-md-value")
console.log(page, data) // 換成送到分析服務的程式碼
feedback.firstElementChild.disabled = true // 送出後停用表單
var note = feedback.querySelector(
".md-feedback__note [data-md-value='" + data + "']"
)
if (note) note.hidden = false // 顯示對應的訊息
})
})
官方正在改版分析整合
Zensical 的分析整合承襲自 Material for MkDocs,官方正在重新設計,讓它更貼近 Zensical 並提供更多客製化選項。