AMP
  • 網站

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。請在官方 文件 上閱讀更多關於 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 標記。

<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>

預設國家/地區群組

GOOGLE 與 AMP 專案基於善意提供此資訊,但不保證本文所含任何資訊的準確性或完整性。此資訊以「現狀」提供,且不含任何明示或暗示的擔保,包括但不限於適銷性和特定用途適用性的暗示擔保。

amp-geo 支援特定區域的預設國家/地區清單。例如,歐洲經濟區 (EEA) 有一個預設值 preset-eea,我們將其指派給名為 eeaISOCountryGroup

 "ISOCountryGroups": {
    "eea": [ "preset-eea" ],
    ...
 }

在此範例中,我們會根據主體標記中是否存在 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 上編輯範例