الگوی بلیط رویداد

بلیط‌های رویداد از رندر قالب پشتیبانی می‌کنند. اگر هیچ قالبی تعریف نشود، از قالب پیش‌فرض استفاده می‌شود.

تعریف الگو

یک الگوی گذر (pass template) در سطح کلاس تعریف می‌شود و برای نمایش هر شیء مرتبط با کلاس استفاده می‌شود. این الگو تعریف می‌کند که کدام فیلدها در بخش‌های مختلف گذر نمایش داده شوند.

قالب به بخش‌های زیر تقسیم می‌شود:

اندروید

مروری بر بخش‌ها و موقعیت‌های طرح‌بندی الگوی عبور

وب

مروری بر بخش‌ها و موقعیت‌های طرح‌بندی الگوی عبور

عنوان کارت

اندروید

عناصر طرح‌بندی عنوان کارت و موقعیت فیلدها عنوان پیش‌فرض کارت
  1. class.logo
  2. class.localizedIssuerName
    یا class.issuerName
  3. class.eventName
  4. class.venue.name
  5. object.hexBackgroundColor
    یا class.hexBackgroundColor

عنوان کارت با لوگوی عریض
  1. class.wideLogo
  2. class.eventName
  3. class.venue.name
  4. object.hexBackgroundColor
    یا class.hexBackgroundColor

وب

عناصر طرح‌بندی عنوان کارت و موقعیت فیلدها عنوان پیش‌فرض کارت
  1. class.logo
  2. class.localizedIssuerName
    یا class.issuerName
  3. class.eventName
  4. class.venue.name
  5. object.hexBackgroundColor
    یا class.hexBackgroundColor

عنوان کارت با لوگوی عریض
  1. class.wideLogo
  2. class.eventName
  3. class.venue.name
  4. object.hexBackgroundColor
    یا class.hexBackgroundColor

بخش عنوان کارت، لوگو، نام رویداد و محل برگزاری رویداد را نمایش می‌دهد. نه ارجاعات فیلدهای مورد استفاده برای پر کردن آنها و نه موقعیت آنها قابل تغییر نیست.

وقتی فیلد لوگوی عریض تنظیم می‌شود، در دستگاه‌های اندروید، سربرگ پیش‌فرض قالب که شامل لوگو و نام صادرکننده است، با لوگوی عریض جایگزین می‌شود.

هنگام ایجاد لوگوی هدر عریض خود ، دستورالعمل‌های تصویر لوگوی عریض را دنبال کنید تا تصویر شما به طور بهینه در صفحات شما نمایش داده شود.

الگوی کارت

اندروید

عناصر طرح‌بندی ردیف قالب کارت و موقعیت‌های فیلد

وب

عناصر طرح‌بندی ردیف قالب کارت و موقعیت‌های فیلد

بخش قالب کارت برای نمایش ردیف‌های اضافی استفاده می‌شود. این ردیف‌ها می‌توانند شامل فیلدهای داده ساختاریافته مبتنی بر متن یا فیلدهای ماژول متنی باشند.

شما می‌توانید تعداد ردیف‌هایی را که تعداد اشیاء موجود در لیست class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[] را تعریف می‌کنند، مشخص کنید. این لیست حداقل به یک عنصر نیاز دارد و توصیه می‌کنیم حداکثر از دو عنصر استفاده کنید. هر عنصر باید از یکی از انواع زیر باشد:

  • oneItem که یک آیتم را می‌پذیرد:
    • item
  • twoItems که دو آیتم را می‌پذیرد:
    • startItem
    • endItem
  • threeItems که سه آیتم را می‌پذیرد:
    • startItem
    • middleItem
    • endItem

هر آیتم می‌تواند به صورت یک انتخابگر فیلد ( .firstValue )، دو انتخابگر فیلد ( .firstValue و .secondValue ) یا یک آیتم از پیش تعریف شده ( .predefinedItem ) تعریف شود. هم مقادیر فیلد انتخاب شده و هم برچسب‌های مربوط به آنها نمایش داده می‌شوند. وقتی دو انتخابگر فیلد تعریف می‌کنید، مقادیر فیلدهای انتخاب شده با جداکننده "/" نمایش داده می‌شوند. همین امر در مورد برچسب‌های فیلدهای انتخاب شده نیز صدق می‌کند. آیتم‌های از پیش تعریف شده برای تعریف رندرینگ پیچیده‌تر استفاده می‌شوند.

نمونه کد زیر نحوه‌ی بازنویسی بخش‌های ردیف کارت الگوی کارت را برای تعیین دو ردیف نشان می‌دهد. هر ردیف شامل سه آیتم است که هر کدام به شش فیلد سفارشی textModuleData در سطح کلاس و سربرگ‌های آنها به عنوان برچسب اشاره می‌کنند:

پایتون

 {
   ... //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']"
                            }]
                        }
                    },
                }
            }]
        }
    }
}
    

جاوا

// 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']"));
              }
            })))
          ));
          }
  })))
    

پی اچ پی

// 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. class.classTemplateInfo
    .cardBarcodeSectionDetails
    .firstTopDetail
  2. class.classTemplateInfo
    .cardBarcodeSectionDetails
    .secondTopDetail
  3. object.barcode.type و object.barcode.value
    یا object.ticketNumber
  4. object.barcode.alternateText
  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.ticketNumber
  4. object.barcode.alternateText
  5. class.classTemplateInfo
    .cardBarcodeSectionDetails
    .firstBottomDetail

بخش بارکد کارت برای نمایش متن یا تصاویر اضافی قبل و بعد از بارکد استفاده می‌شود. هیچ یک از فیلدهای این بخش الزامی نیستند.

سه انتخابگر فیلد وجود دارد که می‌توانند برای تعریف دو فیلد کنار هم قبل و بعد از بارکد استفاده شوند. این فیلدها بدون برچسب نمایش داده می‌شوند و می‌توانند فیلدهای داده ساختاریافته مبتنی بر متن، فیلدهای ماژول متنی یا فیلدهای ماژول تصویری باشند. اگر از تصاویر استفاده می‌کنید، باید از دستورالعمل‌های برند پیروی کنند.

بارکد توسط یک نوع و یک مقدار تعریف می‌شود. برای فهرستی از انواع بارکد پشتیبانی‌شده، به مرجع مراجعه کنید. علاوه بر این، می‌توان متنی را درست زیر بارکد نشان داد. این متن می‌تواند اسکن بارکدها را آسان‌تر کند، از جمله کاربردهای دیگر آن.

نمونه کد زیر نحوه‌ی بازنویسی بخش بارکد یک گذر را برای نمایش تصویر بالای بارکد نشان می‌دهد:

پایتون

#... 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"
                        }
                    ]
                }
            }
        }
    }
}
    

جاوا

//... 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"));
                }
            })))))
      }
    

پی اچ پی

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

این کد یک مسیر با فرمت بخش بارکد زیر ایجاد می‌کند:

نمونه‌ای از لغو بارکد کارت.

اگر بخش بارکد را لغو نکنید، فیلدهای بارکد پیش‌فرض استفاده می‌شوند. برای اطلاعات بیشتر، به الگوی پیش‌فرض مراجعه کنید.

بخش پایین

اندروید

جزئیات بخش‌ها و موارد پایین قالب
  • 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 به همراه برچسب آن نشان می‌دهد:

پایتون

//... 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
    

جاوا

 //... 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
    

پی اچ پی

    //... 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.dateTime.start (گروه‌بندی شده)
    یا class.classTemplateInfo.listTemplateOverride
    .secondRowOption.fields[]
  3. class.logo
  4. object.hexBackgroundColor
    یا class.hexBackgroundColor
  5. <# عبور> (گروه‌بندی شده)

بخش الگوی فهرست برای انتخاب فیلدی که در نمای «گذرنامه‌ها»ی برنامه‌ی کیف پول گوگل نمایش داده شود، استفاده می‌شود. گذرنامه در فهرست با لوگو، رنگ پس‌زمینه و سه ردیف نمایش داده می‌شود.

نمونه کد زیر نحوه‌ی بازنویسی الگوی فهرست یک گذر را برای نمایش فیلد تاریخ انقضای شیء یک گذر در ردیف اول الگوی فهرست نشان می‌دهد:

پایتون

#... rest of class definition
   "classTemplateInfo": {
        "listTemplateOverride":{
            "firstRowOption": {
                "fieldOption":{
                    "fields": [{
                        "fieldPath": "object.validTimeInterval.end"
                    }]
                }
            }
        }
   }
}
    

جاوا

//... 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
    

پی اچ پی

    //... 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
    

این کد یک مسیر با نمایش الگوی لیست زیر ایجاد می‌کند:

مثالی از لغو یک لیست.

این سه ردیف را می‌توان با یک انتخابگر فیلد تعریف کرد. فیلدها بدون برچسب نمایش داده می‌شوند. برای پاس‌های گروهی، ردیف دوم همیشه تاریخ شروع و ردیف سوم همیشه تعداد پاس‌های گروه‌بندی شده را نشان می‌دهد.

برچسب‌ها

تمام فیلدهای داده‌های ساختاریافته دارای برچسبی هستند که توسط گوگل ارائه می‌شود. گوگل مسئول ارائه ترجمه برای هر یک از این برچسب‌ها در تمام زبان‌های پشتیبانی‌شده است.

شما می‌توانید برخی از این برچسب‌ها را با استفاده از یکی از فیلدهای class.custom<name_of_the_field>Label سفارشی کنید. وقتی یک برچسب را سفارشی می‌کنید، مسئول ارائه ترجمه برای آن برچسب خاص به تمام زبان‌هایی هستید که می‌خواهید پشتیبانی شوند.

ارجاعات میدانی

ارجاعات فیلد در بخش‌های مختلف قالب با فرم class.classTemplateInfo.*.fields[] استفاده می‌شوند. یک ارجاع فیلد شامل فهرستی از مسیرها به فیلدهای داده ساختاریافته، فیلدهای ماژول متن، فیلدهای ماژول لینک، فیلدهای ماژول تصویر یا پیام‌ها است.

همه انواع مسیرها در هر ارجاع فیلد مجاز نیستند. برای مثال، برخی از ارجاعات فیلد فقط مسیرهایی را برای فیلدهای داده ساختاریافته مبتنی بر متن یا فیلدهای ماژول متنی مجاز می‌دانند. فیلدهای ساختاریافته مبتنی بر متن، فیلدهای داده ساختاریافته از نوع رشته، رشته محلی، تاریخ یا پول هستند.

این لیست می‌تواند برای پیاده‌سازی یک منطق بازگشتی استفاده شود. این بدان معناست که اگر اولین مسیر در لیست به یک فیلد خالی ختم شود، مسیر بعدی ارزیابی می‌شود. منطق بازگشتی عمدتاً فیلدهای داده ساختاریافته مبتنی بر متن یا فیلدهای ماژول متنی را هدف قرار می‌دهد. انواع مختلف فیلدها را در یک لیست با هم مخلوط نکنید. از منطق بازگشتی با احتیاط و فقط در موقعیت‌های خاص استفاده کنید، زمانی که انتظار دارید الگوی ثابتی از فیلدها وجود داشته باشد که در برخی اشیاء وجود دارند اما در برخی دیگر وجود ندارند. اغلب اوقات، ایجاد کلاس‌های جداگانه برای موارد استفاده جداگانه آسان‌تر است.

اگر همه مسیرهای موجود در فهرست ارجاعات فیلد به فیلدهای خالی تبدیل شوند، آیتمی که از ارجاع فیلد استفاده می‌کند نمایش داده نمی‌شود. اگر می‌خواهید آیتمی که از ارجاع فیلد استفاده می‌کند همیشه وجود داشته باشد، مطمئن شوید که حداقل یک مسیر خالی نباشد. توصیه می‌کنیم برای نمایش مقدار null در فیلد، از کاراکتر خاصی مانند '-' استفاده کنید، حتی اگر برخی از فیلدها رشته‌هایی با فقط یک فاصله را مجاز بدانند.

برای ارجاع به یک فیلد موجود در یک لیست، می‌توانید از اندیس فیلد در لیست یا در بیشتر موارد، از یک شناسه مرجع استفاده کنید. مواردی از یک لیست که می‌توانند توسط شناسه ارجاع داده شوند، دارای یک فیلد .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]

در این حالت، اولین آیتم در بخش جزئیاتِ گذر، دومین تصویر اعلام‌شده در شیء است. در حالی که، دومین آیتم در بخش جزئیاتِ گذر، اولین تصویر اعلام‌شده در شیء است.

قالب پیش‌فرض

اندروید

عناصر و موقعیت‌های طرح‌بندی پیش‌فرض قالب گذر
  1. class.logo
  2. class.localizedIssuerName
    یا class.issuerName
  3. class.eventName
  4. class.venue.name
  5. object.barcode.type و
    object.barcode.value
  6. object.barcode.alternateText
  7. تاریخ
  8. class.dateTime.start (فقط تاریخ)
  9. زمان
  10. class.dateTime.start (فقط زمان)
  11. بخش (پیش‌فرض) یا ورودی
    (بستگی به class.sectionLabel دارد)
    یا class.customSectionLabel
  12. ROW یا class.customRowLabel
  13. object.seatInfo.section
  14. ROW یا class.customRowLabel
  15. SEAT یا class.customSeatLabel
  16. object.seatInfo.seat
  17. object.heroImage
    یا class.heroImage
  18. object.hexBackgroundColor
    یا class.hexBackgroundColor
  19. دارنده بلیط
  20. object.ticketHolderName
  21. class.venue.name
  22. class.venue.address
  23. کد تایید (پیش‌فرض)
    یا شماره تایید
    یا شماره سفارش
    یا شماره رزرو
    (بستگی به class.confirmationCodeLabel دارد)
    یا class.customConfirmationCodeLabel
  24. object.reservationInfo.confirmationCode
  25. شرایط و ضوابط
  26. class.finePrint
  27. class.messages[].header
  28. class.messages[].body
  29. object.messages[].header
  30. object.messages[].body
  31. class.textModulesData[0..9].header
  32. class.textModulesData[0..9].body
  33. object.textModulesData[0..9].header
  34. object.textModulesData[0..9].body
  35. class.linksModuleData.uris[].description
  36. object.linksModuleData.uris[].description

وب

عناصر و موقعیت‌های طرح‌بندی پیش‌فرض قالب گذر
  1. class.logo
  2. class.localizedIssuerName
    یا class.issuerName
  3. class.eventName
  4. class.venue.name
  5. object.barcode.type و
    object.barcode.value
  6. object.barcode.alternateText
  7. تاریخ
  8. class.dateTime.start (فقط تاریخ)
  9. زمان
  10. class.dateTime.start (فقط زمان)
  11. بخش (پیش‌فرض) یا ورودی
    (بستگی به class.sectionLabel دارد)
    یا class.customSectionLabel
  12. ROW یا class.customRowLabel
  13. object.seatInfo.section
  14. ROW یا class.customRowLabel
  15. SEAT یا class.customSeatLabel
  16. object.seatInfo.seat
  17. object.heroImage
    یا class.heroImage
  18. object.hexBackgroundColor
    یا class.hexBackgroundColor
  19. دارنده بلیط
  20. object.ticketHolderName
  21. class.venue.name
  22. class.venue.address
  23. کد تایید (پیش‌فرض)
    یا شماره تایید
    یا شماره سفارش
    یا شماره رزرو
    (بستگی به class.confirmationCodeLabel دارد)
    یا class.customConfirmationCodeLabel
  24. object.reservationInfo.confirmationCode
  25. شرایط و ضوابط
  26. class.finePrint
  27. class.messages[].header
  28. class.messages[].body
  29. object.messages[].header
  30. object.messages[].body
  31. class.textModulesData[0..9].header
  32. class.textModulesData[0..9].body
  33. object.textModulesData[0..9].header
  34. object.textModulesData[0..9].body
  35. class.linksModuleData.uris[].description
  36. object.linksModuleData.uris[].description

برای فیلدهای ماژول تصویر، ما یک و فقط یک فیلد ماژول تصویر از کلاس و یک و فقط یک فیلد ماژول تصویر از شیء را نشان می‌دهیم. اگر در هر سطح به بیش از یک فیلد ماژول تصویر نیاز دارید، الگوی پیش‌فرض را لغو کنید.

برای فیلدهای ماژول متنی، ما فقط حداکثر ۲۰ فیلد ماژول متنی از کلاس و ۲۰ فیلد ماژول متنی از شیء را نشان می‌دهیم. فیلدها به همان ترتیبی که در آرایه تعریف شده‌اند نمایش داده می‌شوند. اگر به بیش از ۲۰ فیلد ماژول متنی در هر سطح نیاز دارید، الگوی پیش‌فرض را لغو کنید.

برای پیام‌ها، ما فقط حداکثر ۲۰ پیام از کلاس و ۲۰ پیام از شیء را نشان می‌دهیم. ما ترتیب پیام‌ها را تضمین نمی‌کنیم. اگر به بیش از ۲۰ پیام در هر سطح یا تضمینی برای هر سفارشی نیاز دارید، الگوی پیش‌فرض را لغو کنید.

برای فیلد ماژول لینک‌ها، هیچ محدودیتی در تعداد uriهایی که می‌توانید تعریف کنید وجود ندارد. urisها به ترتیب زیر برای هر سطح (کلاس یا شیء) گروه‌بندی می‌شوند:

  1. مختصات نقشه
  2. شماره تلفن‌ها
  3. آدرس‌های ایمیل
  4. صفحات وب

برای هر گروه، آدرس‌های اینترنتی (URI) به همان ترتیبی که در آرایه تعریف شده‌اند، نمایش داده می‌شوند. اگر به ترتیب متفاوتی نیاز دارید، الگوی پیش‌فرض را لغو کنید.

عناصر و موقعیت‌های طرح‌بندی پیش‌فرض قالب فهرست
  1. class.eventName
  2. class.dateTime.start
  3. class.logo
  4. object.hexBackgroundColor
    یا class.hexBackgroundColor
  5. <# عبور> (گروه‌بندی شده)