مجموعة من مكتبات PHP التي تستخدم مفردات http://schema.org لتنفيذ وإخراج البيانات الجزئية أو دلالات RDFa Lite 1.1.
يتم استخدام هذه المكتبة في Joomla CMS منذ الإصدار 3.2 (وتسمى JMicrodata).
تم إنشاؤه خلال Google Summer of Code 2013 و2014.
تم تصميم المكتبة مع وضع هذه الأهداف في الاعتبار:
ملحن :
أضف ملف composer.json
الخاص بك:
{
"require" : {
"palex/ PHPStructuredData " : " * "
}
}
من المصدر :
قم بتشغيل git clone https://github.com/alexprut/PHPStructuredData.git
التحميل المباشر :
قم بتنزيل الإصدار الأخير من هنا
لنفترض أن لديك بالفعل مثيلًا لمكتبة Microdata أو RDFa. وتحتاج إلى إضافة دلالات البيانات الجزئية أو RDFa إلى HTML التالي الذي يعد جزءًا من مقالة ( على سبيل المثال $sd = new PHPStructuredData Microdata('Article');
).
<div <?php echo $ sd -> displayScope (); ?> >
<!-- Language -->
<?php echo $ sd -> content ( null , ' en-GB ' )-> property ( ' inLanguage ' )-> display ( ' meta ' , true ) ?>
<!-- Title -->
<?php echo $ sd -> content ( ' How to Tie a Reef Knot ' )-> property ( ' name ' )-> display (); ?>
<!-- Author-->
<span>
Written by <?php echo $ sd -> content ( ' John Doe ' )-> property ( ' author ' )-> fallback ( ' Person ' , ' name ' )-> display (); ?>
</span>
<!-- Date published -->
<?php echo $ sd -> content ( ' 1 January 2014 ' , ' 2014-01-01T00:00:00+00:00 ' )-> property ( ' datePublished ' )-> display (); ?>
<!-- Content -->
<?php echo $ sd -> content ( ' Lorem ipsum dolor sit amet... ' )-> property ( ' articleBody ' )-> display (); ?>
<div>
ستعرض مكتبة Microdata
:
< div itemscope itemtype =' https://schema.org/Article ' >
<!-- Language -->
< meta itemprop =' inLanguage ' content =' en-GB ' />
<!-- Title -->
< span itemprop =' name ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span itemprop =' author ' itemscope itemtype =' https://schema.org/Person ' >
< span itemprop =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta itemprop =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
< span itemprop =' articleBody ' >
Lorem ipsum dolor sit amet...
</ span >
< div >
ستعرض مكتبة RDFa
:
< div vocab =' https://schema.org ' typeof =' Article ' >
<!-- Language -->
< meta property =' inLanguage ' content =' en-GB ' />
<!-- Title -->
< span property =' name ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span property =' author ' vocab =' https://schema.org ' typeof =' Person ' >
< span property =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta property =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
< span property =' articleBody ' >
Lorem ipsum dolor sit amet...
</ span >
< div >
بدلاً من ذلك، إذا قررت تغيير النوع الحالي ( على سبيل المثال $sd->setType('Review');
).
ستعرض مكتبة Microdata
:
< div itemscope itemtype =' https://schema.org/Review ' >
<!-- Language -->
< meta itemprop =' inLanguage ' content =' en-GB ' />
<!-- Title -->
< span itemprop =' name ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span itemscope itemtype =' https://schema.org/Person ' >
< span itemprop =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta itemprop =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
Lorem ipsum dolor sit amet...
< div >
ستعرض مكتبة RDFa
:
< div vocab =' https://schema.org ' typeof =' Review ' >
<!-- Language -->
< meta property =' inLanguage ' content =' en-GB ' />
<!-- Title -->
< span property =' name ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span vocab =' https://schema.org ' typeof =' Person ' >
< span property =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta property =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
Lorem ipsum dolor sit amet...
< div >
كما ترى تراجعات John Doe
لنوع الشخص ، ولا يوجد فقدان للمعلومات، حتى لو كان النوع الحالي لا يحتوي على خاصية مؤلف فإنه سيعرض معلومات مهمة للأجهزة، محركات البحث تعرف أن هناك شخص John Doe
.
بدلاً من ذلك، إذا قررت عدم عرض دلالات البيانات الجزئية أو RDFa، فما عليك سوى تعطيل مخرجات المكتبة ( على سبيل المثال $sd->enable('false');
).
ستعرض كل من مكتبة Microdata
و RDFa
ما يلي:
< div >
<!-- Language -->
<!-- Title -->
How to Tie a Reef Knot
<!-- Author-->
< span >
Written by John Doe
</ span >
<!-- Date published -->
1 January 2014
<!-- Content -->
Lorem ipsum dolor sit amet...
< div >
حاليًا، لا تدعم مكتبة RDFa
و Microdata
عمليات احتياطية متعددة.
إذا كنت تريد إبقاء عروضك منفصلة عن المنطق، فإن ParserPlugin
عبارة عن فئة PHP لتحليل علامات HTML وتحويل سمات data-*
HTML5 إلى دلالات Microdata أو RDFa Lite 1.1 المنسقة بشكل صحيح.
تعد سمات data-*
جديدة في HTML5، فهي تمنحنا القدرة على تضمين سمات بيانات مخصصة في جميع عناصر HTML. لذا، إذا قمت بتعطيل إخراج المكتبة، فسيتم التحقق من صحة HTML. اللاحقة الافتراضية التي ستبحث عنها المكتبة هي data-sd
، حيث يشير sd إلى البيانات المنظمة، ولكن يمكنك تسجيل أكثر من لاحقة مخصصة.
يحدد النوع المخطط الذي سيتم استخدامه للترميز التالي. يجب أن يحتوي النوع دائمًا على الحرف الأول الكبير ليتم تفسيره بشكل صحيح. إذا كان النوع مخططًا صالحًا، فسيتم تحديث النطاق العام للصفحة من هذه النقطة فصاعدًا إلى هذا المخطط. سيستبدل المكون الإضافي علامة البيانات بـ itemscope itemtype='https://schema.org/Type'
في حالة دلالات البيانات الجزئية أو vocab='https://schema.org' typeof='Type'
في حالة RDFa Lite 1.1 دلالات.
< div data-sd =" Article " >
< p > This is my article </ p >
</ div >
سيتم إخراج هذا باستخدام دلالات Microdata
على النحو التالي:
< div itemscope itemtype =" http://schema.org/Article " >
< p > This is my article </ p >
</ div >
أو باستخدام دلالات RDFa
على النحو التالي:
< div vocab =" http://schema.org " typeof =" Article " >
< p > This is my article </ p >
</ div >
بمجرد الإعلان عن المخطط، فإن الخطوة التالية هي الإعلان عن الخصائص الفردية - شرح المحتوى وإعطائه معنى دلاليًا.
يجب أن تحتوي الخاصية دائمًا على الحرف الأول كحرف صغير حتى يتم تفسيرها بشكل صحيح. إذا تبين أن الخاصية جزء من المخطط الحالي، فسيستبدل البرنامج الإضافي علامة البيانات بـ itemprop='property'
في حالة دلالات البيانات الجزئية أو property='property'
في حالة دلالات RDFa Lite 1.1. إذا لم يتم العثور على الخاصية لتكون خاصية صالحة للمخطط النشط، فسيتم تجاهلها وسيتم تحليل الخاصية التالية المتوفرة.
< div data-sd =" Article " >
< p data-sd =" articleBody " > This is my article </ p >
</ div >
سيتم إخراج هذا باستخدام دلالات Microdata
على النحو التالي:
< div itemscope itemtype =" http://schema.org/Article " >
< p itemprop =" articleBody " > This is my article </ p >
</ div >
أو باستخدام دلالات RDFa
على النحو التالي:
< div vocab =" http://schema.org " typeof =" Article " >
< p property =" articleBody " > This is my article </ p >
</ div >
في بعض الأحيان قد ترغب في الإشارة بوضوح إلى خاصية يجب استخدامها فقط عندما يكون مخطط معين نشطًا - على سبيل المثال، إذا كانت الخاصية تحتوي على خاصية معينة في مخطط واحد، والتي تسمى شيئًا مختلفًا في مخطط آخر.
من الممكن تحقيق ذلك باستخدام خاصية تعتمد على المخطط. يتم ذلك عن طريق استخدام مزيج بين النوع والخاصية ، مفصولين بنقطة. باختصار، إذا كان النطاق العام الحالي يساوي النوع وكانت الخاصية جزءًا من هذا النوع، فسيستبدل البرنامج الإضافي علامة البيانات بـ itemprop='property'
في حالة دلالات البيانات الجزئية أو property='property'
في حالة RDFa Lite 1.1.
< div data-sd =" Article " >
< p data-sd =" articleBody " > This is my article </ p >
< p data-sd =" Article.wordcount " > 4 </ p >
</ div >
سيتم إخراج هذا باستخدام دلالات Microdata
على النحو التالي:
< div itemscope itemtype =" http://schema.org/Article " >
< p itemprop =" articleBody " > This is my article </ p >
< p itemprop =" wordcount " > 4 </ p >
</ div >
أو باستخدام دلالات RDFa
على النحو التالي:
< div vocab =" http://schema.org " typeof =" Article " >
< p property =" articleBody " > This is my article </ p >
< p property =" wordcount " > 4 </ p >
</ div >
من الممكن، باستخدام مجموعة من هذه، تحديد خصائص متعددة بما في ذلك بعضها خاص بالمخطط والبعض الآخر عام. ترتيب الكتل البرمجية الإنشائية ليس مهمًا ويتم استخدام مسافة بيضاء كفاصل.
< div data-sd =" Article " >
< p data-sd =" articleBody " > This is my article </ p >
< p data-sd =" Article.wordcount " > 4 </ p >
< p data-sd =" Recipe.recipeCategory Article.articleSection description " > Amazing dessert recipes </ p >
</ div >
سيتم إخراج هذا باستخدام دلالات Microdata
على النحو التالي:
< div itemscope itemtype =" http://schema.org/Article " >
< p itemprop =" articleBody " > This is my article </ p >
< p itemprop =" wordcount " > 4 </ p >
< p itemprop =" articleSection " > Amazing dessert recipes </ p >
</ div >
أو باستخدام دلالات RDFa
على النحو التالي:
< div vocab =" http://schema.org " typeof =" Article " >
< p property =" articleBody " > This is my article </ p >
< p property =" wordcount " > 4 </ p >
< p property =" articleSection " > Amazing dessert recipes </ p >
</ div >
في بعض الأحيان يكون من الضروري دمج المخططات - على سبيل المثال، إذا كنت تريد وصف شخص ما عندما يكون مخطط المقالة مفتوحًا. وهذا ممكن باستخدام المخططات المتداخلة. لاستخدام هذا، ما عليك سوى إلحاق المخطط مسبوقًا بنقطة، بعد الخاصية. بمجرد الانتهاء من استخدام المخطط المتداخل، أغلق العلامة التي تحتوي عليه، وأعد تعيين المخطط الأصلي.
< div data-sd =" Article " >
< p data-sd =" articleBody " > This is my article </ p >
< p data-sd =" Article.wordcount " > 4 </ p >
< div data-sd =" author.Person " >
< p data-sd =" Person name " > John Doe </ p >
</ div >
< p data-sd =" Article keywords " > Cake </ p >
</ div >
سيتم إخراج هذا باستخدام دلالات Microdata
على النحو التالي:
< div itemscope itemtype =" http://schema.org/Article " >
< p itemprop =" articleBody " > This is my article </ p >
< p itemprop =" wordcount " > 4 </ p >
< div itemprop =" author " itemscope itemtype =" http://schema.org/Person " >
< p itemprop =" name " > John Doe </ p >
</ div >
< p itemprop =" keywords " > Cake </ p >
</ div >
أو باستخدام دلالات RDFa
على النحو التالي:
< div vocab =" http://schema.org " typeof =" Article " >
< p property =" articleBody " > This is my article </ p >
< p property =" wordcount " > 4 </ p >
< div property =" author " vocab =" http://schema.org " typeof =" Person " >
< p property =" name " > John Doe </ p >
</ div >
< p itemprop =" keywords " > Cake" </ p >
</ div >
لنفترض أن لديك بالفعل مثيل لمكتبة ParserPlugin
. وتحتاج إلى إضافة دلالات البيانات الجزئية أو RDFa إلى HTML التالي الذي يعد جزءًا من المقالة ( على سبيل المثال $parser = new PHPStructuredData ParserPlugin('microdata'); $scope='Article';
).
< div data-sd =" <?php echo $scope;?> " >
<!-- Title -->
< span data-sd =" Review.itemReviewed name " >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span data-sd =" author.Person " >
< span data-sd =" name " > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta data-sd =' <?php echo $scope;?> datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
< span data-sd =' reviewBody articleBody ' >
Lorem ipsum dolor sit amet...
</ span >
< div >
سيكون مخرجات Microdata
:
< div itemscope itemtype =' https://schema.org/Article ' >
<!-- Title -->
< span itemprop =' name ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span itemprop =' author ' itemscope itemtype =' https://schema.org/Person ' >
< span itemprop =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta itemprop =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
< span itemprop =' articleBody ' >
Lorem ipsum dolor sit amet...
</ span >
< div >
سيكون إخراج RDFa
كما يلي:
< div vocab =' https://schema.org ' typeof =' Article ' >
<!-- Title -->
< span property =' name ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span property =' author ' vocab =' https://schema.org ' typeof =' Person ' >
< span property =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta property =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
< span property =' articleBody ' >
Lorem ipsum dolor sit amet...
</ span >
< div >
بدلاً من ذلك، إذا قررت تغيير النوع الحالي ( على سبيل المثال $scope="Review";
).
سيكون مخرجات Microdata
:
< div itemscope itemtype =' https://schema.org/Review ' >
<!-- Title -->
< span itemprop =' itemReviewed ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span itemprop =' author ' itemscope itemtype =' https://schema.org/Person ' >
< span itemprop =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta itemprop =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
< span itemprop =' reviewBody ' >
Lorem ipsum dolor sit amet...
</ span >
< div >
سيكون إخراج RDFa
كما يلي:
< div vocab =' https://schema.org ' typeof =' Review ' >
<!-- Title -->
< span property =' itemReviewed ' >
How to Tie a Reef Knot
</ span >
<!-- Author -->
< span >
Written by
< span property =' author ' vocab =' https://schema.org ' typeof =' Person ' >
< span property =' name ' > John Doe </ span >
</ span >
</ span >
<!-- Date published -->
< meta property =' datePublished ' content =' 2014-01-01T00:00:00+00:00 ' /> 1 January 2014
<!-- Content -->
< span property =' reviewBody ' >
Lorem ipsum dolor sit amet...
</ span >
< div >
تستخدم مكتبات PHPStructuredData
ملف types.json
لفحص وإخراج الدلالات التي تم التحقق من صحتها، ويحتوي هذا الملف على جميع الأنواع والخصائص المتاحة من مفردات http://schema.org، وتم إنشاؤه تلقائيًا باستخدام https://github.com/ alexprut/Spider4Schema زاحف الويب.
itemref
.StructuredData
.types.json
جميع الخصائص المطلوبة المحددة بواسطة Google وYandex وBaidu. تم ترخيص PHPStructuredData بموجب ترخيص MIT – راجع ملف الترخيص للحصول على التفاصيل.