會員範本

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

請使用下列工具自訂您的會員票證,並參閱以下程式碼片段。

會員票證支援範本顯示功能。如果沒有定義任何範本,系統會使用預設範本。

範本定義

票證範本是在類別層級定義,用來顯示與該類別相關聯的任何物件。範本會定義要在票證的不同部分顯示哪些欄位。

範本可分為以下幾個部分:

Android

範本總覽

網站

範本總覽

資訊卡標題

Android

資訊卡標題元素
  1. class.programLogo
  2. class.localizedIssuerName
    class.issuerName
  3. class.localizedProgramName
    class.programName
  4. class.hexBackgroundColor

網站

資訊卡標題元素
  1. class.programLogo
  2. class.localizedIssuerName
    class.issuerName
  3. class.localizedProgramName
    class.programName
  4. class.hexBackgroundColor

卡片標題區段會顯示標誌、核發機構名稱和計畫名稱。填入時不會用於填入欄位的欄位參照及其位置。

資訊卡範本

Android

範本總覽

網站

範本總覽

資訊卡範本區段的用途是顯示額外資料列。這些資料列可包含文字結構化資料欄位或文字模組欄位。

您可以指定 class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[] 清單中定義物件數量的列數。這個清單至少需要一個元素,建議您最多使用兩個元素。每個元素都必須是下列其中一種類型:

  • oneItem,可接受一個項目:
    • item
  • twoItems,可接受兩個項目:
    • startItem
    • endItem
  • threeItems,可接受三個項目:
    • startItem
    • middleItem
    • endItem

每個項目都可以定義為單一欄位選取器 (.firstValue)、兩個欄位選取器 (.firstValue.secondValue) 或預先定義的項目 (.predefinedItem)。系統會顯示所選欄位的值及其各自的標籤。當您定義兩個欄位選取器時,所選欄位的值會以「/」分隔符顯示。這也適用於所選欄位的標籤。預先定義的項目可用來定義更複雜的轉譯作業。

以下的程式碼範例顯示,如何覆寫卡片範本卡片列區段以指定兩列。每列包含三個項目,每個項目會參照六個類別層級的 textModuleData 自訂欄位及其標頭做為標籤:

Python

 {
   ... //Rest of class
   "textModulesData": [
        {
            "header": "Label 1",
            "body": "Some info 1",
            "id": "myfield1"
        },
        {
            "header": "Label 2",
            "body": "Some info 2",
            "id": "myfield2"
        },
        {
            "header": "Label 3",
            "body": "Some info 3",
            "id": "myfield3"
        },
        {
            "header": "Label 4",
            "body": "Some info 4",
            "id": "myfield4"
        },
        {
            "header": "Label 5",
            "body": "Some info 5",
            "id": "myfield5"
        },
        {
            "header": "Label 6",
            "body": "Some info 6",
            "id": "myfield6"
        }
    ],
   "classTemplateInfo": {
        "cardTemplateOverride": {
            "cardRowTemplateInfos": [{
                "threeItems": {
                    "startItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield1']"
                            }]
                        }
                    },
                    "middleItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield2']"
                            }]
                        }
                    },
                    "endItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield3']"
                            }]
                        }
                    },
                }
            },{
                "threeItems": {
                    "startItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield4']"
                            }]
                        }
                    },
                    "middleItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield5']"
                            }]
                        }
                    },
                    "endItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield6']"
                            }]
                        }
                    },
                }
            }]
        }
    }
}
    

Java

// Rest of class
  .setTextModulesData((new ArrayList<TextModuleData>() {
    {
      add((new TextModuleData()).setHeader("Label 1")
        .setBody("Some info 1")
        .setId("myfield1"));
      add((new TextModuleData()).setHeader("Label 2")
        .setBody("Some info 1")
        .setId("myfield2"));
      add((new TextModuleData()).setHeader("Label 3")
        .setBody("Some info 3")
        .setId("myfield3"));
      add((new TextModuleData()).setHeader("Label 4")
        .setBody("Some info 4")
        .setId("myfield4"));
      add((new TextModuleData()).setHeader("Label 5")
        .setBody("Some info 5")
        .setId("myfield5"));
      add((new TextModuleData()).setHeader("Label 6")
        .setBody("Some info 5")
        .setId("myfield6"));
    }
  }))
  .setClassTemplateInfo((new ClassTemplateInfo())
    .setCardTemplateOverride((new CardTemplateOverride())
      .setCardRowTemplateInfos(new ArrayList<CardRowTemplateInfo>() {
        {
          add((new CardRowTemplateInfo()).setThreeItems((new CardRowThreeItems())
            .setStartItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield1']"));
              }
            })))
            .setMiddleItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield2']"));
              }
            })))
            .setEndItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield3']"));
              }
            })))
          ));
          add((new CardRowTemplateInfo()).setThreeItems((new CardRowThreeItems())
            .setStartItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield4']"));
              }
            })))
            .setMiddleItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield5']"));
              }
            })))
            .setEndItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield6']"));
              }
            })))
          ));
          }
  })))
    

PHP

// Rest of class
    $textModulesData1 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData1->setBody("Some info 1");
    $textModulesData1->setHeader("Label 1");
    $textModulesData1->setId("myfield1");

    $textModulesData2 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData2->setBody("Some info 2");
    $textModulesData2->setHeader("Label 2");
    $textModulesData2->setId("myfield2");

    $textModulesData3 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData3->setBody("Some info 3");
    $textModulesData3->setHeader("Label 3");
    $textModulesData3->setId("myfield3");

    $textModulesData4 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData4->setBody("Some info 4");
    $textModulesData4->setHeader("Label 4");
    $textModulesData4->setId("myfield4");

    $textModulesData5 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData5->setBody("Some info 5");
    $textModulesData5->setHeader("Label 5");
    $textModulesData5->setId("myfield5");

    $textModulesData6 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData6->setBody("Some info 6");
    $textModulesData6->setHeader("Label 6");
    $textModulesData6->setId("myfield6");

    $textModulesDatas = array($textModulesData1, $textModulesData2, $textModulesData3,
                  $textModulesData4, $textModulesData5, $textModulesData6);

    $startItemField = new Google_Service_Walletobjects_FieldReference();
    $startItemField->setFieldPath("class.textModulesData['myfield1']");

    $startItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $startItemFirstValue->setFields(array($startItemField));

    $startItem = new Google_Service_Walletobjects_TemplateItem();
    $startItem->setFirstValue($startItemFirstValue);

    $middleItemField = new Google_Service_Walletobjects_FieldReference();
    $middleItemField->setFieldPath("class.textModulesData['myfield2']");

    $middleItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $middleItemFirstValue->setFields(array($middleItemField));

    $middleItem = new Google_Service_Walletobjects_TemplateItem();
    $middleItem->setFirstValue($middleItemFirstValue);

    $endItemField = new Google_Service_Walletobjects_FieldReference();
    $endItemField->setFieldPath("class.textModulesData['myfield3']");

    $endItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $endItemFirstValue->setFields(array($endItemField));

    $endItem = new Google_Service_Walletobjects_TemplateItem();
    $endItem->setFirstValue($endItemFirstValue);

    $cardRowTemplate = new Google_Service_Walletobjects_CardRowThreeItems();
    $cardRowTemplate->setStartItem($startItem);
    $cardRowTemplate->setMiddleItem($middleItem);
    $cardRowTemplate->setEndItem($endItem);

    $cardRowTemplateInfo1 = new Google_Service_Walletobjects_CardRowTemplateInfo();
    $cardRowTemplateInfo1->setThreeItems($cardRowTemplate);

    $startItemField2 = new Google_Service_Walletobjects_FieldReference();
    $startItemField2->setFieldPath("class.textModulesData['myfield4']");

    $startItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $startItemFirstValue2->setFields(array($startItemField2));

    $startItem2 = new Google_Service_Walletobjects_TemplateItem();
    $startItem2->setFirstValue($startItemFirstValue2);

    $middleItemField2 = new Google_Service_Walletobjects_FieldReference();
    $middleItemField2->setFieldPath("class.textModulesData['myfield5']");

    $middleItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $middleItemFirstValue2->setFields(array($middleItemField2));

    $middleItem2 = new Google_Service_Walletobjects_TemplateItem();
    $middleItem2->setFirstValue($middleItemFirstValue2);

    $endItemField2 = new Google_Service_Walletobjects_FieldReference();
    $endItemField2->setFieldPath("class.textModulesData['myfield6']");

    $endItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $endItemFirstValue2->setFields(array($endItemField2));

    $endItem2 = new Google_Service_Walletobjects_TemplateItem();
    $endItem2->setFirstValue($endItemFirstValue2);

    $cardRowTemplate2 = new Google_Service_Walletobjects_CardRowThreeItems();
    $cardRowTemplate2->setStartItem($startItem2);
    $cardRowTemplate2->setMiddleItem($middleItem2);
    $cardRowTemplate2->setEndItem($endItem2);

    $cardRowTemplateInfo2 = new Google_Service_Walletobjects_CardRowTemplateInfo();
    $cardRowTemplateInfo2->setThreeItems($cardRowTemplate2);

    $cardTemplateOverride = new Google_Service_Walletobjects_CardTemplateOverride();
    $cardTemplateOverride->setCardRowTemplateInfos(array($cardRowTemplateInfo1,
                  $cardRowTemplateInfo2));

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setCardTemplateOverride($cardTemplateOverride);

    $payload->setTextModulesData($textModulesDatas);
    $payload->setClassTemplateInfo($classTemplateInfo);
    

程式碼會使用以下程式碼範本區段格式來建立票證:

標籤覆寫範例。

如果項目空白,就不會顯示。詳情請參閱「欄位參照」一文。如果資料列中的所有項目為空白,該資料列就不會顯示。如果資料列中只有部分項目為空,系統會重新排列非空白項目,並以較少的項目來顯示。

如果您未覆寫卡片範本,則會使用預設的列數、預設項目數及預設欄位參照。詳情請參閱預設範本

定義主頁橫幅之後,如果 cardRowTemplateInfos 清單中有多個資料列 (如果只有一個資料列),則該資料列會顯示在第一列之後。

卡片條碼

Android

卡片條碼元素
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.typeobject.barcode.value
    object.accountId
  4. object.barcode.alternateText
    object.accountId
    object.barcode.value
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail
  6. object.heroImage
    class.heroImage

網站

卡片條碼元素
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.typeobject.barcode.value
    object.accountId
  4. object.barcode.alternateText
    object.accountId
    object.barcode.value
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

卡片條碼區段可用來在條碼上方和下方顯示額外的文字或圖片。這個區段中沒有任何欄位。

有三個欄位選取器可用來定義條碼上方兩個並排的欄位,以及一個在條碼下方的欄位。這些欄位不含任何標籤,可能是以文字為基礎的結構化資料欄位、文字模組欄位或圖片模組欄位。如要使用圖片,請遵守品牌規範。

條碼由類型和值定義。如需支援的條碼類型清單,請參閱參考資料。此外,文字可直接顯示在條碼下方。這段文字能讓您更輕鬆地掃描條碼等用途。

下列程式碼範例說明如何覆寫票證的條碼區段,以便在條碼上方顯示圖片:

Python

#... rest of class
    "imageModulesData": [
        {
            "mainImage": {
                "sourceUri": {
                    "uri":  "http://farm4.staticflickr.com/3738/12440799783_3dc3c20606_b.jpg",
                    "description": "Coffee"
                }
            },
            "Id": "myimage"
        }
    ],
    "classTemplateInfo": {
        "cardBarcodeSectionDetails": {
            "firstTopDetail": {
                "fieldSelector": {
                    "fields": [
                        {
                        "fieldPath": "class.imageModulesData['myimage'].mainImage"
                        }
                    ]
                }
            }
        }
    }
}
    

Java

//... rest of class
  .setImageModulesData((new ArrayList<ImageModuleData>() {
    {
      add((new ImageModuleData())
        .setId("myimage")
        .setMainImage((new Image()).setSourceUri((new ImageUri()).setDescription("Coffee beans")
          .setUri("http://farm4.staticflickr.com/3738/12440799783_3dc3c20606_b.jpg"))));
        }
      }))
      .setClassTemplateInfo((new ClassTemplateInfo())
        .setCardBarcodeSectionDetails((new CardBarcodeSectionDetails())
          .setFirstTopDetail((new BarcodeSectionDetail())
            .setFieldSelector((new FieldSelector())
              .setFields((new ArrayList<FieldReference>(){
                {
                  add((new FieldReference()).setFieldPath("class.imageModulesData['myimage'].mainImage"));
                }
            })))))
      }
    

PHP

//... rest of class
    $imageUri = new Google_Service_Walletobjects_ImageUri();
    $imageUri->setUri("https://farm8.staticflickr.com/7340/11177041185_a61a7f2139_o.jpg");
    $imageUri->setDescription("Baconrista flights image");
    $image = new Google_Service_Walletobjects_Image();
    $image->setSourceUri($imageUri);
    $imageModulesData = new Google_Service_Walletobjects_ImageModuleData();
    $imageModulesData->setMainImage($image);
            $imageModulesData->setId("myimage");

    $cardBarcodeFieldReference = new Google_Service_Walletobjects_FieldReference();
    $cardBarcodeFieldReference->setFieldPath("class.imageModulesData['myimage'].mainImage");

    $cardBarcodeFieldSelector = new Google_Service_Walletobjects_FieldSelector();
    $cardBarcodeFieldSelector->setFields(array($cardBarcodeFieldReference));

    $cardBarcodeDetail = new Google_Service_Walletobjects_BarcodeSectionDetail();
    $cardBarcodeDetail->setFieldSelector($cardBarcodeFieldSelector);

    $cardBarcodeSectionDetails = new Google_Service_Walletobjects_CardBarcodeSectionDetails();
    $cardBarcodeSectionDetails->setFirstTopDetail($cardBarcodeDetail);

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setCardBarcodeSectionDetails($cardBarcodeSectionDetails);

    $payload->setClassTemplateInfo($classTemplateInfo);
            $payload->setImageModuleData($imageModulesData);
    

程式碼會使用以下條碼區段格式建立票證:

卡片條碼覆寫範例。

如果您未覆寫條碼區段,系統會使用預設的條碼欄位。 詳情請參閱預設範本

詳細資料範本

Android

詳細資料範本區段
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[3].item

網站

詳細資料範本區段
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[3].item

詳細資料範本區段為項目清單 class.classTemplateInfo.detailsTemplateOverride.detailsItemInfos[]。這些項目可包含任何結構化資料欄位、文字模組欄位、連結模組欄位、圖片模組欄位或訊息。

每個項目都可以定義為單一欄位選取器 (.firstValue)、兩個欄位選取器 (.firstValue.secondValue) 或預先定義的項目 (.predefinedItem)。系統會顯示所選欄位的值及其各自的標籤。當您定義兩個欄位選取器時,所選欄位的值會以「/」分隔符顯示。對於所選欄位的標籤也是如此。預先定義的項目可用來定義更複雜的轉譯作業。圖片模組欄位會以完整標籤顯示,且不會顯示標籤。

以下的程式碼範例顯示,如何覆寫票證的詳細資料區段,以顯示包含其標籤的單一 linksModuleData 欄位:

Python

//... rest of class
   "linksModuleData": {
        "uris": [
            {
                "uri": "http://maps.google.com/",
                "description": "Nearby Locations",
                "id":"mylink"
            }
        ]
    },
   "classTemplateInfo": {
        "detailsTemplateOverride": {
            "detailsItemInfos": [
                {
                    "item":{
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.linksModuleData.uris['mylink']"
                            }]
                        }
                    }
                }
            ]
        }
     }
//... rest of class
    

Java

 //... rest of class
  .setLinksModuleData((new ArrayList<LinksModuleData>() {
    {
      add((new LinksModuleData()).setDescription("Nearby Locations")
        .setUri("http://maps.google.com/")
        .setId("mylink"));
      }))
      .setClassTemplateInfo((new ClassTemplateInfo())
        .setDetailsTemplateOverride((new DetailsTemplateOverride())
          .setDetailsItemInfos(new ArrayList<DetailsItemInfo>(){
            {
              add((new DetailsItemInfo())
                .setItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
                  {
                    add((new FieldReference()).setFieldPath("class.linksModuleData.uris['mylink']"));
                  }
                }))));
              }
            }))
//... rest of class
    

PHP



    //... rest of class building
    $locationUri = new Google_Service_Walletobjects_Uri();
    $locationUri->setUri("http://maps.google.com/");
    $locationUri->setDescription("Nearby Locations");
    $locationUri->setId("mylink");

    $linksModuleData = new Google_Service_Walletobjects_LinksModuleData();
    $linksModuleData->setUris(array($locationUri));

    $detailItemFieldReference = new Google_Service_Walletobjects_FieldReference();
    $detailItemFieldReference->setFieldPath("class.linksModuleData.uris['mylink']");
    $detailItemFieldSelector = new Google_Service_Walletobjects_FieldSelector();
    $detailItemFieldSelector->setFields(array($detailItemFieldReference));

    $detailItem = new Google_Service_Walletobjects_TemplateItem();
    $detailItem->setFirstValue($detailItemFieldSelector);

    $detailsItemInfo = new Google_Service_Walletobjects_DetailsItemInfo();
    $detailsItemInfo->setItem($detailItem);

    $cardDetailsTemplateOverride = new Google_Service_Walletobjects_DetailsTemplateOverride();
    $cardDetailsTemplateOverride->setDetailsItemInfos(array($detailsItemInfo));

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setDetailsTemplateOverride($cardDetailsTemplateOverride);

    $payload->setClassTemplateInfo($classTemplateInfo);
    $payload->setLinksModuleData($linksModuleData);
    //... rest of class
    

程式碼會使用以下詳細資料區段格式建立票證:

詳細資料覆寫的範例。

如果項目空白,就不會顯示。詳情請參閱欄位參照一節。

如果您未覆寫詳細資料範本,系統會顯示預設順序的參照欄位清單。詳情請參閱預設範本

清單範本

列出範本元素
  1. class.classTemplateInfo.listTemplateOverride
      .firstRowOption.fieldOption.fields[]
  2. class.classTemplateInfo.listTemplateOverride
      .secondRowOption.fields[]
  3. class.programLogo
  4. class.hexBackgroundColor

清單範本區段可用來選取要在 Google 錢包應用程式的「票證」檢視畫面中顯示哪些欄位。在清單中,票證會以標誌、背景顏色和三列的形式顯示。

以下程式碼範例顯示如何覆寫票證的清單範本,以在清單範本的第一列中顯示單一票證的物件到期日欄位:

Python


#... rest of class definition
   "classTemplateInfo": {
        "listTemplateOverride":{
            "firstRowOption": {
                "fieldOption":{
                    "fields": [{
                        "fieldPath": "object.validTimeInterval.end"
                    }]
                }
            }
        }
   }
}
    

Java

//... rest of class
  .setClassTemplateInfo((new ClassTemplateInfo())
    .setListTemplateOverride((new ListTemplateOverride())
      .setFirstRowOption((new FirstRowOption())
        .setFieldOption((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
          {
            add((new FieldReference()).setFieldPath("object.validTimeInterval.end"));
          }
        }))))
//... rest of class
    

PHP

    //... rest of class
    $fieldReference = new Google_Service_Walletobjects_FieldReference();
    $fieldReference->setFieldPath("object.validTimeInterval.end");

    $fieldOption = new Google_Service_Walletobjects_FieldSelector();
    $fieldOption->setFields(array($fieldReference));

    $firstRowOption = new Google_Service_Walletobjects_FirstRowOption();
    $firstRowOption->setFieldOption($fieldOption);

    $listTemplateOverride = new Google_Service_Walletobjects_ListTemplateOverride();
    $listTemplateOverride->setFirstRowOption($firstRowOption);

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setListTemplateOverride($listTemplateOverride);

    $payload->setClassTemplateInfo($classTemplateInfo);
    //... rest of class
    

程式碼會使用下列清單範本建立票證:

清單覆寫的範例。

您可以使用欄位選取器定義這三個資料列。這些欄位不會顯示任何標籤。

標籤

所有結構化資料欄位都有 Google 提供的標籤。Google 負責為這些標籤提供所有支援語言的翻譯。

您可以使用其中一個 class.custom<name_of_the_field>Label 欄位自訂部分標籤。建立標籤時,您必須負責為您要支援的所有語言提供該標籤的翻譯。

欄位參照

欄位參照可用於範本的不同部分,格式為 class.classTemplateInfo.*.fields[]。欄位參照包含結構化資料欄位、文字模組欄位、連結模組欄位、圖片模組欄位或訊息的路徑清單。

並非所有欄位參照都允許所有類型的路徑。例如,某些欄位參照只允許文字型結構化資料欄位或文字模組欄位的路徑。文字型結構化欄位是類型字串、本地化字串、日期或金錢的結構化資料欄位。

這份清單可用來實作備用邏輯。也就是說,如果清單中的第一個路徑解析為空白欄位,系統就會評估下一個路徑。備用邏輯主要用於文字型結構化資料欄位或文字模組欄位。請勿在同一個清單中混用不同類型的欄位。使用備用邏輯時請特別小心,並只在您預期物件中存在相同物件 (但其他物件除外) 的情況一致。在多數情況下,針對個別用途建立個別類別較為容易。

如果欄位參照清單中的所有路徑均解析為空白欄位,則使用欄位參照的項目將不會顯示。如果您希望系統一律顯示使用該欄位參照的項目,請確認至少一個路徑並非空白。我們建議您將欄位設定為代表特殊字元 (例如「-」) 代表空值,即使某些欄位只允許使用空格的字串。

如要參照清單中的欄位,您可以使用清單中的欄位索引,而在大部分情況下,您也可以使用參照 ID。可依 ID 參照的清單項目有 .id 欄位。建議您盡可能使用參照 ID,而非清單中的欄位索引。

以下範例說明如何參照清單中的欄位。

  • object.imageModulesData[0].id = my-first-id
  • object.imageModulesData[1].id = my-second-id
  • class.detailsTemplateOverride.detailsItemInfos[0].item.firstValue.fields[0].fieldPath = object.imageModulesData[‘my-second-id’]
  • class.detailsTemplateOverride.detailsItemInfos[1].item.firstValue.fields[0].fieldPath = object.imageModulesData[0]

在這種情況下,票證詳細資料部分中的第一個項目是物件中宣告的第二張圖片。而票證詳細資料部分中的第二個項目則是物件中宣告的第一個圖片。

預設範本

Android

預設範本元素
  1. class.programLogo
  2. class.localizedIssuerName
    class.issuerName
  3. class.localizedProgramName
    class.programName
  4. POINTS
    object.loyaltyPoints.localizedLabel
    object.loyaltyPoints.label
  5. object.loyaltyPoints.balance
  6. 獎勵
    object.secondaryLoyaltyPoints.localizedLabel
    object.secondaryLoyaltyPoints.label
  7. object.secondaryLoyaltyPoints.balance
  8. object.barcode.typeobject.barcode.value
    object.accountId
  9. object.barcode.alternateText
    object.accountId
    object.barcode.value
  10. object.heroImage
    class.heroImage
  11. class.hexBackgroundColor
  12. 成員名稱
    class.localizedAccountNameLabel
    class.accountNameLabel
  13. object.accountName
  14. 成員 ID
    class.localizedAccountIdLabel
    class.accountIdLabel
  15. object.accountId
  16. 獎勵
    class.localizedRewardsTierLabel
    class.rewardsTierLabel
  17. class.localizedRewardsTier
    class.rewardsTier
  18. 次要獎勵類型
    class.localizedSecondaryRewardsTierLabel
    class.secondaryRewardsTierLabel
  19. class.localizedSecondaryRewardsTier
    class.secondaryRewardsTier
  20. class.imageModulesData[0].mainImage
  21. object.imageModulesData[0].mainImage
  22. class.messages[].header
  23. class.messages[].body
  24. object.messages[].header
  25. object.messages[].body
  26. class.textModulesData[0..9].header
  27. class.textModulesData[0..9].body
  28. object.textModulesData[0..9].header
  29. object.textModulesData[0..9].body
  30. class.linksModuleData.uris[].description
  31. object.linksModuleData.uris[].description
  32. class.homepageUri

網站

預設範本元素
  1. class.programLogo
  2. class.localizedIssuerName
    class.issuerName
  3. class.localizedProgramName
    class.programName
  4. POINTS
    object.loyaltyPoints.localizedLabel
    object.loyaltyPoints.label
  5. object.loyaltyPoints.balance
  6. 獎勵
    object.secondaryLoyaltyPoints.localizedLabel
    object.secondaryLoyaltyPoints.label
  7. object.secondaryLoyaltyPoints.balance
  8. object.barcode.typeobject.barcode.value
    object.accountId
  9. object.barcode.alternateText
    object.accountId
    object.barcode.value
  10. object.heroImage
    class.heroImage
  11. class.hexBackgroundColor
  12. 成員名稱
    class.localizedAccountNameLabel
    class.accountNameLabel
  13. object.accountName
  14. 成員 ID
    class.localizedAccountIdLabel
    class.accountIdLabel
  15. object.accountId
  16. 獎勵
    class.localizedRewardsTierLabel
    class.rewardsTierLabel
  17. class.localizedRewardsTier
    class.rewardsTier
  18. 次要獎勵類型
    class.localizedSecondaryRewardsTierLabel
    class.secondaryRewardsTierLabel
  19. class.localizedSecondaryRewardsTier
    class.secondaryRewardsTier
  20. class.imageModulesData[0].mainImage
  21. object.imageModulesData[0].mainImage
  22. class.messages[].header
  23. class.messages[].body
  24. object.messages[].header
  25. object.messages[].body
  26. class.textModulesData[0..9].header
  27. class.textModulesData[0..9].body
  28. object.textModulesData[0..9].header
  29. object.textModulesData[0..9].body
  30. class.linksModuleData.uris[].description
  31. object.linksModuleData.uris[].description
  32. class.homepageUri

針對圖片模組欄位,我們僅會顯示類別中的一個圖片模組欄位,以及物件中的一個圖片模組欄位。如果您在任一層級需要多個圖片模組欄位,請覆寫預設範本。

以文字模組欄位來說,我們最多只會顯示該類別中的 10 個文字模組欄位,以及該物件中的 10 個文字模組欄位。欄位會按照在陣列中定義的順序顯示。如果您在任一層級需要超過 10 個文字模組欄位,請覆寫預設範本。

以訊息而言,系統最多只會顯示類別中的 10 則訊息,以及物件中的 10 則訊息。我們無法保證訊息的順序。如果您在任一層級需要超過 10 則訊息,或是為任何訂單提供保證,請覆寫預設範本。

連結模組欄位沒有可定義的 URI 數量限制。URI 會依各個等級 (類別或物件) 的下列順序進行分類:

  1. 地圖座標
  2. 電話號碼
  3. 電子郵件地址
  4. 一般網頁

URI 會根據各個群組在 URI 中的定義順序顯示。 如果您需要不同的排序方式,請覆寫預設範本。

預設清單範本元素
  1. class.localizedIssuerName
    class.issuerName
  2. class.localizedProgramName
    class.programName
  3. class.programLogo
  4. class.hexBackgroundColor