ポイント テンプレート

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

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

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

テンプレートの定義

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

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

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 つの要素が必要ですが、最大 2 つの要素を使用することをおすすめします。各要素は、次のいずれかのタイプでなければなりません。

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

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

次のコードサンプルは、カード テンプレートのカード行セクションをオーバーライドして 2 行を指定する方法を示しています。各行には、6 つのクラスレベルの textModuleData カスタム フィールドとそのヘッダーをラベルとして参照する 3 つの項目があります。

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

カード バーコード セクションは、バーコードの上下にテキストや画像を追加するために使用されます。このセクションには何も入力する必要はありません。

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

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

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

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