特典テンプレート

クーポンパスはテンプレートの表示に対応しています。テンプレートが定義されていない場合は、デフォルトのテンプレートが使用されます。

テンプレートの定義

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

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

Android

テンプレートの概要

ウェブ

テンプレートの概要

カードタイトル

Android

カードタイトルの要素
  1. class.titleImage
  2. class.localizedIssuerName
    または class.issuerName
  3. class.localizedTitle
    または class.title
  4. class.hexBackgroundColor

ウェブ

カードタイトルの要素
  1. class.titleImage
  2. class.localizedIssuerName
    または class.issuerName
  3. class.localizedTitle
    または class.title
  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 行を指定する方法を示しています。各行には 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
  4. object.barcode.alternateText
    または 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
  4. object.barcode.alternateText
    または 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.titleImage
  4. class.hexBackgroundColor

リスト テンプレート セクションは、Google ウォレット アプリの [パス] ビューに表示するフィールドを選択するために使用されます。パスは、ロゴ、背景色、3 行でリストに表示されます。

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

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.titleImage
  2. class.localizedIssuerName
    または class.issuerName
  3. class.localizedTitle
    または class.title
  4. object.barcode.typeobject.barcode.value
  5. object.barcode.alternateText
    または object.barcode.value
  6. object.heroImage
    または class.heroImage
  7. class.hexBackgroundColor
  8. 有効期限
  9. object.validTimeInterval.end
  10. FROM
  11. class.localizedProvider
    または class.provider
  12. class.imageModulesData[0].mainImage
  13. object.imageModulesData[0].mainImage
  14. 詳細
  15. class.localizedDetails
    または class.details
  16. 免責条項
  17. class.localizedFinePrint
    または class.finePrint
  18. class.messages[].header
  19. class.messages[].body
  20. object.messages[].header
  21. object.messages[].body
  22. class.textModulesData[0..9].header
  23. class.textModulesData[0..9].body
  24. object.textModulesData[0..9].header
  25. object.textModulesData[0..9].body
  26. class.linksModuleData.uris[].description
  27. object.linksModuleData.uris[].description
  28. class.homepageUri
  29. class.helpUri

ウェブ

デフォルトのテンプレート要素
  1. class.titleImage
  2. class.localizedIssuerName
    または class.issuerName
  3. class.localizedTitle
    または class.title
  4. object.barcode.typeobject.barcode.value
  5. object.barcode.alternateText
    または object.barcode.value
  6. object.heroImage
    または class.heroImage
  7. class.hexBackgroundColor
  8. 有効期限
  9. object.validTimeInterval.end
  10. FROM
  11. class.localizedProvider
    または class.provider
  12. class.imageModulesData[0].mainImage
  13. object.imageModulesData[0].mainImage
  14. 詳細
  15. class.localizedDetails
    または class.details
  16. 免責条項
  17. class.localizedFinePrint
    または class.finePrint
  18. class.messages[].header
  19. class.messages[].body
  20. object.messages[].header
  21. object.messages[].body
  22. class.textModulesData[0..9].header
  23. class.textModulesData[0..9].body
  24. object.textModulesData[0..9].header
  25. object.textModulesData[0..9].body
  26. class.linksModuleData.uris[].description
  27. object.linksModuleData.uris[].description
  28. class.homepageUri
  29. class.helpUri

画像モジュールのフィールドでは、クラスからの画像モジュール フィールドが 1 つだけ、オブジェクトの画像モジュール フィールドが 1 つだけ表示されます。いずれかのレベルで複数の画像モジュール フィールドが必要な場合は、デフォルト テンプレートをオーバーライドします。

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

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

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

  1. 地図の座標
  2. 電話番号
  3. メールアドレス
  4. ウェブページ

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

デフォルトのリスト テンプレート要素
  1. class.localizedIssuerName
    または class.issuerName
  2. class.localizedShortTitle
    または class.shortTitle
    または class.localizedTitle
    または class.title
  3. class.titleImage
  4. class.hexBackgroundColor