票證範本

選取下列其中一個票證類別,即可進一步瞭解該票證類別的使用方式。


大眾運輸票證支援範本顯示功能。如果您未定義任何範本,系統會使用預設範本。

範本

您必須在類別層級定義票證範本,以便用來顯示所有與該類別相關聯的物件。範本會定義要在票證的不同區段中顯示哪些欄位。

範本可分為下列區段:

卡片標題

卡片標題區段

卡片標題區段會顯示大眾運輸業者的標誌和名稱,並顯示旅程摘要。這三項元素均為必填資訊,填入這些元素時使用的欄位參照和元素的位置都無法變更。

不過,顯示邏輯允許在頂端列進行一些彈性調整。在單一車程的旅程中,呈現旅程摘要的票證頂端列是由下列 TransitObject 的欄位控制:

  • object.tripType
  • object.ticketLeg.originName
  • object.ticketLeg.destinationName
  • object.ticketLeg.originStationCode
  • object.ticketLeg.destinationStationCode

票證的顯示方式取決於哪些欄位並非空白。票證可以有下列顯示方式:

  • 僅顯示出發地名稱:出發地名稱是唯一顯示的資訊。如果票證包含某個區域,而非特定旅程,這種顯示方式會格外實用。
  • 出發地與目的地:出發地顯示於左側,而目的地顯示於右側。兩者之間的符號取決於行程類型。出發地與目的地會以下列其中一種方式顯示:
    • 名稱與站點代碼:系統會顯示站點代碼,並在上方以較小的文字顯示名稱。
    • 僅顯示名稱:系統會顯示名稱。
    • 僅顯示站點代碼:系統會顯示站點代碼。

多段車程 TransitObject 物件的運作方式幾乎相同。在這種情況下,請勿使用 object.ticketLeg。你必須改用 object.ticketLegs[] 清單,並定義出發地與目的地。在每段車程中必須一致地使用名稱或站點代碼,或同時使用這兩者。顯示的出發地是陣列中第一個元素的出發地,而顯示的目的地是陣列中最後一個元素的目的地。

票證的背景色彩並非必填欄位,且可在類別層級和物件層級定義。物件欄位有較高的優先順序,而且可用來覆寫類別欄位。

卡片範本

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

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

  • oneItem,可接受一個項目:
    • item
  • twoItems,可接受兩個項目:
    • startItem
    • endItem
  • threeItems,可接受三個項目:
    • startItem
    • midItem
    • 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 清單中包含多個列,主頁橫幅會顯示在第一列之後。如果只有一列,主頁橫幅就會顯示在這個列上方。

卡片條碼

卡片條碼元素

卡片條碼區段是用來在條碼上方和下方顯示額外的文字或圖片。這個區段的所有欄位皆非必填。

我們總共提供三個欄位選取器供您定義條碼上下方的欄位。這些選取器分別可在條碼上方定義兩個並排欄位,並在條碼下方定義一個欄位。這些欄位可以是結構化文字資料欄位、文字模組欄位或圖片模組欄位,但不會顯示任何標籤。如要使用圖片,請遵守品牌規範

條碼是由類型和值定義。如需支援的條碼類型清單,請參閱參考資料。另外請注意,文字可直接顯示在條碼下方。這段文字是為了方便掃描條碼,但也可用於其他用途。

以下的程式碼範例顯示要如何覆寫票證的條碼區段,才能在條碼上方顯示圖片:

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

程式碼會建立票證,並在其中包含採用以下格式的條碼區段:

覆寫卡片條碼的範例。

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

詳細資料範本

詳細資料範本區段

詳細資料範本區段為 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
    

程式碼會建立票證,並在其中包含採用以下格式的詳細資料區段:

覆寫詳細資料的範例。

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

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

如果旅程中包含多段車程,區段頂端會顯示簡要行程資訊,這項資訊無法移動。如果旅程僅含一段車程,你可以設定 class.enableSingleLegItinerary 來顯示簡要行程資訊。

多段車程的行程

清單範本

清單範本區段

清單範本區段是用來選取要在 Google Pay 應用程式的「票證」檢視畫面中顯示哪個欄位。清單中會以標誌、背景色彩和三個列來顯示票證。

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

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
    

程式碼會建立票證,並在其中包含採用以下樣式的清單範本:

覆寫清單的範例。

第一列可透過欄位選取器定義,或者顯示旅程摘要。摘要格式可為以下任何一種:

  • originAndDestinationCodes
  • originAndDestinationNames
  • originName

第二和第三列只能透過欄位選取器定義。這些欄位都不會顯示任何標籤。如果是群組票證,第二列一律會顯示出發日期,而第三列一律顯示群組的票證數量。

標籤

所有結構化資料欄位都有 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]

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

預設範本

預設範本區段

以圖片模組欄位來說,系統只會顯示該類別中的一個圖片模組欄位,以及該物件中的一個圖片模組欄位。如果您在任一層級需要多個圖片模組欄位,請覆寫預設範本。

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

以訊息而言,我們最多只會顯示該類別中的 10 則訊息,以及該物件中的 10 則訊息。不過,我們無法保證訊息的顯示順序。如果您在任一層級需要超過 10 則訊息,或是必須確定訊息的顯示順序,請覆寫預設範本。

以連結模組欄位而言,您可以定義數量不限的 URI。系統在顯示各個層級 (類別或物件) 的 URI 時,會依據下列順序進行分組:

  1. 地圖座標
  2. 電話號碼
  3. 電子郵件地址
  4. 網頁
系統會按照 URI 在陣列中的定義順序顯示各個群組的 URI。如果所需順序不同,請覆寫預設範本。

預設清單範本區段