نموذج بطاقة صعود الطائرة

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

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

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

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

Android

نظرة عامة على أقسام وتصاميم نماذج البطاقات

الويب

نظرة عامة على أقسام وتصاميم نماذج البطاقات

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

Android

عناصر تصميم عنوان البطاقة ومواضع الحقول عنوان البطاقة التلقائي
  1. class.flightHeader.carrier.airlineLogo
  2. class.flightHeader.carrier.airlineName
    أو class.localizedIssuerName
    أو class.issuerName
  3. (class.flightHeader.carrier.carrierIataCode
    أو class.flightHeader.carrier.carrierIcaoCode)
    وclass.flightHeader.flightNumber
  4. مدينة المطار (مستمدّة من class.origin.airportIataCode)
    أو class.origin.airportNameOverride
  5. class.origin.airportIataCode
  6. مدينة المطار (مستمدّة من class.destination.airportIataCode)
    أو class.destination.airportNameOverride
  7. class.destination.airportIataCode
  8. object.hexBackgroundColor
    أو class.hexBackgroundColor

عنوان بطاقة الشعار العريض
  1. class.flightHeader.wideAirlineLogo
  2. (class.flightHeader.carrier.carrierIataCode
    أو class.flightHeader.carrier.carrierIcaoCode)
    وclass.flightHeader.flightNumber
  3. مدينة المطار (مستمدّة من class.origin.airportIataCode)
    أو class.origin.airportNameOverride
  4. class.origin.airportIataCode
  5. مدينة المطار (مستمدّة من class.destination.airportIataCode)
    أو class.destination.airportNameOverride
  6. class.destination.airportIataCode
  7. object.hexBackgroundColor
    أو class.hexBackgroundColor

الويب

عناصر تصميم عنوان البطاقة ومواضع الحقول عنوان البطاقة التلقائي
  1. class.flightHeader.carrier.airlineLogo
  2. class.flightHeader.carrier.airlineName
    أو class.localizedIssuerName
    أو class.issuerName
  3. (class.flightHeader.carrier.carrierIataCode
    أو class.flightHeader.carrier.carrierIcaoCode)
    وclass.flightHeader.flightNumber
  4. مدينة المطار (مستمدّة من class.origin.airportIataCode)
    أو class.origin.airportNameOverride
  5. class.origin.airportIataCode
  6. مدينة المطار (مستمدّة من class.destination.airportIataCode)
    أو class.destination.airportNameOverride
  7. class.destination.airportIataCode
  8. object.hexBackgroundColor
    أو class.hexBackgroundColor

عنوان بطاقة الشعار العريض
  1. class.flightHeader.wideAirlineLogo
  2. (class.flightHeader.carrier.carrierIataCode
    أو class.flightHeader.carrier.carrierIcaoCode)
    وclass.flightHeader.flightNumber
  3. مدينة المطار (مستمدّة من class.origin.airportIataCode)
    أو class.origin.airportNameOverride
  4. class.origin.airportIataCode
  5. مدينة المطار (مستمدّة من class.destination.airportIataCode)
    أو class.destination.airportNameOverride
  6. class.destination.airportIataCode
  7. object.hexBackgroundColor
    أو class.hexBackgroundColor

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

إذا لم يتم ضبط class.origin.airportNameOverride أو class.destination.airportNameOverride، سيتم تلقائيًا ملء اسم مدينة المطار بالمدينة المرتبطة برمز الاتحاد الدولي للنقل الجوي في class.origin.airportIataCode وclass.destination.airportIataCode على التوالي.

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

اتّبِع إرشادات صورة الشعار العريض عند إنشاء شعار عريض للرأس من أجل عرض صورتك على البطاقات بشكل مثالي.

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

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.reservationInfo.confirmationCode
  4. object.barcode.alternateText
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

الويب

عناصر وتنسيقات تخطيط الرمز الشريطي للبطاقة
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type وobject.barcode.value
    أو object.reservationInfo.confirmationCode
  4. object.barcode.alternateText
  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.localScheduledDepartureDateTime
      (التاريخ فقط) (مجمّعة)
    أو class.classTemplateInfo.listTemplateOverride
      .secondRowOption.fields[]
  3. class.flightHeader.carrier.airlineLogo
  4. object.hexBackgroundColor
    أو class.hexBackgroundColor
  5. <# passes> (مجمّعة)

يُستخدَم قسم نموذج القائمة لاختيار الحقل الذي سيتم عرضه في طريقة عرض "البطاقات" في تطبيق "محفظة 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
    

تنشئ التعليمة البرمجية بطاقة باستخدام عرض نموذج القائمة التالي:

مثال على إلغاء
                                                                           قائمة.

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

مراجع الحقول

تُستخدَم مراجع الحقول في أجزاء مختلفة من النموذج بالشكل 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.flightHeader.carrier.airlineLogo
  2. class.flightHeader.carrier.airlineName
    أو class.localizedIssuerName
    أو class.issuerName
  3. class.origin.airportIataCode
  4. class.destination.airportIataCode
  5. مدينة المطار (مستمدّة من class.origin.airportIataCode)
    أو class.origin.airportNameOverride
  6. مدينة المطار (مستمدّة من class.destination.airportIataCode)
    أو class.destination.airportNameOverride
  7. (class.flightHeader.carrier.carrierIataCode
    أو class.flightHeader.carrier.carrierIcaoCode)
    وclass.flightHeader.flightNumber
  8. object.securityProgramLogo
  9. object.boardingAndSeatingInfo.boardingPrivilegeImage
  10. object.barcode.type وobject.barcode.value
    أو object.reservationInfo.confirmationCode
  11. object.barcode.alternateText
  12. class.flightHeader.carrier.airlineAllianceLogo
  13. PASSENGER
  14. object.passengerName
  15. ZONE (القيمة التلقائية) أو GROUP (يعتمد على
    class.boardingAndSeatingPolicy.boardingPolicy)
  16. سيات
  17. object.boardingAndSeatingInfo.boardingGroup و
  18. object.boardingAndSeatingInfo.seatNumber
    أو object.boardingAndSeatingInfo.seatAssignment
  19. TERMINAL
  20. GATE
  21. class.origin.terminal
  22. class.origin.gate
  23. BOARDING
  24. class.localBoardingDateTime
  25. CABIN (القيمة التلقائية) أو CLASS أو TIER (يعتمد على
    class.boardingAndSeatingPolicy.SeatClassPolicy)
  26. object.boardingAndSeatingInfo.SeatClass
  27. المغادرة
  28. class.localScheduledDepartureDateTime
  29. object.hexBackgroundColor
    أو class.hexBackgroundColor
  30. object.heroImage
    أو class.heroImage
  31. رقم التأكيد
  32. object.reservationInfo.confirmationCode
  33. رقم المسافر الدائم
  34. object.reservationInfo.frequentFlyerInfo.frequentFlyerNumber
    وobject.reservationInfo.frequentFlyerInfo.frequentFlyerProgramName
  35. وقت الوصول المجدوَل
  36. class.localScheduledArrivalDateTime
  37. class.messages[].header
  38. class.messages[].body
  39. object.messages[].header
  40. object.messages[].body
  41. class.textModulesData[0..9].header
  42. class.textModulesData[0..9].body
  43. object.textModulesData[0..9].header
  44. object.textModulesData[0..9].body
  45. class.linksModuleData.uris[].description
  46. object.linksModuleData.uris[].description

الويب

عناصر وتنسيقات نموذج البطاقة التلقائي
  1. class.flightHeader.carrier.airlineLogo
  2. class.flightHeader.carrier.airlineName
    أو class.localizedIssuerName
    أو class.issuerName
  3. class.origin.airportIataCode
  4. class.destination.airportIataCode
  5. مدينة المطار (مستمدّة من class.origin.airportIataCode)
    أو class.origin.airportNameOverride
  6. مدينة المطار (مستمدّة من class.destination.airportIataCode)
    أو class.destination.airportNameOverride
  7. (class.flightHeader.carrier.carrierIataCode
    أو class.flightHeader.carrier.carrierIcaoCode)
    وclass.flightHeader.flightNumber
  8. object.securityProgramLogo
  9. object.boardingAndSeatingInfo.boardingPrivilegeImage
  10. object.barcode.type وobject.barcode.value
    أو object.reservationInfo.confirmationCode
  11. object.barcode.alternateText
  12. class.flightHeader.carrier.airlineAllianceLogo
  13. PASSENGER
  14. object.passengerName
  15. ZONE (القيمة التلقائية) أو GROUP (يعتمد على
    class.boardingAndSeatingPolicy.boardingPolicy)
  16. سيات
  17. object.boardingAndSeatingInfo.boardingGroup و
  18. object.boardingAndSeatingInfo.seatNumber
    أو object.boardingAndSeatingInfo.seatAssignment
  19. TERMINAL
  20. GATE
  21. class.origin.terminal
  22. class.origin.gate
  23. BOARDING
  24. class.localBoardingDateTime
  25. CABIN (القيمة التلقائية) أو CLASS أو TIER (يعتمد على
    class.boardingAndSeatingPolicy.SeatClassPolicy)
  26. object.boardingAndSeatingInfo.SeatClass
  27. المغادرة
  28. class.localScheduledDepartureDateTime
  29. object.hexBackgroundColor
    أو class.hexBackgroundColor
  30. object.heroImage
    أو class.heroImage
  31. رقم التأكيد
  32. object.reservationInfo.confirmationCode
  33. رقم المسافر الدائم
  34. object.reservationInfo.frequentFlyerInfo.frequentFlyerNumber
    وobject.reservationInfo.frequentFlyerInfo.frequentFlyerProgramName
  35. وقت الوصول المجدوَل
  36. class.localScheduledArrivalDateTime
  37. class.messages[].header
  38. class.messages[].body
  39. object.messages[].header
  40. object.messages[].body
  41. class.textModulesData[0..9].header
  42. class.textModulesData[0..9].body
  43. object.textModulesData[0..9].header
  44. object.textModulesData[0..9].body
  45. class.linksModuleData.uris[].description
  46. object.linksModuleData.uris[].description

بشكلٍ تلقائي، يعرض القسم السفلي أيضًا object.boardingAndSeatingInfo.boardingGroup وobject.boardingAndSeatingInfo.seatClass وobject.boardingAndSeatingInfo.seatNumber إذا تم تجاهل قسم البطاقة ولم تعُد هذه الحقول متوفّرة في قسم البطاقة.

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

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

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

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

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

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

عناصر وتنسيقات تخطيط نموذج القائمة التلقائي
  1. class.origin.airportIataCode
    وclass.destination.airportIataCode
  2. class.localScheduledDepartureDateTime
    (التاريخ فقط)
  3. class.flightHeader.carrier.airlineLogo
  4. object.hexBackgroundColor
    أو class.hexBackgroundColor
  5. <# passes> (مجمّعة)