אפשר להשתמש בכלי הבא כדי להתאים אישית את כרטיס מועדון הלקוחות ולעיין בקטעי הקוד שבהמשך.
כרטיסי מועדון לקוחות תומכים בעיבוד תבניות. אם לא הוגדרה תבנית, נעשה שימוש בתבנית ברירת המחדל.
הגדרת תבנית
תבנית כרטיס מוגדרת ברמת הכיתה ומשמשת להצגת כל אובייקט שמשויך לכיתה. התבנית קובעת אילו שדות יוצגו בקטעים שונים של הכרטיס.
התבנית מחולקת לסעיפים הבאים:
Android
דפדפן
שם הכרטיס
Android
|
|
דפדפן
|
|
בקטע של כותרת הכרטיס מוצגים הלוגו, שם המנפיק ושם התוכנית. לא ניתן לשנות את ההפניות לשדות ששימשו לאכלוס שלהן או את מיקוםן.
תבנית כרטיס
Android

דפדפן

הקטע של תבנית הכרטיס משמש להצגת שורות נוספות. השורות האלה יכולות לכלול שדות של נתונים מובְנים מבוססי-טקסט או שדות של מודולי טקסט.
אפשר לציין את מספר השורות שמגדירות את מספר האובייקטים ברשימה class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[]
. הרשימה צריכה לכלול לפחות רכיב אחד, ואנחנו ממליצים להשתמש
בשני רכיבים לכל היותר. כל רכיב חייב להיות אחד מהסוגים הבאים:
-
oneItem
, שמקבל פריט אחד:item
-
twoItems
, שמקבל שני פריטים:startItem
endItem
-
threeItems
, שמקבל שלושה פריטים:startItem
middleItem
endItem
אפשר להגדיר כל פריט כבורר שדות אחד (.firstValue
), כ-2 בוררי שדות (.firstValue
ו-.secondValue
), או כפריט מוגדר מראש (.predefinedItem
). הערכים בשדה שנבחר והתוויות שלהם יופיעו. כשמגדירים שני בוררי שדות, הערכים של השדות שנבחרו מוצגים עם מפריד "/". הכלל הזה
חל גם על התוויות של השדות שנבחרו. פריטים שהוגדרו מראש משמשים
להגדרת עיבוד מורכב יותר.
דוגמת הקוד הבאה מראה איך לעקוף את קטעי השורה של כרטיס התבנית כדי לציין שתי שורות. כל שורה מכילה שלושה פריטים שכל אחד מהם מפנה לשישה שדות מותאמים אישית של textModuleData
ברמת הכיתה, ואת הכותרות שלהם כתוויות:
Python
{ ... //Rest of class "textModulesData": [ { "header": "Label 1", "body": "Some info 1", "id": "myfield1" }, { "header": "Label 2", "body": "Some info 2", "id": "myfield2" }, { "header": "Label 3", "body": "Some info 3", "id": "myfield3" }, { "header": "Label 4", "body": "Some info 4", "id": "myfield4" }, { "header": "Label 5", "body": "Some info 5", "id": "myfield5" }, { "header": "Label 6", "body": "Some info 6", "id": "myfield6" } ], "classTemplateInfo": { "cardTemplateOverride": { "cardRowTemplateInfos": [{ "threeItems": { "startItem": { "firstValue": { "fields": [{ "fieldPath": "class.textModulesData['myfield1']" }] } }, "middleItem": { "firstValue": { "fields": [{ "fieldPath": "class.textModulesData['myfield2']" }] } }, "endItem": { "firstValue": { "fields": [{ "fieldPath": "class.textModulesData['myfield3']" }] } }, } },{ "threeItems": { "startItem": { "firstValue": { "fields": [{ "fieldPath": "class.textModulesData['myfield4']" }] } }, "middleItem": { "firstValue": { "fields": [{ "fieldPath": "class.textModulesData['myfield5']" }] } }, "endItem": { "firstValue": { "fields": [{ "fieldPath": "class.textModulesData['myfield6']" }] } }, } }] } } }
Java
// Rest of class .setTextModulesData((new ArrayList<TextModuleData>() { { add((new TextModuleData()).setHeader("Label 1") .setBody("Some info 1") .setId("myfield1")); add((new TextModuleData()).setHeader("Label 2") .setBody("Some info 1") .setId("myfield2")); add((new TextModuleData()).setHeader("Label 3") .setBody("Some info 3") .setId("myfield3")); add((new TextModuleData()).setHeader("Label 4") .setBody("Some info 4") .setId("myfield4")); add((new TextModuleData()).setHeader("Label 5") .setBody("Some info 5") .setId("myfield5")); add((new TextModuleData()).setHeader("Label 6") .setBody("Some info 5") .setId("myfield6")); } })) .setClassTemplateInfo((new ClassTemplateInfo()) .setCardTemplateOverride((new CardTemplateOverride()) .setCardRowTemplateInfos(new ArrayList<CardRowTemplateInfo>() { { add((new CardRowTemplateInfo()).setThreeItems((new CardRowThreeItems()) .setStartItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){ { add((new FieldReference()).setFieldPath("class.textModulesData['myfield1']")); } }))) .setMiddleItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){ { add((new FieldReference()).setFieldPath("class.textModulesData['myfield2']")); } }))) .setEndItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){ { add((new FieldReference()).setFieldPath("class.textModulesData['myfield3']")); } }))) )); add((new CardRowTemplateInfo()).setThreeItems((new CardRowThreeItems()) .setStartItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){ { add((new FieldReference()).setFieldPath("class.textModulesData['myfield4']")); } }))) .setMiddleItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){ { add((new FieldReference()).setFieldPath("class.textModulesData['myfield5']")); } }))) .setEndItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){ { add((new FieldReference()).setFieldPath("class.textModulesData['myfield6']")); } }))) )); } })))
PHP
// Rest of class $textModulesData1 = new Google_Service_Walletobjects_TextModuleData(); $textModulesData1->setBody("Some info 1"); $textModulesData1->setHeader("Label 1"); $textModulesData1->setId("myfield1"); $textModulesData2 = new Google_Service_Walletobjects_TextModuleData(); $textModulesData2->setBody("Some info 2"); $textModulesData2->setHeader("Label 2"); $textModulesData2->setId("myfield2"); $textModulesData3 = new Google_Service_Walletobjects_TextModuleData(); $textModulesData3->setBody("Some info 3"); $textModulesData3->setHeader("Label 3"); $textModulesData3->setId("myfield3"); $textModulesData4 = new Google_Service_Walletobjects_TextModuleData(); $textModulesData4->setBody("Some info 4"); $textModulesData4->setHeader("Label 4"); $textModulesData4->setId("myfield4"); $textModulesData5 = new Google_Service_Walletobjects_TextModuleData(); $textModulesData5->setBody("Some info 5"); $textModulesData5->setHeader("Label 5"); $textModulesData5->setId("myfield5"); $textModulesData6 = new Google_Service_Walletobjects_TextModuleData(); $textModulesData6->setBody("Some info 6"); $textModulesData6->setHeader("Label 6"); $textModulesData6->setId("myfield6"); $textModulesDatas = array($textModulesData1, $textModulesData2, $textModulesData3, $textModulesData4, $textModulesData5, $textModulesData6); $startItemField = new Google_Service_Walletobjects_FieldReference(); $startItemField->setFieldPath("class.textModulesData['myfield1']"); $startItemFirstValue = new Google_Service_Walletobjects_FieldSelector(); $startItemFirstValue->setFields(array($startItemField)); $startItem = new Google_Service_Walletobjects_TemplateItem(); $startItem->setFirstValue($startItemFirstValue); $middleItemField = new Google_Service_Walletobjects_FieldReference(); $middleItemField->setFieldPath("class.textModulesData['myfield2']"); $middleItemFirstValue = new Google_Service_Walletobjects_FieldSelector(); $middleItemFirstValue->setFields(array($middleItemField)); $middleItem = new Google_Service_Walletobjects_TemplateItem(); $middleItem->setFirstValue($middleItemFirstValue); $endItemField = new Google_Service_Walletobjects_FieldReference(); $endItemField->setFieldPath("class.textModulesData['myfield3']"); $endItemFirstValue = new Google_Service_Walletobjects_FieldSelector(); $endItemFirstValue->setFields(array($endItemField)); $endItem = new Google_Service_Walletobjects_TemplateItem(); $endItem->setFirstValue($endItemFirstValue); $cardRowTemplate = new Google_Service_Walletobjects_CardRowThreeItems(); $cardRowTemplate->setStartItem($startItem); $cardRowTemplate->setMiddleItem($middleItem); $cardRowTemplate->setEndItem($endItem); $cardRowTemplateInfo1 = new Google_Service_Walletobjects_CardRowTemplateInfo(); $cardRowTemplateInfo1->setThreeItems($cardRowTemplate); $startItemField2 = new Google_Service_Walletobjects_FieldReference(); $startItemField2->setFieldPath("class.textModulesData['myfield4']"); $startItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector(); $startItemFirstValue2->setFields(array($startItemField2)); $startItem2 = new Google_Service_Walletobjects_TemplateItem(); $startItem2->setFirstValue($startItemFirstValue2); $middleItemField2 = new Google_Service_Walletobjects_FieldReference(); $middleItemField2->setFieldPath("class.textModulesData['myfield5']"); $middleItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector(); $middleItemFirstValue2->setFields(array($middleItemField2)); $middleItem2 = new Google_Service_Walletobjects_TemplateItem(); $middleItem2->setFirstValue($middleItemFirstValue2); $endItemField2 = new Google_Service_Walletobjects_FieldReference(); $endItemField2->setFieldPath("class.textModulesData['myfield6']"); $endItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector(); $endItemFirstValue2->setFields(array($endItemField2)); $endItem2 = new Google_Service_Walletobjects_TemplateItem(); $endItem2->setFirstValue($endItemFirstValue2); $cardRowTemplate2 = new Google_Service_Walletobjects_CardRowThreeItems(); $cardRowTemplate2->setStartItem($startItem2); $cardRowTemplate2->setMiddleItem($middleItem2); $cardRowTemplate2->setEndItem($endItem2); $cardRowTemplateInfo2 = new Google_Service_Walletobjects_CardRowTemplateInfo(); $cardRowTemplateInfo2->setThreeItems($cardRowTemplate2); $cardTemplateOverride = new Google_Service_Walletobjects_CardTemplateOverride(); $cardTemplateOverride->setCardRowTemplateInfos(array($cardRowTemplateInfo1, $cardRowTemplateInfo2)); $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo(); $classTemplateInfo->setCardTemplateOverride($cardTemplateOverride); $payload->setTextModulesData($textModulesDatas); $payload->setClassTemplateInfo($classTemplateInfo);
הקוד יוצר כרטיס בפורמט הבא של תבנית התבנית:

אם פריט ריק, הוא לא מוצג. פרטים נוספים זמינים במאמר הפניות לשדות. אם כל הפריטים בשורה ריקים, השורה לא תוצג. אם חלק מהפריטים בשורה, אבל לא כולם, מסודרים מחדש, הפריטים שאינם ריקים מסודרים מחדש ומוצגים כשורה עם פחות פריטים.
אם לא מבטלים את תבנית הכרטיס, נעשה שימוש במספר השורות המוגדר כברירת מחדל, במספר ברירת המחדל של הפריטים ובהפניות לשדות המוגדרים כברירת מחדל. מידע נוסף זמין במאמר תבנית ברירת מחדל.
אחרי שמגדירים תמונה ראשית, היא יכולה להופיע אחרי השורה הראשונה, אם יש בה כמה שורות ברשימה cardRowTemplateInfos
, או מעל לשורה, אם יש רק שורה אחת.
ברקוד של כרטיס
Android
|
|
דפדפן
|
|
הקטע של הברקוד בכרטיס משמש להצגת טקסט נוסף או תמונות מעל הברקוד ומתחתיו. אף אחד מהשדות בקטע זה אינו חובה.
יש שלושה בוררי שדות שאפשר להשתמש בהם כדי להגדיר שני שדות זה לצד זה ואחד מעל הברקוד. השדות האלה מוצגים ללא תוויות והם יכולים להיות שדות של נתונים מובְנים (מבוססי טקסט), שדות של מודולי טקסט או שדות של מודולי תמונות. אם בחרת להשתמש בתמונות, הן צריכות לעמוד בהנחיות המותג.
הברקוד מוגדר על ידי סוג וערך. רשימה של סוגי הברקודים הנתמכים זמינה בחומר עזר. בנוסף, יכול להיות שטקסט יוצג מתחת לברקוד. בטקסט הזה קל יותר לסרוק ברקודים, בין שאר השימושים.
דוגמת הקוד הבאה מראה איך לעקוף את קטע הברקוד של כרטיס, כדי להציג תמונה מעל הברקוד:
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[]
. הפריטים יכולים להכיל כל סוג של שדות נתונים מובְנים, שדות של מודולי טקסט, שדות של מודול הקישור, שדות של מודולי תמונות או הודעות.
אפשר להגדיר כל פריט כבורר שדות יחיד (.firstValue
),
כ-2 בוררי שדות (.firstValue
ו-.secondValue
), או כ
פריט מוגדר מראש (.predefinedItem
). הערכים של השדה שנבחר והתוויות המתאימות לו יוצגו. כשמגדירים שני בוררי שדות, הערכים של השדות שנבחרו מוצגים עם מפריד "/". אותו עיקרון חל על התוויות של השדות שנבחרו. פריטים שהוגדרו מראש משמשים להגדרת עיבוד מורכב יותר. שדות מודול התמונה מוצגים ברוחב מלא ללא תווית.
דוגמת הקוד הבאה מראה איך לעקוף את קטע הפרטים של הכרטיס כך שיוצג שדה linksModuleData
יחיד עם התווית שלו:
Python
//... rest of class "linksModuleData": { "uris": [ { "uri": "http://maps.google.com/", "description": "Nearby Locations", "id":"mylink" } ] }, "classTemplateInfo": { "detailsTemplateOverride": { "detailsItemInfos": [ { "item":{ "firstValue": { "fields": [{ "fieldPath": "class.linksModuleData.uris['mylink']" }] } } } ] } } //... rest of class
Java
//... rest of class .setLinksModuleData((new ArrayList<LinksModuleData>() { { add((new LinksModuleData()).setDescription("Nearby Locations") .setUri("http://maps.google.com/") .setId("mylink")); })) .setClassTemplateInfo((new ClassTemplateInfo()) .setDetailsTemplateOverride((new DetailsTemplateOverride()) .setDetailsItemInfos(new ArrayList<DetailsItemInfo>(){ { add((new DetailsItemInfo()) .setItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){ { add((new FieldReference()).setFieldPath("class.linksModuleData.uris['mylink']")); } })))); } })) //... rest of class
PHP
//... rest of class building $locationUri = new Google_Service_Walletobjects_Uri(); $locationUri->setUri("http://maps.google.com/"); $locationUri->setDescription("Nearby Locations"); $locationUri->setId("mylink"); $linksModuleData = new Google_Service_Walletobjects_LinksModuleData(); $linksModuleData->setUris(array($locationUri)); $detailItemFieldReference = new Google_Service_Walletobjects_FieldReference(); $detailItemFieldReference->setFieldPath("class.linksModuleData.uris['mylink']"); $detailItemFieldSelector = new Google_Service_Walletobjects_FieldSelector(); $detailItemFieldSelector->setFields(array($detailItemFieldReference)); $detailItem = new Google_Service_Walletobjects_TemplateItem(); $detailItem->setFirstValue($detailItemFieldSelector); $detailsItemInfo = new Google_Service_Walletobjects_DetailsItemInfo(); $detailsItemInfo->setItem($detailItem); $cardDetailsTemplateOverride = new Google_Service_Walletobjects_DetailsTemplateOverride(); $cardDetailsTemplateOverride->setDetailsItemInfos(array($detailsItemInfo)); $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo(); $classTemplateInfo->setDetailsTemplateOverride($cardDetailsTemplateOverride); $payload->setClassTemplateInfo($classTemplateInfo); $payload->setLinksModuleData($linksModuleData); //... rest of class
הקוד יוצר אישור בפורמט הבא של קטע הפרטים:

אם פריט ריק, הוא לא מוצג. פרטים נוספים זמינים במאמר הפניות לשדות.
אם לא מבטלים את תבנית הפרטים, מוצגת רשימת ברירת המחדל של שדות ההפניה לפי סדר ברירת המחדל. מידע נוסף זמין במאמר תבנית ברירת מחדל.
תבנית רשימה
|
|
בקטע 'תבנית רשימה' אפשר לבחור איזה שדה להציג בתצוגה 'כרטיסים' של אפליקציית Google Wallet. הכרטיס מיוצג ברשימה עם הלוגו, צבע הרקע ושלוש השורות.
דוגמת הקוד הבאה מראה איך לעקוף את תבנית הרשימה של כרטיס כדי להציג את השדה של תאריך התפוגה של אובייקט הכרטיס היחיד בשורה הראשונה של תבנית הרשימה:
Python
#... rest of class definition "classTemplateInfo": { "listTemplateOverride":{ "firstRowOption": { "fieldOption":{ "fields": [{ "fieldPath": "object.validTimeInterval.end" }] } } } } }
Java
//... rest of class .setClassTemplateInfo((new ClassTemplateInfo()) .setListTemplateOverride((new ListTemplateOverride()) .setFirstRowOption((new FirstRowOption()) .setFieldOption((new FieldSelector()).setFields(new ArrayList<FieldReference>(){ { add((new FieldReference()).setFieldPath("object.validTimeInterval.end")); } })))) //... rest of class
PHP
//... rest of class $fieldReference = new Google_Service_Walletobjects_FieldReference(); $fieldReference->setFieldPath("object.validTimeInterval.end"); $fieldOption = new Google_Service_Walletobjects_FieldSelector(); $fieldOption->setFields(array($fieldReference)); $firstRowOption = new Google_Service_Walletobjects_FirstRowOption(); $firstRowOption->setFieldOption($fieldOption); $listTemplateOverride = new Google_Service_Walletobjects_ListTemplateOverride(); $listTemplateOverride->setFirstRowOption($firstRowOption); $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo(); $classTemplateInfo->setListTemplateOverride($listTemplateOverride); $payload->setClassTemplateInfo($classTemplateInfo); //... rest of class
הקוד יוצר אישור עם העיצוב הבא של תבנית הרשימה:

אפשר להגדיר את שלוש השורות באמצעות בורר שדות. השדות מוצגים ללא תוויות.
תוויות
לכל השדות של הנתונים המובְנים יש תווית ש-Google מספקת. Google אחראית לספק תרגום לכל אחת מהתוויות האלה בכל השפות הנתמכות.
אפשר להתאים אישית חלק מהתוויות באמצעות
אחד מהשדות של class.custom<name_of_the_field>Label
. כאשר מבצעים התאמה אישית של תווית,
מוטלת עליך האחריות לספק תרגומים לתווית ספציפית בכל השפות
שבהן ברצונך לתמוך.
הפניות לשדות
הפניות לשדות משמשות בחלקים שונים של התבנית באמצעות הטופס class.classTemplateInfo.*.fields[]
. הפניית שדה מכילה רשימה של נתיבים לשדות נתונים מובנים, לשדות של מודולי טקסט, לשדות של מודול הקישור, לשדות של מודולי התמונות או להודעות.
לא כל סוגי הנתיבים מותרים בכל הפניות. לדוגמה, הפניות מסוימות של שדות מאפשרות רק נתיבים לשדות של נתונים מובְנים מבוססי-טקסט או לשדות של מודולים של טקסט. שדות מובְנים של טקסט הם שדות של נתונים מובְנים (string) – מחרוזת מסוג מותאם לשוק המקומי, מחרוזת מקומית, תאריך או כסף.
ניתן להשתמש ברשימה כדי ליישם לוגיקת גיבוי. פירוש הדבר הוא שאם הנתיב הראשון ברשימה מגיע לשדה ריק, תתבצע הערכה של הנתיב הבא. הלוגיקה של הגיבוי היא שמתמקדת בעיקר בשדות של נתונים מובְנים מבוססי-טקסט או בשדות של מודולי טקסט. אסור לשלב בין סוגים שונים של שדות באותה רשימה. מומלץ לנקוט משנה זהירות לגבי זהירות, ורק במצבים ספציפיים שבהם צפוי דפוס עקבי של שדות שקיימים באובייקטים מסוימים, אך לא באחרים. לרוב קל יותר ליצור כיתות נפרדות לתרחישים נפרדים.
אם כל הנתיבים ברשימת ההפניות לשדות מפנים לשדות ריקים, הפריט שמשתמש בהפניה לשדה לא יוצג. אם רוצים שהפריט תמיד יוצג בשדה הפניית שדה, צריך לוודא שלפחות נתיב אחד ריק. מומלץ להגדיר שדה לתו מיוחד, כמו '-', כדי לייצג ערך ריק, גם אם חלק מהשדות מאפשרים מחרוזות עם רווח בלבד.
כדי להפנות לשדה שמכיל רשימה, אפשר להשתמש באינדקס של השדה ברשימה. ברוב המקרים אפשר להשתמש במזהה עזר. פריטים ברשימה שניתן להפנות אליהם באמצעות מזהה כוללים את השדה .id
. אם אפשר, מומלץ להשתמש במזהה עזר באינדקס של השדה ברשימה.
לפניכם דוגמה להפניות לשדות שכלולים ברשימה.
object.imageModulesData[0].id = my-first-id
object.imageModulesData[1].id = my-second-id
class.detailsTemplateOverride.detailsItemInfos[0].item.firstValue.fields[0].fieldPath = object.imageModulesData[‘my-second-id’]
class.detailsTemplateOverride.detailsItemInfos[1].item.firstValue.fields[0].fieldPath = object.imageModulesData[0]
במקרה הזה, הפריט הראשון בקטע הפרטים של הכרטיס הוא התמונה השנייה שצוינה באובייקט. הפריט השני בקטע הפרטים של הכרטיס הוא התמונה הראשונה שהוצהרה באובייקט.
תבנית ברירת מחדל
Android
|
|
דפדפן
|
|
לשדות של מודולים של תמונות, אנחנו מציגים שדה אחד בלבד של מודול תמונה מהמחלקה ושדה אחד בלבד של מודול תמונה מהאובייקט. אם צריך יותר משדה אחד של מודול תמונה בכל אחת מהרמות, יש לבטל את תבנית ברירת המחדל.
לשדות של מודולי טקסט, אנחנו מציגים רק עד 10 שדות של מודולי טקסט מהכיתה ו-10 שדות מודול טקסט בלבד מהאובייקט. השדות מוצגים באותו סדר שבו הם הוגדרו במערך. אם דרושים לך יותר מ-10 שדות של מודול טקסט בכל אחת מהרמות, יש לעקוף את תבנית ברירת המחדל.
בהודעות, מוצגות רק עד 10 הודעות מהכיתה ו-10 הודעות בלבד מהאובייקט. אנחנו לא מבטיחים את סדר ההודעות. אם דרושות לך יותר מ-10 הודעות בכל רמה, או אחריות לכל הזמנה, אפשר לעקוף את תבנית ברירת המחדל.
בשדה המודול של הקישורים, אין הגבלה על מספר פריטי ה-URI שניתן להגדיר. URIs מסודרים לפי סדר הבא לכל רמה (מחלקה או אובייקט):
- קואורדינטות במפה
- מספרי טלפון
- כתובות אימייל
- דפי אינטרנט
לכל קבוצה, מזהי ה-URI מוצגים באותו הסדר שבו הם הוגדרו במערך. אם צריך סדר אחר, אפשר לשנות את תבנית ברירת המחדל.
|
|