लॉयल्टी टेंप्लेट

लॉयल्टी पास, टेंप्लेट रेंडरिंग के साथ काम करते हैं. अगर कोई टेंप्लेट तय नहीं किया गया है, तो डिफ़ॉल्ट टेंप्लेट का इस्तेमाल किया जाता है.

टेंप्लेट की परिभाषा

पास टेंप्लेट को क्लास लेवल पर तय किया जाता है. साथ ही, इसका इस्तेमाल क्लास से जुड़े किसी भी ऑब्जेक्ट को दिखाने के लिए किया जाता है. टेंप्लेट तय करता है कि पास के अलग-अलग सेक्शन में किन फ़ील्ड को दिखाना है.

टेंप्लेट को इन सेक्शन में बांटा गया है:

Android

टेंप्लेट की खास जानकारी

वेब

टेंप्लेट की खास जानकारी

कार्ड शीर्षक

Android

कार्ड के टाइटल के एलिमेंट डिफ़ॉल्ट कार्ड का टाइटल
  1. class.programLogo
  2. class.localizedIssuerName
    या class.issuerName
  3. class.localizedProgramName
    या class.programName
  4. class.hexBackgroundColor

चौड़े लोगो वाले कार्ड का टाइटल
  1. class.wideProgramLogo
  2. class.localizedProgramName
    या class.programName
  3. class.hexBackgroundColor

वेब

कार्ड के टाइटल के एलिमेंट डिफ़ॉल्ट कार्ड का टाइटल
  1. class.programLogo
  2. class.localizedIssuerName
    या class.issuerName
  3. class.localizedProgramName
    या class.programName
  4. class.hexBackgroundColor

चौड़े लोगो वाले कार्ड का टाइटल
  1. class.wideProgramLogo
  2. class.localizedProgramName
    या class.programName
  3. class.hexBackgroundColor

कार्ड के टाइटल वाले सेक्शन में लोगो, जारी करने वाले का नाम, और प्रोग्राम का टाइटल दिखता है. प्रॉडक्ट डेटा को पॉप्युलेट करने के लिए इस्तेमाल किए गए फ़ील्ड रेफ़रंस या इनकी जगह नहीं बदली जा सकती.

जब चौड़े लोगो का फ़ील्ड सेट किया जाता है, तो Android डिवाइसों पर लोगो और जारी करने वाले के नाम वाले डिफ़ॉल्ट टेंप्लेट हेडर को बड़े लोगो से बदल दिया जाता है.

पास पर इमेज को अच्छे से दिखाने के लिए, चौड़ा हेडर लोगो बनाते समय कृपया चौड़े लोगो की इमेज से जुड़े दिशा-निर्देशों का पालन करें.

कार्ड टेंप्लेट

Android

टेंप्लेट की खास जानकारी

वेब

टेंप्लेट की खास जानकारी

कार्ड टेंप्लेट सेक्शन का इस्तेमाल, ज़्यादा लाइनें दिखाने के लिए किया जाता है. इन पंक्तियों में, टेक्स्ट पर आधारित स्ट्रक्चर्ड डेटा फ़ील्ड या टेक्स्ट मॉड्यूल फ़ील्ड हो सकते हैं.

आपके पास उन पंक्तियों की संख्या तय करने का विकल्प होता है जिनसे class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[] सूची में ऑब्जेक्ट की संख्या पता चलती है. सूची में कम से कम एक एलिमेंट होना ज़रूरी है और हमने ज़्यादा से ज़्यादा दो एलिमेंट का इस्तेमाल करने का सुझाव दिया है. हर एलिमेंट इनमें से किसी एक टाइप का होना चाहिए:

  • oneItem, जो एक आइटम स्वीकार करता है:
    • item
  • twoItems, जो दो आइटम स्वीकार करता है:
    • startItem
    • endItem
  • threeItems, जिसमें तीन आइटम स्वीकार किए जाते हैं:
    • startItem
    • middleItem
    • endItem

हर आइटम को या तो एक फ़ील्ड सिलेक्टर (.firstValue), दो फ़ील्ड सिलेक्टर (.firstValue और .secondValue) या पहले से तय किए गए आइटम (.predefinedItem) के तौर पर बताया जा सकता है. चुने गए फ़ील्ड की वैल्यू और उनसे जुड़े लेबल, दोनों दिखाए जाते हैं. जब दो फ़ील्ड सिलेक्टर तय किए जाते हैं, तो चुने गए फ़ील्ड की वैल्यू "/" सेपरेटर के साथ दिखती हैं. यही बात, चुने गए फ़ील्ड के लेबल पर भी लागू होती है. अगर पहले से तय आइटम का इस्तेमाल किया जाता है, तो ज़्यादा कॉम्प्लेक्स रेंडरिंग तय की जा सकती है.

नीचे दिया गया कोड सैंपल, कार्ड टेंप्लेट के कार्ड की लाइन के सेक्शन को बदलने का तरीका बताता है, ताकि दो लाइनें तय की जा सकें. हर लाइन में तीन आइटम होते हैं. हर आइटम में, क्लास लेवल के छह textModuleData कस्टम फ़ील्ड और उनके हेडर को लेबल के तौर पर शामिल किया जाता है:

Python

 {
   ... //Rest of class
   "textModulesData": [
        {
            "header": "Label 1",
            "body": "Some info 1",
            "id": "myfield1"
        },
        {
            "header": "Label 2",
            "body": "Some info 2",
            "id": "myfield2"
        },
        {
            "header": "Label 3",
            "body": "Some info 3",
            "id": "myfield3"
        },
        {
            "header": "Label 4",
            "body": "Some info 4",
            "id": "myfield4"
        },
        {
            "header": "Label 5",
            "body": "Some info 5",
            "id": "myfield5"
        },
        {
            "header": "Label 6",
            "body": "Some info 6",
            "id": "myfield6"
        }
    ],
   "classTemplateInfo": {
        "cardTemplateOverride": {
            "cardRowTemplateInfos": [{
                "threeItems": {
                    "startItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield1']"
                            }]
                        }
                    },
                    "middleItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield2']"
                            }]
                        }
                    },
                    "endItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield3']"
                            }]
                        }
                    },
                }
            },{
                "threeItems": {
                    "startItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield4']"
                            }]
                        }
                    },
                    "middleItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield5']"
                            }]
                        }
                    },
                    "endItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield6']"
                            }]
                        }
                    },
                }
            }]
        }
    }
}
    

Java

// Rest of class
  .setTextModulesData((new ArrayList<TextModuleData>() {
    {
      add((new TextModuleData()).setHeader("Label 1")
        .setBody("Some info 1")
        .setId("myfield1"));
      add((new TextModuleData()).setHeader("Label 2")
        .setBody("Some info 1")
        .setId("myfield2"));
      add((new TextModuleData()).setHeader("Label 3")
        .setBody("Some info 3")
        .setId("myfield3"));
      add((new TextModuleData()).setHeader("Label 4")
        .setBody("Some info 4")
        .setId("myfield4"));
      add((new TextModuleData()).setHeader("Label 5")
        .setBody("Some info 5")
        .setId("myfield5"));
      add((new TextModuleData()).setHeader("Label 6")
        .setBody("Some info 5")
        .setId("myfield6"));
    }
  }))
  .setClassTemplateInfo((new ClassTemplateInfo())
    .setCardTemplateOverride((new CardTemplateOverride())
      .setCardRowTemplateInfos(new ArrayList<CardRowTemplateInfo>() {
        {
          add((new CardRowTemplateInfo()).setThreeItems((new CardRowThreeItems())
            .setStartItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield1']"));
              }
            })))
            .setMiddleItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield2']"));
              }
            })))
            .setEndItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield3']"));
              }
            })))
          ));
          add((new CardRowTemplateInfo()).setThreeItems((new CardRowThreeItems())
            .setStartItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield4']"));
              }
            })))
            .setMiddleItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield5']"));
              }
            })))
            .setEndItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield6']"));
              }
            })))
          ));
          }
  })))
    

PHP

// Rest of class
    $textModulesData1 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData1->setBody("Some info 1");
    $textModulesData1->setHeader("Label 1");
    $textModulesData1->setId("myfield1");

    $textModulesData2 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData2->setBody("Some info 2");
    $textModulesData2->setHeader("Label 2");
    $textModulesData2->setId("myfield2");

    $textModulesData3 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData3->setBody("Some info 3");
    $textModulesData3->setHeader("Label 3");
    $textModulesData3->setId("myfield3");

    $textModulesData4 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData4->setBody("Some info 4");
    $textModulesData4->setHeader("Label 4");
    $textModulesData4->setId("myfield4");

    $textModulesData5 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData5->setBody("Some info 5");
    $textModulesData5->setHeader("Label 5");
    $textModulesData5->setId("myfield5");

    $textModulesData6 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData6->setBody("Some info 6");
    $textModulesData6->setHeader("Label 6");
    $textModulesData6->setId("myfield6");

    $textModulesDatas = array($textModulesData1, $textModulesData2, $textModulesData3,
                  $textModulesData4, $textModulesData5, $textModulesData6);

    $startItemField = new Google_Service_Walletobjects_FieldReference();
    $startItemField->setFieldPath("class.textModulesData['myfield1']");

    $startItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $startItemFirstValue->setFields(array($startItemField));

    $startItem = new Google_Service_Walletobjects_TemplateItem();
    $startItem->setFirstValue($startItemFirstValue);

    $middleItemField = new Google_Service_Walletobjects_FieldReference();
    $middleItemField->setFieldPath("class.textModulesData['myfield2']");

    $middleItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $middleItemFirstValue->setFields(array($middleItemField));

    $middleItem = new Google_Service_Walletobjects_TemplateItem();
    $middleItem->setFirstValue($middleItemFirstValue);

    $endItemField = new Google_Service_Walletobjects_FieldReference();
    $endItemField->setFieldPath("class.textModulesData['myfield3']");

    $endItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $endItemFirstValue->setFields(array($endItemField));

    $endItem = new Google_Service_Walletobjects_TemplateItem();
    $endItem->setFirstValue($endItemFirstValue);

    $cardRowTemplate = new Google_Service_Walletobjects_CardRowThreeItems();
    $cardRowTemplate->setStartItem($startItem);
    $cardRowTemplate->setMiddleItem($middleItem);
    $cardRowTemplate->setEndItem($endItem);

    $cardRowTemplateInfo1 = new Google_Service_Walletobjects_CardRowTemplateInfo();
    $cardRowTemplateInfo1->setThreeItems($cardRowTemplate);

    $startItemField2 = new Google_Service_Walletobjects_FieldReference();
    $startItemField2->setFieldPath("class.textModulesData['myfield4']");

    $startItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $startItemFirstValue2->setFields(array($startItemField2));

    $startItem2 = new Google_Service_Walletobjects_TemplateItem();
    $startItem2->setFirstValue($startItemFirstValue2);

    $middleItemField2 = new Google_Service_Walletobjects_FieldReference();
    $middleItemField2->setFieldPath("class.textModulesData['myfield5']");

    $middleItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $middleItemFirstValue2->setFields(array($middleItemField2));

    $middleItem2 = new Google_Service_Walletobjects_TemplateItem();
    $middleItem2->setFirstValue($middleItemFirstValue2);

    $endItemField2 = new Google_Service_Walletobjects_FieldReference();
    $endItemField2->setFieldPath("class.textModulesData['myfield6']");

    $endItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $endItemFirstValue2->setFields(array($endItemField2));

    $endItem2 = new Google_Service_Walletobjects_TemplateItem();
    $endItem2->setFirstValue($endItemFirstValue2);

    $cardRowTemplate2 = new Google_Service_Walletobjects_CardRowThreeItems();
    $cardRowTemplate2->setStartItem($startItem2);
    $cardRowTemplate2->setMiddleItem($middleItem2);
    $cardRowTemplate2->setEndItem($endItem2);

    $cardRowTemplateInfo2 = new Google_Service_Walletobjects_CardRowTemplateInfo();
    $cardRowTemplateInfo2->setThreeItems($cardRowTemplate2);

    $cardTemplateOverride = new Google_Service_Walletobjects_CardTemplateOverride();
    $cardTemplateOverride->setCardRowTemplateInfos(array($cardRowTemplateInfo1,
                  $cardRowTemplateInfo2));

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setCardTemplateOverride($cardTemplateOverride);

    $payload->setTextModulesData($textModulesDatas);
    $payload->setClassTemplateInfo($classTemplateInfo);
    

यह कोड, इस कोड टेंप्लेट सेक्शन फ़ॉर्मैट का इस्तेमाल करके पास बनाता है:

लेबल बदलने का उदाहरण.

अगर कोई आइटम खाली है, तो वह नहीं दिखता है. ज़्यादा जानकारी के लिए, फ़ील्ड रेफ़रंस देखें. अगर किसी पंक्ति के सभी आइटम खाली हैं, तो लाइन नहीं दिखती है. अगर किसी पंक्ति में मौजूद सभी आइटम खाली नहीं हैं, तो जो आइटम खाली नहीं हैं उन्हें क्रम में फिर से व्यवस्थित किया जाता है. साथ ही, उन्हें कम आइटम वाली पंक्ति के तौर पर दिखाया जाता है.

अगर कार्ड टेंप्लेट को नहीं बदला जाता है, तो पंक्तियों की डिफ़ॉल्ट संख्या, आइटम की डिफ़ॉल्ट संख्या, और डिफ़ॉल्ट फ़ील्ड रेफ़रंस का इस्तेमाल किया जाता है. ज़्यादा जानकारी के लिए, डिफ़ॉल्ट टेंप्लेट देखें.

हीरो इमेज तय करने के बाद, यह पहली लाइन के बाद दिख सकती है. हालांकि, ऐसा तब हो सकता है, जब cardRowTemplateInfos सूची में एक से ज़्यादा लाइनें हों. इसके अलावा, अगर सिर्फ़ एक लाइन है, तो उसके ऊपर दिख सकती है.

कार्ड का बारकोड

Android

कार्ड के बारकोड के एलिमेंट
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type और object.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.type और object.barcode.value
    या object.accountId
  4. object.barcode.alternateText
    या object.accountId
    या object.barcode.value
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

कार्ड के बारकोड सेक्शन का इस्तेमाल, बारकोड के ऊपर और नीचे अतिरिक्त टेक्स्ट या इमेज दिखाने के लिए किया जाता है. इस सेक्शन में कोई भी फ़ील्ड ज़रूरी नहीं है.

तीन फ़ील्ड सिलेक्टर हैं. इनका इस्तेमाल, ऊपर और बारकोड के नीचे दो अगल-बगल के दो फ़ील्ड तय करने के लिए किया जा सकता है. इन्हें बिना किसी लेबल के दिखाया जाता है. ये टेक्स्ट पर आधारित स्ट्रक्चर्ड डेटा फ़ील्ड, टेक्स्ट मॉड्यूल फ़ील्ड या इमेज मॉड्यूल फ़ील्ड हो सकते हैं. अगर इमेज का इस्तेमाल किया जाता है, तो इमेज, ब्रैंड के दिशा-निर्देशों के मुताबिक होनी चाहिए.

बारकोड को टाइप और वैल्यू के हिसाब से तय किया जाता है. इस्तेमाल किए जा सकने वाले बारकोड टाइप की सूची के लिए, रेफ़रंस देखें. इसके अलावा, टेक्स्ट को बारकोड के ठीक नीचे दिखाया जा सकता है. इस टेक्स्ट से, बारकोड को स्कैन करना आसान हो जाता है. साथ ही, इसका इस्तेमाल दूसरे कामों में भी किया जा सकता है.

नीचे दिया गया कोड सैंपल, बारकोड के ऊपर इमेज दिखाने के लिए, पास के बारकोड सेक्शन को बदलने का तरीका बताता है:

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), दो फ़ील्ड सिलेक्टर (.firstValue और .secondValue) या एक पहले से तय आइटम (.predefinedItem) के तौर पर बताया जा सकता है. चुने गए फ़ील्ड की वैल्यू और उनसे जुड़े लेबल, दोनों दिखाए जाते हैं. जब दो फ़ील्ड सिलेक्टर तय किए जाते हैं, तो चुने गए फ़ील्ड की वैल्यू, "/" सेपरेटर के साथ दिखती हैं. चुने गए फ़ील्ड के लेबल पर भी यही बात लागू होती है. पहले से तय आइटम का इस्तेमाल, ज़्यादा जटिल रेंडरिंग को तय करने के लिए किया जाता है. इमेज मॉड्यूल फ़ील्ड बिना लेबल के पूरी चौड़ाई में रेंडर किए जाते हैं.

नीचे दिया गया कोड सैंपल, पास के ज़्यादा जानकारी वाले सेक्शन को बदलने का तरीका बताता है, ताकि एक linksModuleData फ़ील्ड को उसके लेबल के साथ दिखाया जा सके:

Python

//... rest of class
   "linksModuleData": {
        "uris": [
            {
                "uri": "http://maps.google.com/",
                "description": "Nearby Locations",
                "id":"mylink"
            }
        ]
    },
   "classTemplateInfo": {
        "detailsTemplateOverride": {
            "detailsItemInfos": [
                {
                    "item":{
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.linksModuleData.uris['mylink']"
                            }]
                        }
                    }
                }
            ]
        }
     }
//... rest of class
    

Java

 //... rest of class
  .setLinksModuleData((new ArrayList<LinksModuleData>() {
    {
      add((new LinksModuleData()).setDescription("Nearby Locations")
        .setUri("http://maps.google.com/")
        .setId("mylink"));
      }))
      .setClassTemplateInfo((new ClassTemplateInfo())
        .setDetailsTemplateOverride((new DetailsTemplateOverride())
          .setDetailsItemInfos(new ArrayList<DetailsItemInfo>(){
            {
              add((new DetailsItemInfo())
                .setItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
                  {
                    add((new FieldReference()).setFieldPath("class.linksModuleData.uris['mylink']"));
                  }
                }))));
              }
            }))
//... rest of class
    

PHP



    //... rest of class building
    $locationUri = new Google_Service_Walletobjects_Uri();
    $locationUri->setUri("http://maps.google.com/");
    $locationUri->setDescription("Nearby Locations");
    $locationUri->setId("mylink");

    $linksModuleData = new Google_Service_Walletobjects_LinksModuleData();
    $linksModuleData->setUris(array($locationUri));

    $detailItemFieldReference = new Google_Service_Walletobjects_FieldReference();
    $detailItemFieldReference->setFieldPath("class.linksModuleData.uris['mylink']");
    $detailItemFieldSelector = new Google_Service_Walletobjects_FieldSelector();
    $detailItemFieldSelector->setFields(array($detailItemFieldReference));

    $detailItem = new Google_Service_Walletobjects_TemplateItem();
    $detailItem->setFirstValue($detailItemFieldSelector);

    $detailsItemInfo = new Google_Service_Walletobjects_DetailsItemInfo();
    $detailsItemInfo->setItem($detailItem);

    $cardDetailsTemplateOverride = new Google_Service_Walletobjects_DetailsTemplateOverride();
    $cardDetailsTemplateOverride->setDetailsItemInfos(array($detailsItemInfo));

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setDetailsTemplateOverride($cardDetailsTemplateOverride);

    $payload->setClassTemplateInfo($classTemplateInfo);
    $payload->setLinksModuleData($linksModuleData);
    //... rest of class
    

यह कोड, जानकारी वाले इस सेक्शन के फ़ॉर्मैट में पास बनाता है:

जानकारी में बदलाव करने का उदाहरण.

अगर कोई आइटम खाली है, तो वह नहीं दिखता है. ज़्यादा जानकारी के लिए, फ़ील्ड रेफ़रंस देखें.

अगर जानकारी वाले टेंप्लेट को नहीं बदला जाता है, तो डिफ़ॉल्ट क्रम में रेफ़रंस फ़ील्ड की डिफ़ॉल्ट सूची दिखती है. ज़्यादा जानकारी के लिए, डिफ़ॉल्ट टेंप्लेट देखें.

सूची टेंप्लेट

टेंप्लेट के एलिमेंट की सूची बनाएं
  1. class.classTemplateInfo.listTemplateOverride
      .firstRowOption.fieldOption.fields[]
  2. class.classTemplateInfo.listTemplateOverride
      .secondRowOption.fields[]
  3. class.programLogo
  4. class.hexBackgroundColor

लिस्ट टेंप्लेट सेक्शन का इस्तेमाल, यह चुनने के लिए किया जाता है कि Google Wallet ऐप्लिकेशन के "पास" व्यू में किस फ़ील्ड को दिखाना है. पास को सूची में लोगो, बैकग्राउंड के रंग, और तीन लाइनों के साथ दिखाया जाता है.

नीचे दिया गया कोड सैंपल, सूची टेंप्लेट की पहली लाइन में किसी पास के ऑब्जेक्ट के खत्म होने की तारीख वाले फ़ील्ड को दिखाने के लिए, पास के सूची टेंप्लेट को बदलने का तरीका बताता है:

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
    

कोड, नीचे दिए गए सूची टेंप्लेट के हिसाब से पास बनाता है:

लिस्ट में बदलाव करने का उदाहरण.

तीन पंक्तियों को फ़ील्ड सिलेक्टर की मदद से तय किया जा सकता है. फ़ील्ड बिना किसी लेबल के दिखाए जाते हैं.

लेबल

सभी स्ट्रक्चर्ड डेटा फ़ील्ड के लिए, Google से एक लेबल मिला होता है. Google, इन लेबल का अनुवाद उन सभी भाषाओं में देने के लिए ज़िम्मेदार है जिनका इस्तेमाल किया जा सकता है.

class.custom<name_of_the_field>Label फ़ील्ड में से किसी एक का इस्तेमाल करके, इनमें से कुछ लेबल को अपनी पसंद के मुताबिक बनाया जा सकता है. जब किसी लेबल को अपनी पसंद के मुताबिक बनाया जाता है, तो यह आपकी ज़िम्मेदारी होती है कि आप उस लेबल के लिए उन सभी भाषाओं में अनुवाद उपलब्ध कराएं जिस पर आपको काम करना है.

फ़ील्ड के रेफ़रंस

फ़ील्ड रेफ़रंस का इस्तेमाल, टेंप्लेट के अलग-अलग हिस्सों में class.classTemplateInfo.*.fields[] फ़ॉर्म के साथ किया जाता है. फ़ील्ड के रेफ़रंस में, स्ट्रक्चर्ड डेटा फ़ील्ड, टेक्स्ट मॉड्यूल फ़ील्ड, लिंक मॉड्यूल फ़ील्ड, इमेज मॉड्यूल फ़ील्ड या मैसेज के पाथ की सूची होती है.

हर फ़ील्ड रेफ़रंस में सभी तरह के पाथ की अनुमति नहीं है. उदाहरण के लिए, कुछ फ़ील्ड रेफ़रंस सिर्फ़ टेक्स्ट पर आधारित स्ट्रक्चर्ड डेटा फ़ील्ड या टेक्स्ट मॉड्यूल फ़ील्ड के पाथ की अनुमति देते हैं. टेक्स्ट पर आधारित स्ट्रक्चर्ड फ़ील्ड, स्ट्रक्चर्ड डेटा के ऐसे फ़ील्ड होते हैं जिनमें स्ट्रिंग, स्थानीय भाषा के मुताबिक स्ट्रिंग, तारीख या पैसे शामिल होते हैं.

इस सूची का इस्तेमाल, फ़ॉलबैक लॉजिक को लागू करने के लिए किया जा सकता है. इसका मतलब है कि अगर सूची के पहले पाथ का खाली फ़ील्ड दिख रहा है, तो अगले पाथ का आकलन किया जाता है. फ़ॉलबैक लॉजिक, मुख्य रूप से टेक्स्ट पर आधारित स्ट्रक्चर्ड डेटा फ़ील्ड या टेक्स्ट मॉड्यूल फ़ील्ड पर टारगेट किया जाता है. एक ही सूची में अलग-अलग तरह के फ़ील्ड न डालें. फ़ॉलबैक लॉजिक का इस्तेमाल सावधानी से करें. हालांकि, ऐसा सिर्फ़ कुछ खास स्थितियों में करें. ऐसा तब करें, जब आपको फ़ील्ड के एक जैसे पैटर्न की उम्मीद हो, जो सिर्फ़ कुछ ऑब्जेक्ट में मौजूद हों, लेकिन बाकी में नहीं. ज़्यादातर मामलों में, अलग-अलग कामों के लिए अलग-अलग क्लास बनाना आसान होता है.

अगर किसी फ़ील्ड पहचान सूची के सभी पाथ खाली फ़ील्ड में बदल जाते हैं, तो फ़ील्ड संदर्भ का इस्तेमाल करने वाला आइटम नहीं दिखाया जाता है. अगर आपको फ़ील्ड रेफ़रंस का इस्तेमाल करने वाला आइटम हमेशा दिखाना है, तो पक्का करें कि कम से कम एक पाथ खाली न हो. हमारा सुझाव है कि शून्य वैल्यू दिखाने के लिए, आप फ़ील्ड को किसी खास वर्ण, जैसे कि ‘-’ पर सेट करें. भले ही, कुछ फ़ील्ड में सिर्फ़ स्पेस का इस्तेमाल करके स्ट्रिंग इस्तेमाल करने की अनुमति दी गई हो.

सूची में मौजूद किसी फ़ील्ड का रेफ़रंस देने के लिए, सूची में मौजूद फ़ील्ड के इंडेक्स का इस्तेमाल किया जा सकता है. ज़्यादातर मामलों में, रेफ़रंस आईडी का इस्तेमाल किया जा सकता है. सूची के जिन आइटम का रेफ़रंस आईडी दिया जा सकता है उनमें .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]

इस मामले में, पास के जानकारी सेक्शन में मौजूद पहला आइटम, ऑब्जेक्ट में बताई गई दूसरी इमेज होती है. हालांकि, पास के जानकारी सेक्शन में दूसरा आइटम, ऑब्जेक्ट में बताई गई पहली इमेज होती है.

डिफ़ॉल्ट टेंप्लेट

Android

डिफ़ॉल्ट टेंप्लेट एलिमेंट
  1. class.programLogo
  2. class.localizedIssuerName
    या class.issuerName
  3. class.localizedProgramName
    या class.programName
  4. POINTS
    या object.loyaltyPoints.localizedLabel
    या object.loyaltyPoints.label
  5. object.loyaltyPoints.balance
  6. इनाम
    या object.secondaryLoyaltyPoints.localizedLabel
    या object.secondaryLoyaltyPoints.label
  7. object.secondaryLoyaltyPoints.balance
  8. object.barcode.type और object.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. सदस्य आईडी
    या class.localizedAccountIdLabel
    या class.accountIdLabel
  15. object.accountId
  16. REWARDS टियर
    या class.localizedRewardsTierLabel
    या class.rewardsTierLabel
  17. class.localizedRewardsTier
    या class.rewardsTier
  18. सेकंडरी इनाम टियर
    या 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. POINTS
    या object.loyaltyPoints.localizedLabel
    या object.loyaltyPoints.label
  5. object.loyaltyPoints.balance
  6. इनाम
    या object.secondaryLoyaltyPoints.localizedLabel
    या object.secondaryLoyaltyPoints.label
  7. object.secondaryLoyaltyPoints.balance
  8. object.barcode.type और object.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. सदस्य आईडी
    या class.localizedAccountIdLabel
    या class.accountIdLabel
  15. object.accountId
  16. REWARDS टियर
    या class.localizedRewardsTierLabel
    या class.rewardsTierLabel
  17. class.localizedRewardsTier
    या class.rewardsTier
  18. सेकंडरी इनाम टियर
    या 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

इमेज मॉड्यूल फ़ील्ड के लिए, हम क्लास से एक और सिर्फ़ एक इमेज मॉड्यूल फ़ील्ड दिखाते हैं. साथ ही, हम ऑब्जेक्ट से एक और सिर्फ़ एक इमेज मॉड्यूल फ़ील्ड दिखाते हैं. अगर आपको किसी भी लेवल पर एक से ज़्यादा इमेज मॉड्यूल फ़ील्ड की ज़रूरत है, तो डिफ़ॉल्ट टेंप्लेट को बदलें.

टेक्स्ट मॉड्यूल फ़ील्ड के लिए, हम क्लास से ज़्यादा से ज़्यादा 20 टेक्स्ट मॉड्यूल फ़ील्ड और ऑब्जेक्ट से सिर्फ़ 20 टेक्स्ट मॉड्यूल फ़ील्ड दिखाते हैं. फ़ील्ड उसी क्रम में दिखाए जाते हैं जिस क्रम में उन्हें कलेक्शन में तय किया गया है. अगर आपको किसी भी लेवल पर 20 से ज़्यादा टेक्स्ट मॉड्यूल फ़ील्ड की ज़रूरत है, तो डिफ़ॉल्ट टेंप्लेट को बदलें.

मैसेज के लिए, हम क्लास के ज़्यादा से ज़्यादा 20 मैसेज और ऑब्जेक्ट के 20 मैसेज दिखाते हैं. हम यह गारंटी नहीं देते कि मैसेज का क्रम सही है. अगर आपको किसी भी लेवल पर 20 से ज़्यादा मैसेज या किसी भी ऑर्डर की गारंटी चाहिए, तो डिफ़ॉल्ट टेंप्लेट को बदलें.

लिंक मॉड्यूल फ़ील्ड के लिए, uri की कोई सीमा तय नहीं है. हर लेवल (क्लास या ऑब्जेक्ट) के लिए यूरिस को इस क्रम में ग्रुप में दिखाया जाता है:

  1. मैप के निर्देशांक
  2. टेलीफ़ोन नंबर
  3. ईमेल पते
  4. वेब पेज

हर ग्रुप के लिए, यूआरआई उसी क्रम में दिखाए जाते हैं जिसमें उन्हें अरे में तय किया गया है. अगर आपको कोई अलग क्रम चाहिए, तो डिफ़ॉल्ट टेंप्लेट को बदलें.

डिफ़ॉल्ट सूची के टेंप्लेट एलिमेंट
  1. class.localizedIssuerName
    या class.issuerName
  2. class.localizedProgramName
    या class.programName
  3. class.programLogo
  4. class.hexBackgroundColor