amp-geo
簡介
amp-geo
擴充功能可根據使用者國家/地區層級位置的約略值(類似 ISO 國家/地區代碼的層級)來變更小區塊的內容。amp-geo
元件也提供簡單的機制來分組位置,讓一次將屬性套用至多個地理區域變得更容易。
設定
匯入 amp-geo
元件。
<script async custom-element="amp-geo" src="https://cdn.ampproject.org/v0/amp-geo-0.1.js"></script>
基本用法
amp-geo
元件透過 JSON 設定,且每個頁面只能包含一個 amp-geo
標記。我們在這個頁面上展示了 amp-geo
的不同範例,並將說明每個範例的 JSON 設定。
<amp-geo layout="nodisplay">
<script type="application/json">
{
"AmpBind": true,
"ISOCountryGroups": {
"soccer": [ "au", "ca", "ie", "nz", "us", "za" ],
"football": [ "unknown" ],
"eea": [ "preset-eea" ]
}
}
</script>
</amp-geo>
amp-geo
提供類別 amp-iso-country-XX
,其中 XX 是 ISO 國家/地區代碼。在以下範例中,元件會判斷對應使用者約略位置的 ISO 國家/地區代碼。如果這是「ca」(加拿大),頁面會顯示楓葉旗,否則會顯示美國國旗。為了進行測試,如果您想要強制國家/地區為加拿大,您可以將 #amp-geo=ca
附加到網址,例如 https://amp.dev.org.tw/documentation/examples/components/amp-geo#amp-geo=ca,並在此處啟用 beta-channel
here。請在官方 doc 上閱讀更多關於 amp-geo 偵錯的資訊
<div class="flag"></div>
國家/地區分組
在這裡,我們使用 amp-geo
分組功能來定義兩組不同的 ISO 國家/地區代碼:一組給玩足球的人,另一組給玩美式足球的人。請注意,我們在 amp-geo
標記中加入包含 'unknown' 的群組:如果無法判斷國家/地區,則值會設為 'unknown'。當搭配 amp-geo
使用分組功能時,至少必須有一個群組包含 'unknown'。當使用分組時,amp-geo
提供類別 amp-geo-group-XX
,其中 XX 是由 amp-geo
判斷的群組名稱。
這個遊戲稱為
<p>The game is called <span class="football"></span></p>
與 amp-bind 整合
如果 amp-geo
JSON 設定中存在 AMPBind
金鑰,amp-geo
會插入包含目前 ISOCountry 和群組資訊的 amp-state
標記。
ISOCountry 代碼:
符合的國家/地區群組:
<button on="tap:AMP.setState({ showLocation: true })">Where am I?</button>
<p hidden [hidden]="!showLocation">ISOCountry Code: <span [text]="ampGeo.ISOCountry"></span></p>
<p hidden [hidden]="!showLocation">Matched Country Groups: <span [text]="ampGeo.ISOCountryGroups.join(', ')"></span></p>
預設國家/地區群組
amp-geo
支援特定地區的預設國家/地區清單。例如,歐洲經濟區 (EEA) 有一個預設值 preset-eea
,我們將其指派給名為 eea
的 ISOCountryGroup
"ISOCountryGroups": { "eea": [ "preset-eea" ], ... }
在這個範例中,我們會根據 body 標記中是否存在 amp-geo-group-eea
類別,對歐洲經濟區內外的使用者顯示不同的訊息,使用以下 CSS 規則
body.amp-geo-group-eea .message-non-eea, body:not(.amp-geo-group-eea) .message-eea { display: none; }
然後我們可以利用這個規則,對歐洲經濟區內外的使用者顯示不同的訊息
<p class="message-eea">You're in the EU.</p>
<p class="message-non-eea">You're outside the EU.</p>
如果這個頁面上的說明沒有涵蓋您的所有問題,請隨時與其他 AMP 使用者聯繫,討論您的確切使用案例。
前往 Stack Overflow 有未說明的特色功能嗎?AMP 專案大力鼓勵您的參與和貢獻!我們希望您能成為我們開放原始碼社群的長期參與者,但我們也歡迎您針對您特別感興趣的問題做出一次性貢獻。
在 GitHub 上編輯範例-
由 @kul3r4 撰寫