نموذج الولاء

يمكنك استخدام الأداة التالية لتخصيص بطاقة الولاء والرجوع إلى مقتطفات الرمز أدناه.

تتيح لك بطاقات الولاء عرض النماذج. إذا لم يتم تحديد أي نموذج، سيتم استخدام النموذج التلقائي.

تعريف النموذج

يتم تحديد نموذج البطاقة على مستوى الصف ويُستخدَم لعرض أي عنصر مرتبط بالصف. يحدّد النموذج الحقول المطلوب عرضها في أقسام مختلفة من البطاقة.

ينقسم النموذج إلى الأقسام التالية:

Android

نظرة عامة على النموذج

محتوى مخصص للويب

نظرة عامة على النموذج

عنوان البطاقة

Android

عناصر عنوان البطاقة
  1. class.programLogo
  2. class.localizedIssuerName
    أو class.issuerName
  3. class.localizedProgramName
    أو class.programName
  4. class.hexBackgroundColor

محتوى مخصص للويب

عناصر عنوان البطاقة
  1. class.programLogo
  2. class.localizedIssuerName
    أو class.issuerName
  3. class.localizedProgramName
    أو class.programName
  4. class.hexBackgroundColor

يعرض قسم عنوان البطاقة الشعار واسم جهة الإصدار وعنوان البرنامج. ولا يمكن تغيير مراجع الحقول المُستخدَمة لتعبئة هذه الحقول أو موضعها.

نموذج البطاقة

Android

نظرة عامة على النموذج

محتوى مخصص للويب

نظرة عامة على النموذج

يتم استخدام قسم نموذج البطاقة لعرض صفوف إضافية. يمكن أن تحتوي هذه الصفوف على حقول البيانات المنظَّمة المستندة إلى النص أو حقول الوحدات النصية.

يمكنك تحديد عدد الصفوف التي تحدّد عدد العناصر في قائمة class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[]. وتتطلّب القائمة عنصرًا واحدًا على الأقل، لذلك ننصح باستخدام عنصرين على الأكثر. يجب أن يكون كل عنصر من الأنواع التالية:

  • oneItem، يقبل عنصرًا واحدًا:
    • item
  • twoItems، يقبل عنصرين:
    • startItem
    • endItem
  • threeItems، يقبل ثلاثة عناصر:
    • startItem
    • middleItem
    • endItem

يمكن تحديد كل عنصر إما لمحدد حقل واحد (.firstValue) أو محددين للحقل (.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

عناصر الرمز الشريطي للبطاقة
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type وobject.barcode.value
    أو object.accountId
  4. object.barcode.alternateText
    أو object.accountId
    أو object.barcode.value
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail
  6. object.heroImage
    أو class.heroImage

محتوى مخصص للويب

عناصر الرمز الشريطي للبطاقة
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type وobject.barcode.value
    أو object.accountId
  4. object.barcode.alternateText
    أو object.accountId
    أو object.barcode.value
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

يُستخدم قسم الرمز الشريطي للبطاقة في عرض نص إضافي أو صور فوق الرمز الشريطي وأسفله. لا يلزم ملء أي حقل من الحقول الموجودة في هذا القسم.

تتوفّر ثلاثة محدّدات للحقول يمكن استخدامها لتحديد حقلَين متجاورَين فوق الرمز الشريطي وآخر فوق الرمز الشريطي. يتم عرض هذه الحقول بدون تصنيف ويمكن أن تكون إما حقول بيانات منظَّمة نصية أو حقول وحدات نصية أو حقول وحدات صور. في حال استخدام الصور، يجب أن تكون متوافقة مع إرشادات العلامة التجارية.

يتم تعريف الرمز الشريطي بنوع ونوع وقيمة. للحصول على قائمة بأنواع الرموز الشريطية المتوافقة، يمكنك الاطّلاع على المراجع. بالإضافة إلى ذلك، يمكن أن يظهر النص أسفل الرمز الشريطي مباشرةً. ويمكن أن يسهّل هذا النص فحص الرموز الشريطية من بين الاستخدامات الأخرى.

يعرض نموذج الرمز التالي كيفية إلغاء قسم الرمز الشريطي لإحدى البطاقات لعرض صورة فوق الرمز الشريطي:

لغة 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[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[3].item
  • ...

محتوى مخصص للويب

أقسام نموذج التفاصيل
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[3].item
  • ...

قسم نموذج التفاصيل هو قائمة بالعناصر class.classTemplateInfo.detailsTemplateOverride.detailsItemInfos[]. ويمكن أن تحتوي العناصر على أي نوع من حقول البيانات المنظَّمة أو حقول الوحدات النصية أو حقول وحدات الوصلات أو حقول وحدات الصور أو الرسائل.

يمكن تحديد كل عنصر على أنه محدِّد حقل واحد (.firstValue) أو محدِّدَي حقلَين (.firstValue و.secondValue) أو عنصر محدَّد مسبقًا (.predefinedItem). ويتم عرض كلٍ من قيم الحقول المحدَّدة والتصنيفات ذات الصلة. عند تعريف محدِّدَي الحقلين، يتم عرض قيم الحقول المحدَّدة بفاصل "/". وينطبق الأمر نفسه على تصنيفات الحقول المحدّدة. يتم استخدام العناصر المحددة مسبقًا لتحديد عرض أكثر تعقيدًا. يتم عرض حقول وحدة الصورة بكامل العرض بدون تصنيف.

يعرض نموذج الرمز التالي كيفية إلغاء قسم التفاصيل الخاص بالبطاقة من أجل عرض حقل linksModuleData واحد يحمل تصنيفه:

لغة 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
    

ينشئ الرمز تصريحًا بالتنسيق التالي في قسم التفاصيل:

مثال على إلغاء
                                                                             التفاصيل

وإذا كان هناك عنصر فارغ، لن يتم عرضه. لمزيد من التفاصيل، راجِع مراجع الحقول.

إذا لم تلغِ نموذج التفاصيل، سيتم عرض القائمة التلقائية لحقول المراجع بالترتيب التلقائي. ولمزيد من المعلومات، يمكنك الاطّلاع على النموذج التلقائي.

نموذج القائمة

سرد عناصر النموذج
  1. class.classTemplateInfo.listTemplateOverride
      .firstRowOption.fieldOption.fields[]
  2. class.classTemplateInfo.listTemplateOverride
      .secondRowOption.fields[]
  3. class.programLogo
  4. class.hexBackgroundColor

يتم استخدام قسم نموذج القائمة لاختيار الحقل الذي يتم عرضه في عرض "البطاقات" في تطبيق "محفظة Google". ويتم تمثيل البطاقة في القائمة مع الشعار ولون الخلفية وثلاثة صفوف.

يعرض نموذج الرمز التالي كيفية إلغاء نموذج القائمة لإحدى البطاقات لعرض حقل تاريخ انتهاء صلاحية عنصر واحد في الصف الأول من نموذج القائمة:

لغة 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[]. ويتضمّن مرجع الحقول قائمة بالمسارات إلى حقول البيانات المنظَّمة أو حقول الوحدات النصية أو حقول وحدات الوصلات أو حقول وحدات الصور أو الرسائل.

لا يُسمح ببعض أنواع المسارات في كل مرجع للحقول. على سبيل المثال، لا تسمح بعض مراجع الحقول إلا بالمسارات إلى حقول البيانات المنظَّمة المستندة إلى النص أو حقول الوحدات النصية. الحقول المنظَّمة المستندة إلى النص هي حقول بيانات منظَّمة من سلسلة النوع أو السلسلة المترجمة أو التاريخ أو المال.

ويمكن استخدام القائمة لتنفيذ منطق احتياطي. وهذا يعني أنه إذا تم تحويل المسار الأول في القائمة إلى حقل فارغ، يتم تقييم المسار التالي. يستهدف المنطق الاحتياطي حقول البيانات المنظَّمة المستندة إلى النص أو حقول الوحدات النصية. ولا تخلط بين أنواع مختلفة من الحقول في القائمة نفسها. يُرجى استخدام المنطق الاحتياطي بحذر وفي حالات محدّدة فقط عندما تتوقّع نمطًا ثابتًا من الحقول المتاحة في بعض الكائنات وليس غيرها. في أغلب الأحيان، يكون من الأسهل إنشاء صفوف منفصلة لحالات استخدام منفصلة.

إذا تم حل جميع المسارات في قائمة مراجع الحقول إلى حقول فارغة، لن يتم عرض العنصر الذي يستخدم مرجع الحقل. إذا أردت أن يكون العنصر الذي يستخدم مرجع الحقل موجودًا دائمًا، احرص على ألا يكون مسار واحد على الأقل فارغًا. ننصحك بضبط حقل على حرف خاص، مثل "-"، لتمثيل قيمة فارغة، حتى إذا كانت بعض الحقول تسمح بسلاسل نصية مع إضافة مسافة فقط.

للإشارة إلى حقل مضمّن في قائمة، يمكنك استخدام فهرس الحقل في القائمة، أو يمكنك في معظم الحالات استخدام معرّف مرجعي. تتضمّن عناصر القائمة التي يمكن الإشارة إليها برقم تعريف الحقل .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

عناصر النموذج الافتراضية
  1. class.programLogo
  2. class.localizedIssuerName
    أو class.issuerName
  3. class.localizedProgramName
    أو class.programName
  4. POINTS
    أو object.loyaltyPoints.localizedLabel
    أو object.loyaltyPoints.label
  5. object.loyaltyPoints.balance
  6. المكافآت
    أو object.secondaryLoyaltyPoints.localizedLabel
    أو object.secondaryLoyaltyPoints.label
  7. object.secondaryLoyaltyPoints.balance
  8. object.barcode.type وobject.barcode.value
    أو object.accountId
  9. object.barcode.alternateText
    أو object.accountId
    أو object.barcode.value
  10. object.heroImage
    أو class.heroImage
  11. class.hexBackgroundColor
  12. اسم العضو
    أو class.localizedAccountNameLabel
    أو class.accountNameLabel
  13. object.accountName
  14. رقم تعريف العضو
    أو class.localizedAccountIdLabel
    أو class.accountIdLabel
  15. object.accountId
  16. مستوى المكافآت
    أو class.localizedRewardsTierLabel
    أو class.rewardsTierLabel
  17. class.localizedRewardsTier
    أو class.rewardsTier
  18. طبقة المكافآت الثانية
    أو class.localizedSecondaryRewardsTierLabel
    أو class.secondaryRewardsTierLabel
  19. class.localizedSecondaryRewardsTier
    أو class.secondaryRewardsTier
  20. class.imageModulesData[0].mainImage
  21. object.imageModulesData[0].mainImage
  22. class.messages[].header
  23. class.messages[].body
  24. object.messages[].header
  25. object.messages[].body
  26. class.textModulesData[0..9].header
  27. class.textModulesData[0..9].body
  28. object.textModulesData[0..9].header
  29. object.textModulesData[0..9].body
  30. class.linksModuleData.uris[].description
  31. object.linksModuleData.uris[].description
  32. class.homepageUri

محتوى مخصص للويب

عناصر النموذج الافتراضية
  1. class.programLogo
  2. class.localizedIssuerName
    أو class.issuerName
  3. class.localizedProgramName
    أو class.programName
  4. POINTS
    أو object.loyaltyPoints.localizedLabel
    أو object.loyaltyPoints.label
  5. object.loyaltyPoints.balance
  6. المكافآت
    أو object.secondaryLoyaltyPoints.localizedLabel
    أو object.secondaryLoyaltyPoints.label
  7. object.secondaryLoyaltyPoints.balance
  8. object.barcode.type وobject.barcode.value
    أو object.accountId
  9. object.barcode.alternateText
    أو object.accountId
    أو object.barcode.value
  10. object.heroImage
    أو class.heroImage
  11. class.hexBackgroundColor
  12. اسم العضو
    أو class.localizedAccountNameLabel
    أو class.accountNameLabel
  13. object.accountName
  14. رقم تعريف العضو
    أو class.localizedAccountIdLabel
    أو class.accountIdLabel
  15. object.accountId
  16. مستوى المكافآت
    أو class.localizedRewardsTierLabel
    أو class.rewardsTierLabel
  17. class.localizedRewardsTier
    أو class.rewardsTier
  18. طبقة المكافآت الثانية
    أو class.localizedSecondaryRewardsTierLabel
    أو class.secondaryRewardsTierLabel
  19. class.localizedSecondaryRewardsTier
    أو class.secondaryRewardsTier
  20. class.imageModulesData[0].mainImage
  21. object.imageModulesData[0].mainImage
  22. class.messages[].header
  23. class.messages[].body
  24. object.messages[].header
  25. object.messages[].body
  26. class.textModulesData[0..9].header
  27. class.textModulesData[0..9].body
  28. object.textModulesData[0..9].header
  29. object.textModulesData[0..9].body
  30. class.linksModuleData.uris[].description
  31. object.linksModuleData.uris[].description
  32. class.homepageUri

بالنسبة إلى حقول وحدات الصور، نعرض حقلًا واحدًا وواحدًا فقط لوحدة الصورة من الصف وحقلًا واحدًا فقط لوحدة الصورة من العنصر. وإذا كنت بحاجة إلى أكثر من حقل واحد لوحدات الصور على أي مستوى، يمكنك إلغاء النموذج التلقائي.

بالنسبة إلى حقول الوحدات النصية، لا نعرض سوى 10 حقول وحدات نصية كحد أقصى من الصف و10 حقول وحدات نصية من العنصر. ويتم عرض الحقول بالترتيب نفسه الذي يتم تحديدها به في المصفوفة. إذا كنت بحاجة إلى أكثر من 10 حقول للوحدات النصية على أي مستوى، يمكنك إلغاء النموذج التلقائي.

بالنسبة إلى الرسائل، لا نعرض سوى 10 رسائل من الصف كحد أقصى و10 رسائل من العنصر. نحن لا نضمن ترتيب الرسائل. وإذا كنت بحاجة إلى أكثر من 10 رسائل على أي مستوى، أو ضمانًا لأي طلبات، يمكنك إلغاء النموذج التلقائي.

بالنسبة إلى حقل وحدة الوصلات، ليس هناك حد لعدد معرفات الموارد المنتظمة (URI) التي يمكنك تحديدها. يتم تقليص أوريس مجمّعة بالترتيب التالي لكل مستوى (الفئة أو العنصر):

  1. إحداثيات الخريطة
  2. أرقام الهاتف
  3. عناوين البريد الإلكتروني
  4. صفحات الويب

بالنسبة إلى كل مجموعة، يتم عرض معرفات الموارد المنتظمة (URI) بالترتيب نفسه الذي يتم تحديده به في المصفوفة. وإذا كنت بحاجة إلى ترتيب مختلف، يمكنك إلغاء النموذج التلقائي.

عناصر نموذج القائمة التلقائية
  1. class.localizedIssuerName
    أو class.issuerName
  2. class.localizedProgramName
    أو class.programName
  3. class.programLogo
  4. class.hexBackgroundColor