يوفر spatie/schema-org
منشئًا بطلاقة لجميع أنواع Schema.org وخصائصها. يتم إنشاء الكود الموجود في src
من ملف معايير JSON-LD الخاص بـ Schema.org، لذا فهو يوفر كائنات وطرقًا للمفردات الأساسية بأكملها. يتم أيضًا توثيق الفئات والأساليب بشكل كامل كمرجع سريع.
استخدم SpatieSchemaOrgSchema;$localBusiness = Schema::localBusiness() ->الاسم ("سباتي") ->البريد الإلكتروني ('[email protected]') ->contactPoint(Schema::contactPoint()->areaServed('Worldwide'));echo $localBusiness->toScript();
<script type="application/ld+json">{"@context": "https://schema.org"،@type": "LocalBusiness"، "name": "Spatie"، "البريد الإلكتروني": " [email protected]"، "contactPoint": {"@type": "ContactPoint"، "areaServed": "Worldwide"}}</script>
نحن نستثمر الكثير من الموارد في إنشاء أفضل الحزم مفتوحة المصدر في فئتها. يمكنك دعمنا عن طريق شراء أحد منتجاتنا المدفوعة.
نحن نقدر بشدة إرسالك لنا بطاقة بريدية من مسقط رأسك، مع ذكر الحزمة (الحزم) التي تستخدمها. ستجد عنواننا على صفحة الاتصال لدينا. ننشر جميع البطاقات البريدية المستلمة على جدار البطاقات البريدية الافتراضية لدينا.
يمكنك تثبيت الحزمة عبر الملحن:
يتطلب الملحن spatie/schema-org
يمكن إنشاء مثيل لجميع الأنواع من خلال فئة المصنع SpatieSchemaOrgSchema
، أو باستخدام الكلمة الأساسية new
.
$localBusiness = Schema::localBusiness()->name('Spatie');// يعادل:$localBusiness = new LocalBusiness();$localBusiness->name('Spatie');
تقبل جميع الأنواع أيضًا صفائف من نوع البيانات المتوقع، على سبيل المثال يقبل
sameAs
سلسلة أو مصفوفة من السلاسل.
تطبق جميع الأنواع أيضًا ArrayAccess
الخاص بـ SPL للوصول إلى الخصائص عبر تدوين المصفوفة:
$anotherLocalBusiness = new LocalBusiness();var_dump(isset($anotherLocalBusiness['name'])); // => false$anotherLocalBusiness['name'] = 'Spatie';var_dump(isset($anotherLocalBusiness['name'])); // => truevar_dump($anotherLocalBusiness['name']); // => 'Spatie'unset($anotherLocalBusiness['name']);var_dump(isset($anotherLocalBusiness['name'])); // => خطأ
يمكن تحويل الأنواع إلى مصفوفة أو تقديمها إلى برنامج نصي.
$localBusiness->toArray();echo $localBusiness->toScript();echo $localBusiness; // نفس مخرجات `toScript()`
بالإضافة إلى ذلك، يمكن تحويل جميع الأنواع إلى سلسلة JSON عادية بمجرد استدعاء json_encode()
مع الكائن الخاص بك:
صدى json_encode($localBusiness);
أوصي بإعادة التحقق من بياناتك المنظمة باستخدام أداة اختبار البيانات المنظمة من Google.
اعتبارًا من الإصدار 1.6.0، أصبحت جميع أنواع التعداد الفرعية متاحة كفئات ذات ثوابت.
Schema::book()->bookFormat(SpatieSchemaOrgBookFormatType::Hardcover);
لا توجد وثائق API كاملة للأنواع والخصائص. يمكنك الرجوع إلى المصدر أو إلى موقع schema.org.
إذا كنت لا ترغب في كسر سلسلة كائن مخطط كبير، فيمكنك استخدام التابع if
لتعديل المخطط بشكل مشروط.
استخدم SpatieSchemaOrgLocalBusiness;استخدام SpatieSchemaOrgSchema;$business = ['name' => 'Spatie'];$localBusiness = Schema::localBusiness() ->الاسم($business['name']) ->if(isset($business['email'])، الوظيفة (LocalBusiness $schema) use ($business) {$schema->email($business['email']); });
اعتبارًا من الإصدار 2.6.0، تم استبدال مفتاح identifier
بـ @id
لمعرفات السلسلة البسيطة. ويرجع ذلك إلى تعريف بناء جملة ld+json
.
تحتوي جميع صيغ schema.org بالفعل على تمثيل مدمج لعناوين URI وعناوين URL، على سبيل المثال في Microdata 'itemid'، في RDFa 1.1، 'resource'، في JSON-LD، '@id'.
- schema.org/docs // PR#102 // PR#157
إذا كنت بحاجة إلى تعيين خاصية مخصصة، فيمكنك استخدام التابع setProperty
.
$localBusiness->setProperty('foo', 'bar');
إذا كنت بحاجة إلى استرداد خاصية، يمكنك استخدام طريقة getProperty
. يمكنك بشكل اختياري تمرير معلمة ثانية لتوفير قيمة افتراضية.
$localBusiness->getProperty('name'); // 'Spatie'$localBusiness->getProperty('bar'); // null$localBusiness->getProperty('bar', 'baz'); // "باز"
يمكن استرجاع جميع الخصائص كمصفوفة باستخدام طريقة getProperties
.
$localBusiness->getProperties(); // ['الاسم' => 'سباتي'، ...]
يمكن تعيين خصائص متعددة مرة واحدة باستخدام طريقة addProperties
.
$localBusiness->addProperties(['name' => 'value', 'foo' => 'bar']);
يمكن استرداد السياق والنوع باستخدام أساليب getContext
و getType
.
$localBusiness->getContext(); // 'https://schema.org'$localBusiness->getType(); // "الأعمال المحلية"
يحتوي الرسم البياني على الكثير من الأساليب والأدوات المساعدة - الطريقة الأكثر أمانًا وأبسط طريقة هي استخدام الأساليب المحملة بشكل زائد لفئة SpatieSchemaOrgSchema
نفسها. ستحصل هذه الأساليب على مثيل تم إنشاؤه بالفعل أو جديد للمخطط المطلوب.
$graph = new Graph();// إنشاء منتج ومؤسسة الارتباط المسبق$graph->product() ->الاسم ("منتجي الرائع") ->brand($graph->organization());// إخفاء المؤسسة من علامة البرنامج النصي التي تم إنشاؤها $graph->hide(SpatieSchemaOrgOrganization::class);// في مكان آخر املأ المنظمة$graph->organization() ->name('شركتي الرائعة');// عرض الرسم البياني للنص البرمجي tagecho $graph;
باستخدام هذه الأدوات، يكون الرسم البياني عبارة عن مجموعة من جميع المخططات المتاحة، ويمكن ربط هذه المخططات مع بعضها البعض ومنع عرض المخططات المساعدة في علامة البرنامج النصي.
في بعض الأحيان يتعين عليك تتبع عقد رسم بياني متعددة من نفس النوع - على سبيل المثال، عقد Person
متعددة لأشخاص مختلفين في مؤسستك. للقيام بذلك، يمكنك استخدام معرفات العقدة في مثيل الرسم البياني الخاص بك. إذا لم تقم بتوفير معرف، فسيتم استخدام المعرف default
للكلمة الرئيسية المحجوزة.
use SpatieSchemaOrgGraph;use SpatieSchemaOrgPerson;$graph = new Graph();// إضافة شخص باستخدام التسلسل$graph->person('freekmurze') ->الاسم المعطى('فريك') ->اسم العائلة('فان دير هيرتن') ->alternateName('freekmurze');// أضف شخصًا باستخدام الإغلاق$graph->person('sebastiandedeyne', function(Person $sebastian, Graph $graph): void {$sebastian->givenName('Sebastian') ->اسم العائلة ("دي داين") ->alternateName('sebastiandedeyne'); }); // أضف شخصًا باستخدام الإغلاق والمكالمة الثانية بنفس المعرف$graph->person('gummibeer', fn(Person $gummibeer) => $gummibeer->alternateName('gummibeer') );$graph->person('gummibeer') ->الاسم المعطى('توم') ->familyName('Witkowski');$graph->person('random')->name('Random Person');// إخفاء الشخص العشوائي من الرسم البياني$graph->hide(Person::class, 'random ');echo json_encode($graph);
{"@context":"https://schema.org"،@graph":[ {"@type": "Person"، "givenName": "Freek"، "familyName": "Van der Herten"، "alternateName": "freekmurze"}، {"@type": "Person"، "givenName": "Sebastian"، "familyName": "De Deyne"، "alternateName": "sebastiandedeyne"}، {"@type": "شخص"، "alternateName": "gummibeer"، "givenName": "Tom"، "familyName": "Witkowski"} ] }
يسمح Schema.org للكيانات متعددة الكتابة - لاستخدامها مع هذه الحزمة، يمكنك استخدام فئة MultiTypedEntity
- التي تعمل بشكل مشابه للرسم البياني.
$mte = new MultiTypedEntity();$mte->hotelRoom()->name('الجناح الرئاسي');$mte->product()->offers( المخطط::عرض() ->الاسم ("ليلة واحدة") ->السعر(100000.00) ->سعر العملة('USD') );$mte->product(function (المنتج $product) {$product->aggregateRating( المخطط::aggregateRating() ->التقييم الأفضل (5) ->التقييم الأسوأ (4) ); });echo json_encode($mte);
{ "@context":https://schema.org"، "@type":[ "HotelRoom"، "المنتج" ], "name": "الجناح الرئاسي"، "offers":{ "@type": "Offer"، "name": "ليلة واحدة"، "السعر":100000، "priceCurrency": "USD" }, "aggregateRating":{ "@type": "AggregateRating", "bestRating":5, "worstRating":4 } }
لا توجد قاعدة حقيقية حول كيفية دمج الخصائص. يستخدم فقط array_merge()
خلف الكواليس. لذا يجب عليك تجنب تعريف نفس الخاصية على أنواع مختلفة في MTE أو التأكد من أن جميع الخصائص تحمل نفس القيمة، فليس من المهم أي خاصية يتم استخدامها في النهاية.
النوع Float
غير متاح لأنه كلمة رئيسية محجوزة في PHP
نوع Physician
غير متاح لأنه يمتد إلى نوع من مواصفات الامتداد health
الرجاء مراجعة سجل التغيير لمزيد من المعلومات عما تغير مؤخرًا.
اختبار الملحن $
يرجى الاطلاع على المساهمة للحصول على التفاصيل.
إذا وجدت خطأً يتعلق بالأمان، فيرجى إرسال بريد إلكتروني إلى العنوان [email protected] بدلاً من استخدام أداة تعقب المشكلات.
أنت حر في استخدام هذه الحزمة، ولكن إذا وصلت إلى بيئة الإنتاج الخاصة بك، فإننا نقدر بشدة إرسالك لنا بطاقة بريدية من مسقط رأسك، مع ذكر الحزمة (الحزم) التي تستخدمها.
عنواننا هو: سباتي، كرويكسترات 22، 2018 أنتويرب، بلجيكا.
ننشر جميع البطاقات البريدية المستلمة على موقع شركتنا.
سيباستيان دي دين
توم ويتكوفسكي
جميع المساهمين
رخصة معهد ماساتشوستس للتكنولوجيا (MIT). يرجى الاطلاع على ملف الترخيص لمزيد من المعلومات.