การแสดงผลเทมเพลตบัตรข้อเสนอที่รองรับ หากไม่ได้กำหนดเทมเพลตไว้ ระบบจะใช้เทมเพลตเริ่มต้น
คำจำกัดความของเทมเพลต
เทมเพลตบัตรจะกำหนดที่ระดับคลาสและใช้เพื่อแสดงออบเจ็กต์ที่เชื่อมโยงกับคลาส เทมเพลตจะกำหนดช่องที่จะแสดงในส่วนต่างๆ ของบัตร
เทมเพลตแบ่งออกเป็นส่วนต่างๆ ดังนี้
Android
เว็บ
ชื่อการ์ด
Android
|
|
ชื่อบัตรเริ่มต้น
ชื่อการ์ดโลโก้แบบกว้าง
|
เว็บ
|
|
ชื่อบัตรเริ่มต้น
ชื่อการ์ดโลโก้แบบกว้าง
|
ส่วนชื่อบัตรจะแสดงโลโก้ ชื่อผู้ออกบัตร และ ชื่อข้อเสนอ ทั้งการอ้างอิงฟิลด์ที่ใช้ในการป้อนข้อมูลและตำแหน่งของฟิลด์ไม่สามารถเปลี่ยนแปลงได้
เมื่อตั้งค่าช่องโลโก้แบบกว้าง ในอุปกรณ์ Android ระบบจะแทนที่ส่วนหัวของเทมเพลตเริ่มต้นที่มีโลโก้และชื่อผู้ออกบัตรด้วยโลโก้แบบกว้าง
ปฏิบัติตาม หลักเกณฑ์เกี่ยวกับรูปภาพโลโก้แบบกว้างเมื่อสร้างโลโก้ส่วนหัวแบบกว้างเพื่อแสดงรูปภาพในบัตรอย่างเหมาะสมที่สุด
เทมเพลตการ์ด
Android
เว็บ
ส่วนเทมเพลตการ์ดใช้เพื่อแสดงแถวเพิ่มเติม แถวเหล่านี้อาจมีฟิลด์ Structured Data แบบข้อความหรือฟิลด์โมดูลข้อความ
คุณระบุจำนวนแถวที่กำหนดจำนวนออบเจ็กต์ใน
class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[]
รายการได้ รายการต้องมีองค์ประกอบอย่างน้อย 1 รายการ และเราขอแนะนำให้ใช้ไม่เกิน 2 รายการ แต่ละองค์ประกอบต้องเป็นประเภทใดประเภทหนึ่งต่อไปนี้
-
oneItemซึ่งยอมรับรายการเดียวitem
-
twoItemsซึ่งยอมรับรายการ 2 รายการstartItemendItem
-
threeItemsซึ่งยอมรับรายการ 3 รายการ ได้แก่startItemmiddleItemendItem
แต่ละรายการสามารถกำหนดเป็นตัวเลือกฟิลด์เดียว
(.firstValue), ตัวเลือกฟิลด์ 2 รายการ (.firstValue และ
.secondValue) หรือรายการที่กำหนดไว้ล่วงหน้า
(.predefinedItem) ทั้งค่าของฟิลด์ที่เลือกและป้ายกำกับ
ที่เกี่ยวข้องจะแสดงขึ้น เมื่อกำหนดตัวเลือกฟิลด์ 2 รายการ ระบบจะแสดงค่าของฟิลด์ที่เลือกโดยมีตัวคั่นเป็น "/" เช่นเดียวกับป้ายกำกับของฟิลด์ที่เลือก ใช้รายการที่กำหนดไว้ล่วงหน้าเพื่อ
กำหนดการแสดงผลที่ซับซ้อนมากขึ้น
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีลบล้างส่วนแถวการ์ดของเทมเพลตการ์ด
เพื่อระบุ 2 แถว แต่ละแถวจะมี 3 รายการ ซึ่งแต่ละรายการจะอ้างอิง
textModuleDataฟิลด์ที่กำหนดเองระดับชั้นเรียน 6 รายการและส่วนหัวของฟิลด์เหล่านั้น
เป็นป้ายกำกับ
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
|
|
|
เว็บ
|
|
|
ส่วนบาร์โค้ดของการ์ดใช้เพื่อแสดงข้อความหรือรูปภาพเพิ่มเติมก่อนหน้าและหลังบาร์โค้ด คุณไม่จำเป็นต้องกรอกข้อมูลในฟิลด์ใดๆ ในส่วนนี้
ตัวเลือกฟิลด์ 3 รายการที่ใช้กำหนดฟิลด์ 2 รายการที่อยู่ข้างกัน ก่อนและ 1 รายการหลังบาร์โค้ด โดยจะแสดงโดยไม่มีป้ายกำกับและอาจเป็น ฟิลด์ Structured Data ที่อิงตามข้อความ ฟิลด์โมดูลข้อความ หรือฟิลด์โมดูลรูปภาพ หากคุณ ใช้รูปภาพ รูปภาพเหล่านั้นควรเป็นไปตามหลักเกณฑ์การใช้แบรนด์
บาร์โค้ดจะกำหนดโดยประเภทและค่า ดูรายการประเภทบาร์โค้ดที่รองรับได้ที่ข้อมูลอ้างอิง นอกจากนี้ ข้อความยังแสดงใต้บาร์โค้ดได้ด้วย ข้อความนี้จะช่วยให้สแกนบาร์โค้ดได้ง่ายขึ้น รวมถึงการใช้งานอื่นๆ
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีลบล้างส่วนบาร์โค้ดของบัตรเพื่อแสดง รูปภาพเหนือบาร์โค้ด
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[] โดยรายการอาจมี ฟิลด์ Structured Data ฟิลด์โมดูลข้อความ ฟิลด์โมดูลลิงก์ ฟิลด์โมดูลรูปภาพ หรือข้อความ
แต่ละรายการสามารถกำหนดเป็นตัวเลือกฟิลด์เดียว (.firstValue)
ตัวเลือกฟิลด์ 2 รายการ (.firstValue และ .secondValue) หรือ
รายการที่กำหนดไว้ล่วงหน้า (.predefinedItem) ระบบจะแสดงทั้งค่าของฟิลด์ที่เลือกและป้ายกำกับที่เกี่ยวข้อง
เมื่อกำหนดตัวเลือกฟิลด์ 2 รายการ ระบบจะแสดงค่าของฟิลด์ที่เลือกโดยมีตัวคั่นเป็น "/" เช่นเดียวกับป้ายกำกับของฟิลด์ที่เลือก ระบบจะใช้รายการที่กำหนดไว้ล่วงหน้าเพื่อกำหนดการแสดงผลที่ซับซ้อนมากขึ้น ฟิลด์โมดูลรูปภาพ
จะแสดงแบบเต็มความกว้างโดยไม่มีป้ายกำกับ
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีลบล้างส่วนล่างของบัตรเพื่อแสดงฟิลด์ linksModuleData รายการเดียวพร้อมป้ายกำกับ
Python
//... rest of class "linksModuleData": { "uris": [ { "uri": "http://maps.google.com/", "description": "Nearby Locations", "id":"mylink" } ] }, "classTemplateInfo": { "detailsTemplateOverride": { "detailsItemInfos": [ { "item":{ "firstValue": { "fields": [{ "fieldPath": "class.linksModuleData.uris['mylink']" }] } } } ] } } //... rest of class
Java
//... rest of class .setLinksModuleData((new ArrayList<LinksModuleData>() { { add((new LinksModuleData()).setDescription("Nearby Locations") .setUri("http://maps.google.com/") .setId("mylink")); })) .setClassTemplateInfo((new ClassTemplateInfo()) .setDetailsTemplateOverride((new DetailsTemplateOverride()) .setDetailsItemInfos(new ArrayList<DetailsItemInfo>(){ { add((new DetailsItemInfo()) .setItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){ { add((new FieldReference()).setFieldPath("class.linksModuleData.uris['mylink']")); } })))); } })) //... rest of class
PHP
//... rest of class building $locationUri = new Google_Service_Walletobjects_Uri(); $locationUri->setUri("http://maps.google.com/"); $locationUri->setDescription("Nearby Locations"); $locationUri->setId("mylink"); $linksModuleData = new Google_Service_Walletobjects_LinksModuleData(); $linksModuleData->setUris(array($locationUri)); $detailItemFieldReference = new Google_Service_Walletobjects_FieldReference(); $detailItemFieldReference->setFieldPath("class.linksModuleData.uris['mylink']"); $detailItemFieldSelector = new Google_Service_Walletobjects_FieldSelector(); $detailItemFieldSelector->setFields(array($detailItemFieldReference)); $detailItem = new Google_Service_Walletobjects_TemplateItem(); $detailItem->setFirstValue($detailItemFieldSelector); $detailsItemInfo = new Google_Service_Walletobjects_DetailsItemInfo(); $detailsItemInfo->setItem($detailItem); $cardDetailsTemplateOverride = new Google_Service_Walletobjects_DetailsTemplateOverride(); $cardDetailsTemplateOverride->setDetailsItemInfos(array($detailsItemInfo)); $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo(); $classTemplateInfo->setDetailsTemplateOverride($cardDetailsTemplateOverride); $payload->setClassTemplateInfo($classTemplateInfo); $payload->setLinksModuleData($linksModuleData); //... rest of class
โค้ดจะสร้างบัตรที่มีรูปแบบส่วนล่างดังนี้
หากรายการว่างเปล่า ระบบจะไม่แสดงรายการนั้น ดูรายละเอียดเพิ่มเติมได้ที่ การอ้างอิงฟิลด์
หากไม่ลบล้างส่วนล่าง ระบบจะแสดงรายการฟิลด์อ้างอิงเริ่มต้นใน ลำดับเริ่มต้น ดูข้อมูลเพิ่มเติมได้ที่เทมเพลตเริ่มต้น
เทมเพลตรายการ
|
|
|
ส่วนเทมเพลตรายการใช้เพื่อเลือกฟิลด์ที่จะแสดงในมุมมอง "บัตร" ของ แอป Google Wallet บัตรจะแสดงในรายการพร้อมโลโก้ สีพื้นหลัง และ 3 แถว
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีลบล้างเทมเพลตรายการของบัตรเพื่อแสดงฟิลด์วันที่หมดอายุของออบเจ็กต์ บัตรเดียวในแถวแรกของเทมเพลตรายการ
Python
#... rest of class definition "classTemplateInfo": { "listTemplateOverride":{ "firstRowOption": { "fieldOption":{ "fields": [{ "fieldPath": "object.validTimeInterval.end" }] } } } } }
Java
//... rest of class .setClassTemplateInfo((new ClassTemplateInfo()) .setListTemplateOverride((new ListTemplateOverride()) .setFirstRowOption((new FirstRowOption()) .setFieldOption((new FieldSelector()).setFields(new ArrayList<FieldReference>(){ { add((new FieldReference()).setFieldPath("object.validTimeInterval.end")); } })))) //... rest of class
PHP
//... rest of class $fieldReference = new Google_Service_Walletobjects_FieldReference(); $fieldReference->setFieldPath("object.validTimeInterval.end"); $fieldOption = new Google_Service_Walletobjects_FieldSelector(); $fieldOption->setFields(array($fieldReference)); $firstRowOption = new Google_Service_Walletobjects_FirstRowOption(); $firstRowOption->setFieldOption($fieldOption); $listTemplateOverride = new Google_Service_Walletobjects_ListTemplateOverride(); $listTemplateOverride->setFirstRowOption($firstRowOption); $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo(); $classTemplateInfo->setListTemplateOverride($listTemplateOverride); $payload->setClassTemplateInfo($classTemplateInfo); //... rest of class
โค้ดจะสร้างบัตรที่มีการแสดงผลเทมเพลตรายการต่อไปนี้
คุณกำหนด 3 แถวได้ด้วยตัวเลือกฟิลด์ ฟิลด์จะแสดงโดยไม่มีป้ายกำกับ
ป้ายกำกับ
ฟิลด์ Structured Data ทั้งหมดมีป้ายกำกับที่ Google จัดให้ Google มีหน้าที่ จัดหาคำแปลสำหรับป้ายกำกับแต่ละรายการในภาษาที่รองรับทั้งหมด
คุณปรับแต่งป้ายกำกับบางรายการเหล่านี้ได้โดยใช้ช่อง class.custom<name_of_the_field>Label ช่องใดช่องหนึ่ง เมื่อปรับแต่งป้ายกำกับ
คุณจะต้องรับผิดชอบในการแปลป้ายกำกับนั้นๆ ในทุกภาษา
ที่คุณต้องการรองรับ
การอ้างอิงฟิลด์
การอ้างอิงฟิลด์จะใช้ในส่วนต่างๆ ของเทมเพลตในรูปแบบ class.classTemplateInfo.*.fields[] การอ้างอิงฟิลด์มีรายการ
เส้นทางไปยังฟิลด์ Structured Data, ฟิลด์โมดูลข้อความ, ฟิลด์โมดูลลิงก์, ฟิลด์โมดูลรูปภาพ
หรือข้อความ
ระบบไม่อนุญาตเส้นทางบางประเภทในการอ้างอิงฟิลด์บางรายการ เช่น การอ้างอิงฟิลด์บางรายการ อนุญาตเฉพาะเส้นทางไปยังฟิลด์ Structured Data แบบข้อความหรือฟิลด์โมดูลข้อความ ฟิลด์ที่มีโครงสร้างแบบข้อความเป็นฟิลด์ Structured Data ประเภทสตริง สตริงที่แปลแล้ว วันที่ หรือเงิน
คุณใช้รายการนี้เพื่อใช้ตรรกะสำรองได้ ซึ่งหมายความว่าหากเส้นทางแรกใน รายการแสดงผลเป็นช่องว่าง ระบบจะประเมินเส้นทางถัดไป ตรรกะสำรองมีเป้าหมายหลักอยู่ที่ฟิลด์ Structured Data ที่เป็นข้อความหรือฟิลด์โมดูลข้อความ อย่านำฟิลด์ประเภทต่างๆ มาผสมกันในรายการเดียวกัน โปรดใช้ตรรกะสำรองด้วยความระมัดระวังและใช้เฉพาะ ในสถานการณ์ที่เฉพาะเจาะจงเมื่อคุณคาดหวังรูปแบบฟิลด์ที่สอดคล้องกันซึ่งมีอยู่ในออบเจ็กต์บางรายการ แต่ไม่มีอยู่ในออบเจ็กต์อื่นๆ ส่วนใหญ่แล้ว การสร้างชั้นเรียนแยกต่างหากสำหรับ กรณีการใช้งานที่แยกกันจะง่ายกว่า
หากเส้นทางทั้งหมดในรายการการอ้างอิงฟิลด์เปลี่ยนเป็นฟิลด์ว่าง ระบบจะไม่แสดงรายการที่ใช้การอ้างอิงฟิลด์ หากต้องการให้รายการที่ใช้การอ้างอิงฟิลด์ แสดงอยู่เสมอ ให้ตรวจสอบว่าเส้นทางอย่างน้อย 1 เส้นทางไม่ว่างเปล่า เราขอแนะนำให้คุณ ตั้งค่าฟิลด์เป็นอักขระพิเศษ เช่น "-" เพื่อแสดงค่า Null แม้ว่าบางฟิลด์จะอนุญาตสตริงที่มีเพียงช่องว่างก็ตาม
หากต้องการอ้างอิงฟิลด์ที่อยู่ในรายการ คุณสามารถใช้ดัชนีของฟิลด์ในรายการ หรือใช้รหัสอ้างอิงในกรณีส่วนใหญ่ รายการในรายการที่อ้างอิงได้
ตามรหัสจะมีช่อง .id เราขอแนะนำให้คุณใช้รหัสอ้างอิงแทนดัชนี
ของฟิลด์ในรายการเมื่อมี
ต่อไปนี้คือตัวอย่างวิธีอ้างอิงฟิลด์ที่อยู่ในรายการ
object.imageModulesData[0].id = my-first-idobject.imageModulesData[1].id = my-second-idclass.detailsTemplateOverride.detailsItemInfos[0].item.firstValue.fields[0].fieldPath = object.imageModulesData[‘my-second-id’]class.detailsTemplateOverride.detailsItemInfos[1].item.firstValue.fields[0].fieldPath = object.imageModulesData[0]
ในกรณีนี้ รายการแรกในส่วนรายละเอียดของบัตรคือรูปภาพที่ 2 ที่ประกาศ ในออบเจ็กต์ ส่วนรายการที่ 2 ในส่วนรายละเอียดของบัตรคือรูปภาพแรก ที่ประกาศในออบเจ็กต์
เทมเพลตเริ่มต้น
Android
|
|
|
เว็บ
|
|
|
สำหรับฟิลด์โมดูลรูปภาพ เราจะแสดงฟิลด์โมดูลรูปภาพจากคลาสเพียง 1 รายการและฟิลด์โมดูลรูปภาพจากออบเจ็กต์เพียง 1 รายการ หากต้องการฟิลด์โมดูลรูปภาพมากกว่า 1 รายการที่ ระดับใดก็ตาม ให้ลบล้างเทมเพลตเริ่มต้น
สำหรับฟิลด์โมดูลข้อความ เราจะแสดงฟิลด์โมดูลข้อความจากชั้นเรียนและฟิลด์โมดูลข้อความจากออบเจ็กต์สูงสุด 20 รายการ โดยช่องจะแสดงตามลำดับเดียวกับที่กำหนดไว้ในอาร์เรย์ หากต้องการฟิลด์โมดูลข้อความมากกว่า 20 รายการในระดับใดระดับหนึ่ง ให้ลบล้างเทมเพลตเริ่มต้น
สำหรับข้อความ เราจะแสดงข้อความจากชั้นเรียนและข้อความจาก ออบเจ็กต์สูงสุด 20 รายการเท่านั้น เราไม่รับประกันลำดับของข้อความ หากต้องการข้อความมากกว่า 20 ข้อความในระดับใดระดับหนึ่ง หรือต้องการการรับประกันสำหรับคำสั่งซื้อใดๆ ให้ลบล้างเทมเพลตเริ่มต้น
สำหรับฟิลด์โมดูลลิงก์ คุณกำหนด URI ได้ไม่จำกัดจำนวน ระบบจะแสดง URI โดยจัดกลุ่มตามลำดับต่อไปนี้สำหรับแต่ละระดับ (คลาสหรือออบเจ็กต์)
- พิกัดแผนที่
- หมายเลขโทรศัพท์
- ที่อยู่อีเมล
- หน้าเว็บ
สำหรับแต่ละกลุ่ม ระบบจะแสดง URI ตามลำดับเดียวกันกับที่กำหนดไว้ในอาร์เรย์ หากต้องการจัดเรียงแตกต่างออกไป ให้ลบล้างเทมเพลตเริ่มต้น
|
|
|