Toplu Taşıma Kartı Şablonu

Toplu taşıma kartları, şablon oluşturmayı destekler. Şablon tanımlanmamışsa varsayılan şablon kullanılır.

Şablon tanımı

Kart şablonu, sınıf düzeyinde tanımlanır ve sınıfla ilişkili tüm nesneleri görüntülemek için kullanılır. Şablon, kartın farklı bölümlerinde hangi alanların gösterileceğini tanımlar.

Şablon aşağıdaki bölümlere ayrılmıştır:

Android

Kart şablonu düzeni bölümlerine ve konumlarına genel bakış

Web

Kart şablonu düzeni bölümlerine ve konumlarına genel bakış

Kart başlığı

Android

Kart başlığı düzen öğeleri ve alan konumları Varsayılan kart başlığı
  1. class.logo
  2. class.localizedIssuerName
    veya class.issuerName
  3. object.ticketLeg.originName
  4. object.ticketLeg.destinationName
  5. object.ticketLeg.originStationCode
  6. object.ticketLeg.destinationStationCode
  7. object.tripType
  8. object.hexBackgroundColor
    veya class.hexBackgroundColor

Geniş logo kart başlığı
  1. class.wideLogo
  2. object.ticketLeg.originName
  3. object.ticketLeg.destinationName
  4. object.ticketLeg.originStationCode
  5. object.ticketLeg.destinationStationCode
  6. object.tripType
  7. object.hexBackgroundColor
    veya class.hexBackgroundColor

Web

Kart başlığı düzen öğeleri ve alan konumları Varsayılan kart başlığı
  1. class.logo
  2. class.localizedIssuerName
    veya class.issuerName
  3. object.ticketLeg.originName
  4. object.ticketLeg.destinationName
  5. object.ticketLeg.originStationCode
  6. object.ticketLeg.destinationStationCode
  7. object.tripType
  8. object.hexBackgroundColor
    veya class.hexBackgroundColor

Geniş logo kart başlığı
  1. class.wideLogo
  2. object.ticketLeg.originName
  3. object.ticketLeg.destinationName
  4. object.ticketLeg.originStationCode
  5. object.ticketLeg.destinationStationCode
  6. object.tripType
  7. object.hexBackgroundColor
    veya class.hexBackgroundColor

Kart başlığı bölümünde logo, toplu taşıma işletmecisinin adı ve yolculuk özeti gösterilir. Bu üç öğenin tümü zorunludur ve bunları doldurmak için kullanılan alan referansları da konumları da değiştirilemez.

Ancak oluşturma mantığı, üst satır için biraz esneklik sağlar. Kartın, yolculuk özetini temsil eden üst satırı, tek ayaklı bir yolculuk için TransitObject içindeki aşağıdaki alanlar tarafından kontrol edilir:

  • object.tripType
  • object.ticketLeg.originName
  • object.ticketLeg.destinationName
  • object.ticketLeg.originStationCode
  • object.ticketLeg.destinationStationCode

Kartın nasıl oluşturulacağı, hangi alanların boş olmadığına bağlıdır. Aşağıdaki şekillerde oluşturulabilir:

  • Yalnızca kaynak adı: Yalnızca kaynak adı gösterilir. Bu, özellikle belirli bir yolculuk yerine bir bölgeyi kapsayan biletler için kullanışlıdır.
  • Başlangıç ve hedef: Başlangıç sol tarafta, hedef ise sağ taraftadır. İkisi arasındaki simge, seyahatin türüne bağlıdır. Başlangıç ve varış noktası aşağıdakilerden biri olarak gösterilir:
    • Adlar ve istasyon kodları: İstasyon kodlarını, adlarla birlikte üstte daha küçük metin olarak gösteririz.
    • Yalnızca adlar: Adları gösteririz.
    • Yalnızca istasyon kodları: İstasyon kodlarını gösteririz.

Çok ayaklı TransitObject nesneleri de benzer şekilde çalışır. Bu durumda object.ticketLeg kullanmayın. Bunun yerine object.ticketLegs[] listesini kullanmanız gerekir. Hem başlangıç hem de varış noktaları tanımlanmalıdır. Her ayakta adlar veya istasyon kodları ya da her ikisi de tutarlı bir şekilde kullanılmalıdır. Gösterilen başlangıç noktası, dizideki ilk öğenin başlangıç noktasıdır. Gösterilen hedef ise dizideki son öğenin hedefidir.

Kartın arka plan rengi zorunlu bir alan değildir ve hem sınıf düzeyinde hem de nesne düzeyinde tanımlanabilir. Nesne alanı daha yüksek önceliğe sahiptir ve sınıf alanını geçersiz kılmak için kullanılabilir.

Geniş logo alanı ayarlandığında, mobil cihazlarda logo ve sertifika veren kurum adını içeren varsayılan şablon başlığı geniş logoyla değiştirilir.

Resminizin kartlarınızda en iyi şekilde gösterilmesi için geniş başlık logonuzu oluştururken geniş logo resmi kurallarına uyun.

Kart şablonu

Android

Kart şablonu satır düzeni öğeleri ve alan konumları

Web

Kart şablonu satır düzeni öğeleri ve alan konumları

Kart şablonu bölümü, ek satırları görüntülemek için kullanılır. Bu satırlar, metin tabanlı yapılandırılmış veri alanları veya metin modülü alanları içerebilir.

class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[] listesindeki nesne sayısını tanımlayan satır sayısını belirtebilirsiniz. Listenin en az bir öğe içermesi gerekir. En fazla iki öğe kullanmanızı öneririz. Her öğe aşağıdaki türlerden birinde olmalıdır:

  • Bir öğe kabul eden oneItem:
    • item
  • twoItems, iki öğe kabul eder:
    • startItem
    • endItem
  • threeItems, üç öğe kabul eder:
    • startItem
    • middleItem
    • endItem

Her öğe tek bir alan seçici (.firstValue), iki alan seçici (.firstValue ve .secondValue) veya önceden tanımlanmış bir öğe (.predefinedItem) olarak tanımlanabilir. Seçilen alanın hem değerleri hem de ilgili etiketleri gösterilir. İki alan seçici tanımladığınızda, seçilen alanların değerleri "/" ayırıcıyla gösterilir. Aynı durum, seçilen alanların etiketleri için de geçerlidir. Önceden tanımlanmış öğeler, daha karmaşık oluşturma işlemlerini tanımlamak için kullanılır.

Aşağıdaki kod örneğinde, iki satır belirtmek için kart şablonu kart satırı bölümlerinin nasıl geçersiz kılınacağı gösterilmektedir. Her satırda, altı sınıf düzeyinde textModuleData özel alana ve bunların başlıklarına etiket olarak referans veren üç öğe bulunur:

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

Kod, aşağıdaki kod şablonu bölümü biçiminde bir kart oluşturur:

Etiket geçersiz kılma örneği.

Boş olan öğeler gösterilmez. Daha fazla bilgi için Alan Referansları bölümüne bakın. Bir satırdaki tüm öğeler boşsa satır gösterilmez. Bir satırdaki öğelerin bazıları boşsa boş olmayan öğeler yeniden düzenlenir ve daha az öğe içeren bir satır olarak gösterilir.

Kart şablonunu geçersiz kılmazsanız varsayılan satır sayısı, varsayılan öğe sayısı ve varsayılan alan referansları kullanılır. Daha fazla bilgi için Varsayılan şablon başlıklı makaleyi inceleyin.

Hero resim tanımladıktan sonra, cardRowTemplateInfos listesinde birden fazla satır varsa ilk satırdan sonra, yalnızca bir satır varsa satırın üstünde görünebilir.

Kart barkodu

Android

Kart barkodu düzen öğeleri ve konumları
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type ve object.barcode.value
    veya object.ticketNumber
  4. object.barcode.alternateText
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

Web

Kart barkodu düzen öğeleri ve konumları
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type ve object.barcode.value
    veya object.ticketNumber
  4. object.barcode.alternateText
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

Kart barkodu bölümü, barkoddan önce ve sonra gelen ek metinleri veya resimleri göstermek için kullanılır. Bu bölümdeki alanların hiçbiri zorunlu değildir.

Barkoddan önce iki yan yana alan ve barkoddan sonra bir alan tanımlamak için kullanılabilecek üç alan seçici vardır. Bunlar etiketsiz olarak gösterilir ve metin tabanlı yapılandırılmış veri alanları, metin modülü alanları veya resim modülü alanları olabilir. Resim kullanıyorsanız bunlar marka kurallarına uygun olmalıdır.

Barkod, bir tür ve değerle tanımlanır. Desteklenen barkod türlerinin listesi için Referans bölümüne bakın. Ayrıca barkodun hemen altında bir metin gösterilebilir. Bu metin, barkodları taramayı kolaylaştırabilir.

Aşağıdaki kod örneğinde, barkodun üzerinde bir resim göstermek için kartın barkod bölümünün nasıl geçersiz kılınacağı gösterilmektedir:

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

Kod, aşağıdaki barkod bölümü biçimine sahip bir kart oluşturur:

Kart barkodunu geçersiz kılma örneği.

Barkod bölümünü geçersiz kılmazsanız varsayılan barkod alanları kullanılır. Daha fazla bilgi için Varsayılan şablon başlıklı makaleyi inceleyin.

Alt bölüm

Android

Ayrıntılar şablonunun alt bölümleri ve öğeleri
  • Çok ayaklı seyahat planı
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • ...

Web

Ayrıntılar şablonunun alt bölümleri ve öğeleri
  • Çok ayaklı seyahat planı
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • ...

Alt bölümde öğelerin listesi yer alır class.classTemplateInfo.detailsTemplateOverride.detailsItemInfos[]. Öğeler her türlü yapılandırılmış veri alanını, metin modülü alanını, bağlantı modülü alanını, resim modülü alanını veya mesajı içerebilir.

Her öğe tek bir alan seçici (.firstValue), iki alan seçici (.firstValue ve .secondValue) veya önceden tanımlanmış bir öğe (.predefinedItem) olarak tanımlanabilir. Hem seçilen alanın değerleri hem de ilgili etiketleri gösterilir. İki alan seçici tanımladığınızda, seçilen alanların değerleri "/" ayırıcıyla gösterilir. Aynı durum, seçilen alanların etiketleri için de geçerlidir. Önceden tanımlanmış öğeler, daha karmaşık oluşturma işlemlerini tanımlamak için kullanılır. Resim modülü alanları, etiket olmadan tam genişlikte oluşturulur.

Aşağıdaki kod örneğinde, kartın alt bölümünün etiketiyle birlikte tek bir linksModuleData alanı gösterecek şekilde nasıl geçersiz kılınacağı gösterilmektedir:

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
    

Kod, aşağıdaki alt bölüm biçimine sahip bir kart oluşturur:

Alt bölüm geçersiz kılma örneği.

Boş olan öğeler gösterilmez. Daha fazla bilgi için Alan Referansları bölümüne bakın.

Alt bölümü geçersiz kılmazsanız varsayılan sıradaki varsayılan referans alanları listesi gösterilir. Daha fazla bilgi için Varsayılan şablon başlıklı makaleyi inceleyin.

Yolculuk birden fazla ayak içeriyorsa bölümün üst kısmında basit bir seyahat planı gösterilir ve bu plan taşınamaz. Yolculuk yalnızca tek bir ayaktan oluşuyorsa class.enableSingleLegItinerary ayarlanarak basit bir seyahat planı gösterilebilir.

Çok Ayaklı Seyahat Planı
  1. class.tranistType
  2. object.ticketLegs[i].originName
    veya object.ticketLegs[i].originStationCode
  3. object.ticketLegs[i].departureDateTime (yalnızca saat)
  4. object.ticketLegs[i].transitOperatorName
  5. COACH veya class.customCoachLabel
  6. object.ticketLegs[i].ticketSeat.coach
    veya object.ticketLegs[i].ticketSeats[*].coach
  7. SEAT veya class.customSeatLabel
  8. object.ticketLegs[i].ticketSeat.seat
    veya object.ticketLegs[i].ticketSeat.seatAssignment
    veya object.ticketLegs[i].ticketSeats[*].seat
    veya object.ticketLegs[i].ticketSeats[*].seatAssignment
    veya BELİRLİ BİR KOLTUK YOK
  9. object.hexBackgroundColor
    veya class.hexBackgroundColor
  10. object.ticketLegs[i].destinationName
    veya object.ticketLegs[i].destinationStationCode
  11. object.ticketLegs[i].arrivalDateTime (yalnızca saat)
  12. TRANSFER TO: PLATFORM
    veya TRANSFER TO: class.customPlatformLabel
    veya TRANSFER (platform tanımlanmamışsa)
  13. object.ticketLegs[i+1].platform

Liste şablonu

Şablon öğelerini listeleme
  1. class.classTemplateInfo.listTemplateOverride
      .firstRowOption.fieldOption.fields[]
  2. object.ticketLeg.departureDateTime (gruplandırılmış)
    veya class.classTemplateInfo.listTemplateOverride
      .secondRowOption.fields[]
  3. class.logo
  4. object.hexBackgroundColor
    veya class.hexBackgroundColor
  5. <# passes> (gruplandırılmış)

Liste şablonu bölümü, Google Cüzdan uygulamasının "Kartlar" görünümünde hangi alanın gösterileceğini seçmek için kullanılır. Kart, listede logo, arka plan rengi ve üç satırla temsil edilir.

Aşağıdaki kod örneğinde, liste şablonunun ilk satırında tek bir kart nesnesinin geçerlilik bitiş tarihi alanını göstermek için kartın liste şablonunun nasıl geçersiz kılınacağı gösterilmektedir:

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
    

Kod, aşağıdaki liste şablonu oluşturma işlemiyle bir kart oluşturur:

Liste geçersiz kılma örneği.

İlk satır, bir alan seçiciyle tanımlanabilir veya yolculuk özetini gösterir. Özetin biçimi aşağıdakilerden biri olabilir:

  • originAndDestinationCodes
  • originAndDestinationNames
  • originName

İkinci ve üçüncü satırlar yalnızca alan seçiciyle tanımlanabilir. Alanlar etiketsiz olarak gösterilir. Gruplandırılmış kartlarda ikinci satırda her zaman kalkış tarihi, üçüncü satırda ise her zaman gruplandırılmış kartların sayısı gösterilir.

Etiketler

Tüm yapılandırılmış veri alanlarında Google tarafından sağlanan bir etiket bulunur. Google, bu etiketlerin her birinin desteklenen tüm dillerde çevirisini sağlamaktan sorumludur.

Bu etiketlerden bazılarını class.custom<name_of_the_field>Label alanlarından birini kullanarak özelleştirebilirsiniz. Bir etiketi özelleştirdiğinizde, desteklemek istediğiniz tüm dillerde o etiketin çevirilerini sağlamak sizin sorumluluğunuzda olur.

Alan referansları

Alan referansları, şablonun farklı bölümlerinde class.classTemplateInfo.*.fields[] biçimiyle kullanılır. Alan referansı; yapılandırılmış veri alanları, metin modülü alanları, bağlantı modülü alanları, resim modülü alanları veya mesajların yollarını içeren bir liste barındırır.

Her alan referansında her yol türüne izin verilmez. Örneğin, bazı alan referansları yalnızca metin tabanlı yapılandırılmış veri alanlarına veya metin modülü alanlarına giden yollara izin verir. Metin tabanlı yapılandırılmış alanlar; dize, yerelleştirilmiş dize, tarih veya para türündeki yapılandırılmış veri alanlarıdır.

Bu liste, yedek mantığı uygulamak için kullanılabilir. Bu, listedeki ilk yol boş bir alan olarak çözümlenirse sonraki yolun değerlendirileceği anlamına gelir. Yedek mantığı, esas olarak metin tabanlı yapılandırılmış veri alanlarını veya metin modülü alanlarını hedefler. Aynı listede farklı alan türlerini karıştırmayın. Yedek mantığını dikkatli bir şekilde ve yalnızca bazı nesnelerde bulunan ancak diğerlerinde bulunmayan tutarlı bir alan kalıbı beklediğiniz belirli durumlarda kullanın. Çoğu zaman, farklı kullanım alanları için ayrı sınıflar oluşturmak daha kolaydır.

Bir alan referansı listesindeki tüm yollar boş alanlara çözümlenirse alan referansını kullanan öğe gösterilmez. Alan referansını kullanan öğenin her zaman mevcut olmasını istiyorsanız en az bir yolun boş olmadığından emin olun. Bazı alanlar yalnızca boşluk içeren dizelere izin verse de boş bir değeri temsil etmek için alanı "-" gibi özel bir karakter olarak ayarlamanızı öneririz.

Bir listede bulunan alana referans vermek için alandaki dizini kullanabilir veya çoğu durumda referans kimliği kullanabilirsiniz. Kimliğe göre referans verilebilen bir listenin öğelerinde .id alanı bulunur. Mümkün olduğunda, listedeki alanın dizini yerine referans kimliği kullanmanızı öneririz.

Aşağıda, bir listede yer alan alanlara nasıl referans verileceğine dair bir örnek verilmiştir.

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

Bu durumda, kartın ayrıntılar bölümündeki ilk öğe, nesnede tanımlanan ikinci resimdir. Kartın ayrıntılar bölümündeki ikinci öğe ise nesnede tanımlanan ilk resimdir.

Varsayılan şablon

Android

Varsayılan kart şablonu düzen öğeleri ve konumları
  1. class.logo
  2. class.localizedIssuerName
    veya class.issuerName
  3. Kart başlığını göster
  4. KALKIŞ veya GEÇERLİLİK BAŞLANGICI
  5. object.ticketLeg.departureDateTime (tarih ve saat)
    veya object.validTimeInterval.start.date
  6. VARIŞ ZAMANI veya GEÇERLİLİK SÜRESİ
  7. object.ticketLeg.arrivalDateTime (yalnızca saat)
    veya object.validTimeInterval.end.date
  8. PASSENGER
  9. object.passengerNames
  10. CARRIAGE veya class.customCarriageLabel
  11. object.ticketLeg.carriage
  12. COACH veya class.customCoachLabel
  13. object.ticketLeg.ticketSeat.coach
  14. SEAT veya class.customSeatLabel
  15. object.ticketLeg.ticketSeat.seat
    veya object.ticketLeg.ticketSeat.seatAssignment
  16. object.barcode.type ve object.barcode.value
    veya object.ticketNumber
  17. object.barcode.alternateText
  18. object.hexBackgroundColor
    veya class.hexBackgroundColor
  19. Çok ayaklı seyahat planı
  20. BİLET NUMARASI veya class.customTicketNumberLabel
  21. object.ticketNumber
  22. BİLET DURUMU
  23. object.ticketStatus veya object.customTicketStatus
  24. KALKIŞ
  25. object.ticketLeg.departureDateTime
  26. VARIŞ
  27. object.ticketLeg.arrivalDateTime
  28. ÜCRET veya class.customFareNameLabel
  29. object.ticketLeg.fareName
  30. PLATFORM veya class.customPlatformLabel
  31. object.ticketLeg.platform
  32. ZONE veya class.customZoneLabel
  33. object.ticketLeg.zone
  34. uçuş kabin sınıfı veya class.customFareClassLabel
  35. object.ticketLeg.ticketSeat.fareClass
    veya object.ticketLeg.ticketSeat.customFareClass
  36. İNDİRİM KATEGORİSİ
    veya class.customConcessionCategoryLabel
  37. object.concessionCategory
    veya object.customConcessionCategory
  38. ROTA KISITLAMALARI
    veya class.customRouteRestrictionsLabel
  39. object.ticketRestrictions.routeRestrictions
  40. ROTA KISITLAMASI AYRINTILARI
    veya class.customRouteRestrictionsDetailsLabel
  41. object.ticketRestrictions.routeRestrictionsDetails
  42. ZAMAN KISITLAMALARI
    veya class.customTimeRestrictionsLabel
  43. object.ticketRestrictions.timeRestrictions
  44. DİĞER KISITLAMALAR
    veya class.customOtherRestrictionsLabel
  45. object.ticketRestrictions.otherRestrictions
  46. MAKBUZ NUMARASI
    veya class.customPurchaseReceiptNumberLabel
  47. object.purchaseDetails.purchaseReceiptNumber
  48. SATIN ALMA TARİHİ
  49. object.purchaseDetails.purchaseDateTime
  50. HESAP KİMLİĞİ
  51. object.purchaseDetails.accountId
  52. ONAY KODU
    veya class.customConfirmationCodeLabel
  53. object.purchaseDetails.confirmationCode
  54. NOMİNAL DEĞER veya class.customPurchaseFaceValueLabel
  55. object.purchaseDetails.ticketCost.faceValue
  56. PRICE veya class.customPurchasePriceLabel
  57. object.purchaseDetails.ticketCost.purchasePrice
  58. İNDİRİM MESAJI
    veya class.customDiscountMessageLabel
  59. object.purchaseDetails.ticketCost.discountMessage
  60. class.imageModulesData[0].mainImage
  61. object.imageModulesData[0].mainImage
  62. class.messages[].header
  63. class.messages[].body
  64. object.messages[].header
  65. object.messages[].body
  66. class.textModulesData[0..9].header
  67. class.textModulesData[0..9].body
  68. object.textModulesData[0..9].header
  69. object.textModulesData[0..9].body
  70. class.linksModuleData.uris[].description
  71. object.linksModuleData.uris[].description

Web

Varsayılan kart şablonu düzen öğeleri ve konumları
  1. class.logo
  2. class.localizedIssuerName
    veya class.issuerName
  3. Kart başlığını göster
  4. KALKIŞ veya GEÇERLİLİK BAŞLANGICI
  5. object.ticketLeg.departureDateTime (tarih ve saat)
    veya object.validTimeInterval.start.date
  6. VARIŞ ZAMANI veya GEÇERLİLİK SÜRESİ
  7. object.ticketLeg.arrivalDateTime (yalnızca saat)
    veya object.validTimeInterval.end.date
  8. PASSENGER
  9. object.passengerNames
  10. CARRIAGE veya class.customCarriageLabel
  11. object.ticketLeg.carriage
  12. COACH veya class.customCoachLabel
  13. object.ticketLeg.ticketSeat.coach
  14. SEAT veya class.customSeatLabel
  15. object.ticketLeg.ticketSeat.seat
    veya object.ticketLeg.ticketSeat.seatAssignment
  16. object.barcode.type ve object.barcode.value
    veya object.ticketNumber
  17. object.barcode.alternateText
  18. object.hexBackgroundColor
    veya class.hexBackgroundColor
  19. Çok ayaklı seyahat planı
  20. BİLET NUMARASI veya class.customTicketNumberLabel
  21. object.ticketNumber
  22. BİLET DURUMU
  23. object.ticketStatus veya object.customTicketStatus
  24. KALKIŞ
  25. object.ticketLeg.departureDateTime
  26. VARIŞ
  27. object.ticketLeg.arrivalDateTime
  28. ÜCRET veya class.customFareNameLabel
  29. object.ticketLeg.fareName
  30. PLATFORM veya class.customPlatformLabel
  31. object.ticketLeg.platform
  32. ZONE veya class.customZoneLabel
  33. object.ticketLeg.zone
  34. uçuş kabin sınıfı veya class.customFareClassLabel
  35. object.ticketLeg.ticketSeat.fareClass
    veya object.ticketLeg.ticketSeat.customFareClass
  36. İNDİRİM KATEGORİSİ
    veya class.customConcessionCategoryLabel
  37. object.concessionCategory
    veya object.customConcessionCategory
  38. ROTA KISITLAMALARI
    veya class.customRouteRestrictionsLabel
  39. object.ticketRestrictions.routeRestrictions
  40. ROTA KISITLAMASI AYRINTILARI
    veya class.customRouteRestrictionsDetailsLabel
  41. object.ticketRestrictions.routeRestrictionsDetails
  42. ZAMAN KISITLAMALARI
    veya class.customTimeRestrictionsLabel
  43. object.ticketRestrictions.timeRestrictions
  44. DİĞER KISITLAMALAR
    veya class.customOtherRestrictionsLabel
  45. object.ticketRestrictions.otherRestrictions
  46. MAKBUZ NUMARASI
    veya class.customPurchaseReceiptNumberLabel
  47. object.purchaseDetails.purchaseReceiptNumber
  48. SATIN ALMA TARİHİ
  49. object.purchaseDetails.purchaseDateTime
  50. HESAP KİMLİĞİ
  51. object.purchaseDetails.accountId
  52. ONAY KODU
    veya class.customConfirmationCodeLabel
  53. object.purchaseDetails.confirmationCode
  54. NOMİNAL DEĞER veya class.customPurchaseFaceValueLabel
  55. object.purchaseDetails.ticketCost.faceValue
  56. PRICE veya class.customPurchasePriceLabel
  57. object.purchaseDetails.ticketCost.purchasePrice
  58. İNDİRİM MESAJI
    veya class.customDiscountMessageLabel
  59. object.purchaseDetails.ticketCost.discountMessage
  60. class.imageModulesData[0].mainImage
  61. object.imageModulesData[0].mainImage
  62. class.messages[].header
  63. class.messages[].body
  64. object.messages[].header
  65. object.messages[].body
  66. class.textModulesData[0..9].header
  67. class.textModulesData[0..9].body
  68. object.textModulesData[0..9].header
  69. object.textModulesData[0..9].body
  70. class.linksModuleData.uris[].description
  71. object.linksModuleData.uris[].description

Resim modülü alanları için sınıftan yalnızca bir resim modülü alanı ve nesneden yalnızca bir resim modülü alanı gösteririz. Her iki düzeyde de birden fazla resim modülü alanına ihtiyacınız varsa varsayılan şablonu geçersiz kılın.

Metin modülü alanları için sınıftan en fazla 20 metin modülü alanı ve nesneden 20 metin modülü alanı gösteririz. Alanlar, dizide tanımlandıkları sırayla gösterilir. Her iki düzeyde de 20'den fazla metin modülü alanına ihtiyacınız varsa varsayılan şablonu geçersiz kılın.

Mesajlar için sınıftan en fazla 20 mesaj ve nesneden 20 mesaj gösteririz. Mesajların sırası konusunda garanti vermeyiz. Her iki düzeyde de 20'den fazla mesaja ihtiyacınız varsa veya herhangi bir sipariş için garanti istiyorsanız varsayılan şablonu geçersiz kılın.

Bağlantılar modülü alanı için tanımlayabileceğiniz URI sayısıyla ilgili bir sınır yoktur. URI'ler her düzey (sınıf veya nesne) için aşağıdaki sırayla gruplandırılmış olarak gösterilir:

  1. Harita koordinatları
  2. Telefon numaraları
  3. E-posta adresleri
  4. Web sayfaları

Her grup için URI'lar, dizide tanımlandıkları sırayla gösterilir. Farklı bir sıralamaya ihtiyacınız varsa varsayılan şablonu geçersiz kılın.

Varsayılan liste şablonu düzen öğeleri ve konumları
  1. (object.ticketLeg.originName
      ve object.ticketLeg.destinationName)
    veya (object.ticketLeg.originStationCode
      ve object.ticketLeg.destinationStationCode)
    veya object.ticketLeg.originName
  2. object.ticketLeg.departureDateTime
    veya object.validTimeInterval.end.date
  3. class.logo
  4. object.hexBackgroundColor
    veya class.hexBackgroundColor
  5. <# passes> (gruplandırılmış)