وفاداری از رندر قالب پشتیبانی میکند. اگر هیچ قالبی تعریف نشود، از قالب پیشفرض استفاده میشود.
تعریف الگو
یک الگوی گذر (pass template) در سطح کلاس تعریف میشود و برای نمایش هر شیء مرتبط با کلاس استفاده میشود. این الگو تعریف میکند که کدام فیلدها در بخشهای مختلف گذر نمایش داده شوند.
قالب به بخشهای زیر تقسیم میشود:
اندروید
وب
عنوان کارت
اندروید
عنوان پیشفرض کارت
عنوان کارت با لوگوی عریض
|
وب
عنوان پیشفرض کارت
عنوان کارت با لوگوی عریض
|
بخش عنوان کارت، لوگو، نام صادرکننده و عنوان برنامه را نمایش میدهد. نه ارجاعات فیلد مورد استفاده برای پر کردن آنها و نه موقعیت آنها قابل تغییر نیست.
وقتی فیلد لوگوی عریض تنظیم میشود، در دستگاههای اندروید، سربرگ پیشفرض قالب که شامل لوگو و نام صادرکننده است، با لوگوی عریض جایگزین میشود.
هنگام ایجاد لوگوی هدر عریض خود ، دستورالعملهای تصویر لوگوی عریض را دنبال کنید تا تصویر شما به طور بهینه در صفحات شما نمایش داده شود.
الگوی کارت
اندروید
وب

بخش قالب کارت برای نمایش ردیفهای اضافی استفاده میشود. این ردیفها میتوانند شامل فیلدهای داده ساختاریافته مبتنی بر متن یا فیلدهای ماژول متنی باشند.
شما میتوانید تعداد ردیفهایی را که تعداد اشیاء موجود در لیست 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 وجود داشته باشد، میتواند بعد از اولین ردیف یا اگر فقط یک ردیف وجود داشته باشد، بالای ردیف ظاهر شود.
بارکد کارت
اندروید
|
وب
|
بخش بارکد کارت برای نمایش متن یا تصاویر اضافی قبل و بعد از بارکد استفاده میشود. هیچ یک از فیلدهای این بخش الزامی نیستند.
سه انتخابگر فیلد وجود دارد که میتوانند برای تعریف دو فیلد کنار هم قبل و بعد از بارکد استفاده شوند. این فیلدها بدون برچسب نمایش داده میشوند و میتوانند فیلدهای داده ساختاریافته مبتنی بر متن، فیلدهای ماژول متنی یا فیلدهای ماژول تصویری باشند. اگر از تصاویر استفاده میکنید، باید از دستورالعملهای برند پیروی کنند.
بارکد توسط یک نوع و یک مقدار تعریف میشود. برای فهرستی از انواع بارکد پشتیبانیشده، به مرجع مراجعه کنید. علاوه بر این، میتوان متنی را درست زیر بارکد نشان داد. این متن میتواند اسکن بارکدها را آسانتر کند، از جمله کاربردهای دیگر آن.
نمونه کد زیر نحوهی بازنویسی بخش بارکد یک گذر را برای نمایش تصویر بالای بارکد نشان میدهد:
پایتون
#... 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[] است. این آیتمها میتوانند شامل هر نوع فیلد داده ساختاریافته، فیلدهای ماژول متن، فیلدهای ماژول لینک، فیلدهای ماژول تصویر یا پیامها باشند.
هر آیتم میتواند به صورت یک انتخابگر فیلد ( .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
این کد یک مسیر با فرمت بخش پایینی زیر ایجاد میکند:

اگر یک آیتم خالی باشد، نمایش داده نمیشود. برای جزئیات بیشتر، به بخش «مرجعهای فیلد» مراجعه کنید.
اگر بخش پایین را لغو نکنید، لیست پیشفرض فیلدهای مرجع به ترتیب پیشفرض نمایش داده میشود. برای اطلاعات بیشتر، به الگوی پیشفرض مراجعه کنید.
الگوی فهرست
|
بخش الگوی فهرست برای انتخاب فیلدی که در نمای «گذرنامهها»ی برنامهی کیف پول گوگل نمایش داده شود، استفاده میشود. گذرنامه در فهرست با لوگو، رنگ پسزمینه و سه ردیف نمایش داده میشود.
نمونه کد زیر نحوهی بازنویسی الگوی فهرست یک گذر را برای نمایش فیلد تاریخ انقضای شیء یک گذر در ردیف اول الگوی فهرست نشان میدهد:
پایتون
#... 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]
در این حالت، اولین آیتم در بخش جزئیاتِ گذر، دومین تصویر اعلامشده در شیء است. در حالی که، دومین آیتم در بخش جزئیاتِ گذر، اولین تصویر اعلامشده در شیء است.
قالب پیشفرض
اندروید
|
وب
|
برای فیلدهای ماژول تصویر، ما یک و فقط یک فیلد ماژول تصویر از کلاس و یک و فقط یک فیلد ماژول تصویر از شیء را نشان میدهیم. اگر در هر سطح به بیش از یک فیلد ماژول تصویر نیاز دارید، الگوی پیشفرض را لغو کنید.
برای فیلدهای ماژول متنی، ما فقط حداکثر ۲۰ فیلد ماژول متنی از کلاس و ۲۰ فیلد ماژول متنی از شیء را نشان میدهیم. فیلدها به همان ترتیبی که در آرایه تعریف شدهاند نمایش داده میشوند. اگر به بیش از ۲۰ فیلد ماژول متنی در هر سطح نیاز دارید، الگوی پیشفرض را لغو کنید.
برای پیامها، ما فقط حداکثر ۲۰ پیام از کلاس و ۲۰ پیام از شیء را نشان میدهیم. ما ترتیب پیامها را تضمین نمیکنیم. اگر به بیش از ۲۰ پیام در هر سطح یا تضمینی برای هر سفارشی نیاز دارید، الگوی پیشفرض را لغو کنید.
برای فیلد ماژول لینکها، هیچ محدودیتی در تعداد uriهایی که میتوانید تعریف کنید وجود ندارد. urisها به ترتیب زیر برای هر سطح (کلاس یا شیء) گروهبندی میشوند:
- مختصات نقشه
- شماره تلفنها
- آدرسهای ایمیل
- صفحات وب
برای هر گروه، آدرسهای اینترنتی (URI) به همان ترتیبی که در آرایه تعریف شدهاند، نمایش داده میشوند. اگر به ترتیب متفاوتی نیاز دارید، الگوی پیشفرض را لغو کنید.