ポイント テンプレート

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

次のツールを使用してポイントパスをカスタマイズし、以下のコード スニペットを参照してください。

ポイントパスはテンプレート レンダリングをサポートしています。テンプレートが定義されていない場合は、デフォルトのテンプレートが使用されます。

テンプレートの定義

パス テンプレートはクラスレベルで定義され、クラスに関連付けられているオブジェクトを表示するために使用されます。テンプレートでは、パスのさまざまなセクションに表示するフィールドを定義します。

テンプレートは次のセクションに分かれています。

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[] リストで、オブジェクトの数を定義する行数を指定できます。このリストには少なくとも 1 つの要素が必要ですが、Google では最大で 2 つの要素を使用することが推奨されています。各要素は、次のいずれかのタイプである必要があります。

  • oneItem。1 つのアイテムを受け入れます。
    • item
  • twoItems。次の 2 つのアイテムを受け入れます。
    • startItem
    • endItem
  • threeItems。3 つのアイテムを受け入れます。
    • startItem
    • middleItem
    • endItem

各項目は、単一のフィールド セレクタ(.firstValue)、2 つのフィールド セレクタ(.firstValue.secondValue)、または事前定義された項目(.predefinedItem)として定義できます。選択したフィールドの値とそれぞれのラベルの両方が表示されます。2 つのフィールド セレクタを定義すると、選択したフィールドの値は「/」区切りで表示されます。選択したフィールドのラベルについても同様です。事前定義されたアイテムは、より複雑なレンダリングの定義に使用されます。

次のコードサンプルは、カード テンプレート カードの行セクションをオーバーライドして 2 行を指定する方法を示しています。各行には 3 つの項目があり、それぞれが 6 つのクラスレベルの 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 リスト内に複数の行が存在する場合、あるいはヒーロー行が 1 つしかない場合は行の上に表示できます。

カードのバーコード

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

カードのバーコード セクションは、バーコードの上下にテキストや画像を表示するために使用されます。このセクションのフィールドは必須ではありません。

フィールド セレクタは 3 つあり、バーコードの上と下に 2 つの横並びのフィールドを定義する際に使用できます。これらはラベルなしで表示され、テキストベースの構造化データ フィールド、テキスト モジュール フィールド、画像モジュール フィールドのいずれかになります。画像を使用する場合は、ブランドの取り扱いガイドラインを遵守する必要があります。

バーコードはタイプと値で定義します。サポートされているバーコード タイプのリストについては、リファレンスをご覧ください。また、バーコードのすぐ下にテキストを表示することもできます。このテキストを使用すると、バーコードをスキャンしやすくなります。

次のコードサンプルは、パスのバーコード セクションをオーバーライドして、バーコードの上に画像を表示する方法を示しています。

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)、2 つのフィールド セレクタ(.firstValue.secondValue)、または事前定義された項目(.predefinedItem)のいずれかとして定義できます。選択したフィールドの値とそれぞれのラベルが表示されます。2 つのフィールド セレクタを定義すると、選択したフィールドの値は「/」区切りで表示されます。選択したフィールドのラベルについても同様です。事前定義されたアイテムは、より複雑なレンダリングの定義に使用されます。画像モジュール フィールドは、ラベルなしで全幅で表示されます。

次のコードサンプルは、パスの詳細セクションをオーバーライドして、ラベル付きの単一の 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 ウォレット アプリの [パス] ビューに表示するフィールドを選択するために使用されます。パスは、ロゴ、背景色、3 行とともにリスト内で表示されます。

次のコードサンプルは、パスのリスト テンプレートをオーバーライドして、リスト テンプレートの最初の行に単一パスのオブジェクト有効期限フィールドを表示する方法を示しています。

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
    

コードは、次のリスト テンプレートの表現を使用してパスを作成します。

リストのオーバーライドの例。

3 行はフィールド セレクタで定義できます。フィールドはラベルなしで表示されます。

ラベル

すべての構造化データ フィールドには、Google 提供のラベルが付けられています。Google は、サポートされているすべての言語で各ラベルを翻訳する責任を負います。

これらのラベルの一部は、class.custom<name_of_the_field>Label フィールドのいずれかを使用してカスタマイズできます。ラベルをカスタマイズする際は、サポートするすべての言語でそのラベルの翻訳を行う必要があります。

フィールド参照

フィールド参照は、テンプレートのさまざまな部分で、class.classTemplateInfo.*.fields[] という形式で使用されます。フィールド参照には、構造化データ フィールド、テキスト モジュール フィールド、リンク モジュール フィールド、画像モジュール フィールド、またはメッセージへのパスのリストが含まれています。

すべてのフィールド参照ですべてのタイプのパスが許可されているわけではありません。たとえば、一部のフィールド参照では、テキストベースの構造化データ フィールドまたはテキスト モジュール フィールドへのパスのみが許可されます。 テキストベースの構造化フィールドは、文字列、ローカライズされた文字列、日付、または資金の構造化データ フィールドです。

このリストを使用して、フォールバック ロジックを実装できます。これは、リストの最初のパスが空のフィールドに解決された場合に、次のパスが評価されることを意味します。フォールバック ロジックは主にテキストベースの構造化データ フィールドまたはテキスト モジュール フィールドを対象にしています。同じリストに異なる種類のフィールドを混在させないでください。フォールバック ロジックは、特定のオブジェクトに存在し、他のオブジェクトには存在しないフィールドの一貫したパターンが想定される場合にのみ、慎重に使用してください。多くの場合、ユースケースごとに個別のクラスを作成するほうが簡単です。

フィールド参照リスト内のすべてのパスが空のフィールドに解決される場合、そのフィールド参照を使用するアイテムは表示されません。フィールド参照を使用するアイテムが常に表示されるようにするには、少なくとも 1 つのパスが空でないことを確認します。フィールドによっては、スペースのみの文字列を許可している場合でも、null 値を表すために特殊文字(「-」など)を設定することをおすすめします。

リストに含まれるフィールドを参照するには、リスト内のフィールドのインデックスを使用するか、ほとんどの場合、参照 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]

この場合、パスの詳細セクションの最初の項目は、オブジェクト内で宣言されている 2 番目の画像です。一方、パスの詳細セクションの 2 番目の項目は、オブジェクト内で最初に宣言された画像です。

デフォルト テンプレート

Android

デフォルトのテンプレート要素
  1. class.programLogo
  2. class.localizedIssuerName
    または class.issuerName
  3. class.localizedProgramName
    または class.programName
  4. ポイント数
    または 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. 第 2 報酬レベル
    または 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. ポイント数
    または 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. 第 2 報酬レベル
    または 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 つの画像モジュール フィールドと 1 つの画像モジュール フィールドだけが表示されます。いずれかのレベルで複数の画像モジュール フィールドが必要な場合は、デフォルト テンプレートをオーバーライドします。

テキスト モジュール フィールドの場合、クラスのテキスト モジュール フィールドが最大 10 個、オブジェクトのテキスト モジュール フィールドが最大 10 個表示されます。フィールドは、配列で定義されているのと同じ順序で表示されます。いずれかのレベルで 10 個を超えるテキスト モジュール フィールドが必要な場合は、デフォルトのテンプレートをオーバーライドします。

メッセージの場合、クラスからのメッセージを最大 10 個、オブジェクトからのメッセージを最大 10 個だけ表示します。メッセージの順序は保証されません。いずれかのレベルで 10 件を超えるメッセージが必要な場合、または注文が保証されている場合は、デフォルト テンプレートをオーバーライドします。

リンク モジュール フィールドの場合、定義できる URI の数に制限はありません。URI は、レベル(クラスまたはオブジェクト)ごとに次の順序でグループ化されて表示されます。

  1. 地図の座標
  2. 電話番号
  3. Email addresses
  4. ウェブページ

URI は、グループごとに、配列で定義されているのと同じ順序で表示されます。別の順序が必要な場合は、デフォルト テンプレートをオーバーライドします。

デフォルトのリスト テンプレート要素
  1. class.localizedIssuerName
    または class.issuerName
  2. class.localizedProgramName
    または class.programName
  3. class.programLogo
  4. class.hexBackgroundColor