Treuepunktevorlage

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Verwenden Sie das folgende Tool, um Ihre Kundenkarte mithilfe der folgenden Code-Snippets anzupassen.

Das Treuepunkteprogramm unterstützt das Rendern von Vorlagen. Wenn keine Vorlage definiert ist, wird die Standardvorlage verwendet.

Vorlagendefinition

Eine Karten-/Ticketvorlage wird auf Klassenebene definiert und verwendet, um alle Objekte anzuzeigen, die der Klasse zugeordnet sind. Die Vorlage definiert, welche Felder in verschiedenen Bereichen der Karte bzw. des Tickets angezeigt werden.

Die Vorlage ist in folgende Abschnitte unterteilt:

Android

Vorlagenübersicht

Web

Vorlagenübersicht

Titel der Karte

Android

Elemente für Kartentitel
  1. class.programLogo
  2. class.localizedIssuerName
    oder class.issuerName
  3. class.localizedProgramName
    oder class.programName
  4. class.hexBackgroundColor

Web

Elemente für Kartentitel
  1. class.programLogo
  2. class.localizedIssuerName
    oder class.issuerName
  3. class.localizedProgramName
    oder class.programName
  4. class.hexBackgroundColor

Im Bereich mit dem Kartentitel werden das Logo, der Name des Ausstellers und der Programmtitel angezeigt. Weder die Feldverweise, mit denen sie ausgefüllt werden, noch ihre Position können geändert werden.

Kartenvorlage

Android

Vorlagenübersicht

Web

Vorlagenübersicht

Im Bereich „Kartenvorlage“ werden zusätzliche Zeilen angezeigt. Diese Zeilen können textbasierte strukturierte Datenfelder oder Textmodulfelder enthalten.

Sie können die Anzahl der Zeilen angeben, die die Anzahl der Objekte in der class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[]-Liste definieren. Die Liste erfordert mindestens ein Element. Wir empfehlen, höchstens zwei Elemente zu verwenden. Jedes Element muss einen der folgenden Typen haben:

  • oneItem, die einen Artikel akzeptiert:
    • item
  • twoItems, die zwei Elemente akzeptiert:
    • startItem
    • endItem
  • threeItems, die drei Elemente akzeptiert:
    • startItem
    • middleItem
    • endItem

Jedes Element kann entweder als einzelner Feldselektor (.firstValue), als zwei Feldselektoren (.firstValue und .secondValue) oder als vordefiniertes Element (.predefinedItem) definiert werden. Es werden sowohl die Werte des ausgewählten Felds als auch ihre jeweiligen Labels angezeigt. Wenn Sie zwei Feldselektoren definieren, werden die Werte der ausgewählten Felder mit einem Trennzeichen „/“ angezeigt. Dasselbe gilt für die Labels der ausgewählten Felder. Vordefinierte Elemente werden verwendet, um ein komplexeres Rendering zu definieren.

Das folgende Codebeispiel zeigt, wie Sie die Abschnitte der Kartenvorlagenkarte überschreiben und zwei Zeilen angeben. Jede Zeile enthält drei Elemente, die jeweils auf sechs benutzerdefinierte textModuleData-Felder auf Klassenebene und ihre Header als Labels verweisen:

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

Mit dem Code wird eine Karte bzw. ein Ticket in folgendem Format der Codevorlage erstellt:

Beispiel für die Überschreibung eines Labels

Leere Elemente werden nicht angezeigt. Weitere Informationen finden Sie unter Feldreferenzen. Wenn alle Elemente in einer Zeile leer sind, wird die Zeile nicht angezeigt. Wenn einige, aber nicht alle Elemente in einer Zeile leer sind, werden die nicht leeren Elemente neu angeordnet und als Zeile mit weniger Elementen angezeigt.

Wenn Sie die Kartenvorlage nicht überschreiben, werden die Standardanzahl von Zeilen, die Standardanzahl von Elementen und die Standardfeldreferenzen verwendet. Weitere Informationen finden Sie unter Standardvorlage.

Nachdem Sie ein Hero-Image definiert haben, kann es nach der ersten Zeile angezeigt werden, wenn in der cardRowTemplateInfos-Liste mehrere Zeilen vorhanden sind, oder wenn es nur eine Zeile über der Zeile gibt.

Barcode der Karte

Android

Elemente des Karten-Barcodes
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type und object.barcode.value
    oder object.accountId
  4. object.barcode.alternateText
    oder object.accountId
    oder object.barcode.value
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail
  6. object.heroImage
    oder class.heroImage

Web

Elemente des Karten-Barcodes
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type und object.barcode.value
    oder object.accountId
  4. object.barcode.alternateText
    oder object.accountId
    oder object.barcode.value
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

Der Bereich mit dem Karten-Barcode wird verwendet, um zusätzlichen Text oder Bilder über und unter dem Barcode einzublenden. Keines der Felder in diesem Abschnitt ist erforderlich.

Es gibt drei Feldselektoren, mit denen Sie zwei nebeneinanderliegende Felder über und unter dem Barcode definieren können. Diese werden ohne Label angezeigt und können entweder textbasierte Felder für strukturierte Daten, Textmodule oder Bildmodulfelder sein. Wenn Sie Bilder verwenden, müssen diese den Markenrichtlinien entsprechen.

Der Barcode wird durch einen Typ und einen Wert definiert. Eine Liste der unterstützten Barcodetypen finden Sie unter Referenz. Außerdem kann direkt unter dem Barcode ein Text eingeblendet werden. Dieser Text erleichtert unter anderem das Scannen von Barcodes.

Das folgende Codebeispiel zeigt, wie Sie den Barcodeabschnitt einer Karte bzw. eines Tickets überschreiben, um ein Bild über dem Barcode anzuzeigen:

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

Mit dem Code wird eine Karte bzw. ein Ticket in folgendem Format des Barcodebereichs erstellt:

Beispiel für das Überschreiben einer Kartenbarcode

Wenn Sie den Barcodebereich nicht überschreiben, werden die Standardfelder für den Barcode verwendet. Weitere Informationen finden Sie unter Standardvorlage.

Vorlage für Details

Android

Vorlagendetails
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[3].item
  • ...

Web

Vorlagendetails
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[3].item
  • ...

Der Abschnitt mit der Vorlage für Details ist eine Liste der Elemente class.classTemplateInfo.detailsTemplateOverride.detailsItemInfos[]. Die Elemente können alle Arten strukturierter Datenfelder, Textfelderfelder, Linkmodulfelder, Bildmodulfelder oder Nachrichten enthalten.

Jedes Element kann als einzelner Feldselektor (.firstValue), als zwei Feldselektoren (.firstValue und .secondValue) oder als vordefiniertes Element (.predefinedItem) definiert werden. Es werden sowohl die Werte des ausgewählten Felds als auch ihre jeweiligen Labels angezeigt. Wenn Sie zwei Feldselektoren definieren, werden die Werte der ausgewählten Felder mit einem Trennzeichen „/“ angezeigt. Dasselbe gilt für die Labels der ausgewählten Felder. Vordefinierte Elemente werden verwendet, um ein komplexeres Rendering zu definieren. Bildmodulfelder werden ohne Label in voller Breite gerendert.

Das folgende Codebeispiel zeigt, wie Sie den Detailbereich der Karte / des Tickets überschreiben, um ein einzelnes linksModuleData-Feld mit seinem Label anzuzeigen:

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
    

Mit dem Code wird eine Karte bzw. ein Ticket in folgendem Format erstellt:

Beispiel für eine Überschreibung von Details.

Leere Elemente werden nicht angezeigt. Weitere Informationen finden Sie unter Feldreferenzen.

Wenn Sie die Detailsvorlage nicht überschreiben, wird die Standardliste der Referenzfelder in der Standardreihenfolge angezeigt. Weitere Informationen finden Sie unter Standardvorlage.

Listenvorlage

Vorlagenelemente auflisten
  1. class.classTemplateInfo.listTemplateOverride
      .firstRowOption.fieldOption.fields[]
  2. class.classTemplateInfo.listTemplateOverride
      .secondRowOption.fields[]
  3. class.programLogo
  4. class.hexBackgroundColor

Im Bereich der Listenvorlage wählen Sie aus, welches Feld in der Ansicht „Karten/Tickets“ der Google Wallet App angezeigt werden soll. Die Karte/das Ticket wird in der Liste mit Logo, Hintergrundfarbe und drei Zeilen dargestellt.

Im folgenden Codebeispiel wird gezeigt, wie Sie die Listenvorlage einer Karte bzw. eines Tickets überschreiben, um in der ersten Zeile der Listenvorlage das Feld für das Ablaufdatum eines einzelnen Tickets anzuzeigen:

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
    

Der Code erstellt eine Karte/ein Ticket mit der folgenden Listenvorlage:

Beispiel für das Überschreiben einer Liste

Die drei Zeilen können mit einer Feldauswahl definiert werden. Die Felder werden ohne Label angezeigt.

Labels

Alle Felder für strukturierte Daten sind mit einem Label von Google versehen. Google ist für die Übersetzung dieser Labels in allen unterstützten Sprachen verantwortlich.

Einige dieser Labels können Sie mit einem der class.custom<name_of_the_field>Label-Felder anpassen. Wenn Sie ein Label anpassen, sind Sie dafür verantwortlich, Übersetzungen für das jeweilige Label in allen unterstützten Sprachen bereitzustellen.

Feldreferenzen

Feldverweise werden in verschiedenen Teilen der Vorlage im Format class.classTemplateInfo.*.fields[] verwendet. Eine Feldreferenz enthält eine Liste der Pfade zu Feldern für strukturierte Daten, Textmodule, Linkmodule, Bildmodule oder Nachrichten.

Nicht alle Pfadtypen sind in jeder Feldreferenz zulässig. Einige Feldverweise erlauben beispielsweise nur Pfade zu textbasierten strukturierten Datenfeldern oder Textmodulfeldern. Textbasierte strukturierte Felder sind strukturierte Datenfelder vom Typ „String“, „Lokalisierter String“, „Datum“ oder „Geld“.

Mit der Liste kann eine Fallback-Logik implementiert werden. Wenn also der erste Pfad in der Liste in ein leeres Feld aufgelöst wird, wird der nächste Pfad ausgewertet. Die Fallback-Logik richtet sich hauptsächlich an textbasierte Felder bzw. Felder von Textmodulen. Verschiedene Feldtypen sollten nicht in derselben Liste enthalten sein. Verwenden Sie die Fallback-Logik mit Vorsicht und nur in bestimmten Situationen, wenn Sie ein konsistentes Muster von Feldern erwarten, das in einigen Objekten vorhanden ist, in anderen aber nicht. In den meisten Fällen ist es einfacher, separate Klassen für separate Anwendungsfälle zu erstellen.

Wenn alle Pfade in einer Feldreferenzliste in leere Felder aufgelöst werden, wird das Element, das die Feldreferenz verwendet, nicht angezeigt. Wenn das Element, das den Feldverweis verwendet, immer vorhanden sein soll, muss mindestens ein Pfad leer sein. Es wird empfohlen, ein Feld auf ein Sonderzeichen wie „-“ festzulegen, um einen Nullwert darzustellen, auch wenn einige Felder Strings mit einem Leerzeichen zulassen.

Wenn Sie auf ein Feld in einer Liste verweisen möchten, können Sie den Index des Felds in der Liste oder in den meisten Fällen eine Referenz-ID verwenden. Elemente einer Liste, auf die anhand der ID verwiesen werden kann, haben das Feld .id. Wir empfehlen, eine Referenz-ID über dem Index des Felds in der Liste zu verwenden, falls verfügbar.

Hier ein Beispiel für den Verweis auf Felder in einer Liste:

  • 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]

In diesem Fall ist das erste Element im Detailbereich der Karte bzw. des Tickets das zweite im Objekt deklarierte Bild. Das zweite Element im Detailbereich der Karte bzw. des Tickets ist das erste im Objekt deklarierte Bild.

Standardvorlage

Android

Standardelemente der Vorlage
  1. class.programLogo
  2. class.localizedIssuerName
    oder class.issuerName
  3. class.localizedProgramName
    oder class.programName
  4. PUNKTE
    oder object.loyaltyPoints.localizedLabel
    oder object.loyaltyPoints.label
  5. object.loyaltyPoints.balance
  6. PRÄMIEN
    oder object.secondaryLoyaltyPoints.localizedLabel
    oder object.secondaryLoyaltyPoints.label
  7. object.secondaryLoyaltyPoints.balance
  8. object.barcode.type und object.barcode.value
    oder object.accountId
  9. object.barcode.alternateText
    oder object.accountId
    oder object.barcode.value
  10. object.heroImage
    oder class.heroImage
  11. class.hexBackgroundColor
  12. MITGLIEDERNAME
    oder class.localizedAccountNameLabel
    oder class.accountNameLabel
  13. object.accountName
  14. Mitglieds-ID
    oder class.localizedAccountIdLabel
    oder class.accountIdLabel
  15. object.accountId
  16. PRÄSENTATIONEN
    oder class.localizedRewardsTierLabel
    oder class.rewardsTierLabel
  17. class.localizedRewardsTier
    oder class.rewardsTier
  18. SEKUNDÄRE PRÄMIE 2.
    oder class.localizedSecondaryRewardsTierLabel
    oder class.secondaryRewardsTierLabel
  19. class.localizedSecondaryRewardsTier
    oder 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

Web

Standardelemente der Vorlage
  1. class.programLogo
  2. class.localizedIssuerName
    oder class.issuerName
  3. class.localizedProgramName
    oder class.programName
  4. PUNKTE
    oder object.loyaltyPoints.localizedLabel
    oder object.loyaltyPoints.label
  5. object.loyaltyPoints.balance
  6. PRÄMIEN
    oder object.secondaryLoyaltyPoints.localizedLabel
    oder object.secondaryLoyaltyPoints.label
  7. object.secondaryLoyaltyPoints.balance
  8. object.barcode.type und object.barcode.value
    oder object.accountId
  9. object.barcode.alternateText
    oder object.accountId
    oder object.barcode.value
  10. object.heroImage
    oder class.heroImage
  11. class.hexBackgroundColor
  12. MITGLIEDERNAME
    oder class.localizedAccountNameLabel
    oder class.accountNameLabel
  13. object.accountName
  14. Mitglieds-ID
    oder class.localizedAccountIdLabel
    oder class.accountIdLabel
  15. object.accountId
  16. PRÄSENTATIONEN
    oder class.localizedRewardsTierLabel
    oder class.rewardsTierLabel
  17. class.localizedRewardsTier
    oder class.rewardsTier
  18. SEKUNDÄRE PRÄMIE 2.
    oder class.localizedSecondaryRewardsTierLabel
    oder class.secondaryRewardsTierLabel
  19. class.localizedSecondaryRewardsTier
    oder 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

Für Bildmodulfelder werden jeweils nur ein Bildmodulfeld aus der Klasse und ein und nur ein Bildmodulfeld aus dem Objekt angezeigt. Wenn Sie auf einer der beiden Ebenen mehr als ein Bildmodulfeld benötigen, überschreiben Sie die Standardvorlage.

Für Textmodulfelder werden maximal zehn Textmodulfelder aus der Klasse und zehn Textmodulfelder aus dem Objekt angezeigt. Die Felder werden in derselben Reihenfolge angezeigt, in der sie im Array definiert sind. Wenn Sie mehr als 10 Textmodulfelder auf einer der beiden Ebenen benötigen, überschreiben Sie die Standardvorlage.

Für Nachrichten werden maximal zehn Nachrichten aus der Klasse und zehn Nachrichten vom Objekt angezeigt. Wir können die Reihenfolge der Nachrichten nicht garantieren. Wenn Sie mehr als 10 Nachrichten auf einer der Ebenen oder eine Garantie für alle Bestellungen benötigen, überschreiben Sie die Standardvorlage.

Im Feld „Linkmodul“ gibt es keine Begrenzung für die Anzahl der URIs, die Sie definieren können. URIs werden für jede Ebene (Klasse oder Objekt) in der folgenden Reihenfolge gruppiert angezeigt:

  1. Kartenkoordinaten
  2. Telefonnummern
  3. E-Mail-Adressen
  4. Webseiten,

Für jede Gruppe werden URIs in derselben Reihenfolge angezeigt, in der sie im Array definiert sind. Wenn Sie eine andere Reihenfolge benötigen, überschreiben Sie die Standardvorlage.

Standardelemente der Listenvorlage
  1. class.localizedIssuerName
    oder class.issuerName
  2. class.localizedProgramName
    oder class.programName
  3. class.programLogo
  4. class.hexBackgroundColor