Seperangkat pustaka PHP yang menggunakan kosakata http://schema.org untuk mengimplementasikan dan menghasilkan semantik Microdata atau RDFa Lite 1.1.
Library ini digunakan di CMS Joomla sejak versi 3.2 (disebut JMicrodata).
Dibuat selama Google Summer of Code 2013 dan 2014.
Perpustakaan dirancang dengan tujuan sebagai berikut:
Komposer :
Tambahkan file composer.json
Anda:
{
"require" : {
"palex/ PHPStructuredData " : " * "
}
}
Dari Sumber :
Jalankan git clone https://github.com/alexprut/PHPStructuredData.git
Unduh langsung :
Unduh versi terakhir dari sini
Misalkan Anda sudah memiliki instance perpustakaan Microdata atau RDFa. Dan Anda perlu menambahkan semantik Microdata atau RDFa ke HTML berikut yang merupakan bagian dari artikel ( misalnya $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>
Perpustakaan Microdata
akan merender:
< 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 >
Pustaka RDFa
akan merender:
< 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 >
Sebaliknya, jika Anda memutuskan untuk mengubah Tipe saat ini ( misalnya $sd->setType('Review');
).
Perpustakaan Microdata
akan merender:
< 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 >
Pustaka RDFa
akan merender:
< 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 >
Seperti yang Anda lihat, John Doe
melakukan fallback ke Tipe Orang , dan tidak ada informasi yang hilang, meskipun Tipe saat ini tidak memiliki Properti penulis , ia akan menampilkan informasi penting untuk mesin, mesin pencari mengetahui bahwa ada Orang John Doe
.
Sebaliknya, jika Anda memutuskan untuk tidak merender semantik Microdata atau RDFa, Anda cukup menonaktifkan keluaran perpustakaan ( misalnya $sd->enable('false');
).
Pustaka Microdata
dan RDFa
akan merender:
< 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 >
Saat ini perpustakaan RDFa
dan Microdata
tidak mendukung banyak fallback.
Jika Anda ingin memisahkan pandangan Anda dari logika, ParserPlugin
adalah kelas PHP untuk mengurai markup HTML dan mengonversi atribut data-*
HTML5 ke dalam semantik Microdata atau RDFa Lite 1.1 yang diformat dengan benar.
Atribut data-*
baru di HTML5, atribut ini memberi kita kemampuan untuk menyematkan atribut data khusus pada semua elemen HTML. Jadi jika Anda menonaktifkan keluaran perpustakaan, HTML akan tetap divalidasi. Sufiks default yang akan dicari perpustakaan adalah data-sd
, dengan sd singkatan dari data terstruktur, namun Anda dapat mendaftarkan lebih dari satu sufiks khusus.
Jenisnya menentukan skema mana yang digunakan untuk markup berikut. Tipe harus selalu memiliki karakter huruf besar pertama agar dapat diinterpretasikan dengan benar. Jika jenisnya adalah skema yang valid, cakupan global untuk halaman mulai saat ini dan seterusnya diperbarui ke skema ini. Plugin akan mengganti tag data dengan itemscope itemtype='https://schema.org/Type'
untuk semantik Microdata atau vocab='https://schema.org' typeof='Type'
untuk RDFa Lite 1.1 semantik.
< div data-sd =" Article " >
< p > This is my article </ p >
</ div >
Ini akan menjadi keluaran menggunakan semantik Microdata
sebagai:
< div itemscope itemtype =" http://schema.org/Article " >
< p > This is my article </ p >
</ div >
Atau menggunakan semantik RDFa
sebagai:
< div vocab =" http://schema.org " typeof =" Article " >
< p > This is my article </ p >
</ div >
Setelah skema dideklarasikan, langkah selanjutnya adalah mendeklarasikan properti individu – menjelaskan konten dan memberinya makna semantik.
Properti harus selalu memiliki karakter pertama sebagai huruf kecil agar dapat diinterpretasikan dengan benar. Jika properti ditemukan menjadi bagian dari skema saat ini, plugin akan mengganti tag data dengan itemprop='property'
untuk semantik Microdata atau property='property'
untuk semantik RDFa Lite 1.1. Jika properti tersebut tidak ditemukan sebagai properti valid dari skema aktif, maka properti tersebut akan diabaikan dan properti berikutnya yang tersedia akan diurai.
< div data-sd =" Article " >
< p data-sd =" articleBody " > This is my article </ p >
</ div >
Ini akan menjadi keluaran menggunakan semantik Microdata
sebagai:
< div itemscope itemtype =" http://schema.org/Article " >
< p itemprop =" articleBody " > This is my article </ p >
</ div >
Atau menggunakan semantik RDFa
sebagai:
< div vocab =" http://schema.org " typeof =" Article " >
< p property =" articleBody " > This is my article </ p >
</ div >
Terkadang Anda mungkin ingin secara eksplisit menyatakan properti yang hanya boleh digunakan ketika skema tertentu aktif – misalnya, jika properti memiliki properti tertentu dalam satu skema, yang disebut sesuatu yang berbeda di skema lain.
Hal ini dapat dicapai dengan menggunakan properti yang bergantung pada skema. Ini bekerja dengan menggunakan kombinasi antara Type dan property , dipisahkan dengan tanda titik. Singkatnya, jika cakupan global saat ini sama dengan Type dan properti adalah bagian dari Type tersebut, plugin akan mengganti tag data dengan itemprop='property'
untuk semantik Microdata atau property='property'
untuk 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 >
Ini akan menjadi keluaran menggunakan semantik Microdata
sebagai:
< div itemscope itemtype =" http://schema.org/Article " >
< p itemprop =" articleBody " > This is my article </ p >
< p itemprop =" wordcount " > 4 </ p >
</ div >
Atau menggunakan semantik RDFa
sebagai:
< div vocab =" http://schema.org " typeof =" Article " >
< p property =" articleBody " > This is my article </ p >
< p property =" wordcount " > 4 </ p >
</ div >
Dengan menggunakan kombinasi ini, dimungkinkan untuk menentukan beberapa properti termasuk beberapa properti yang spesifik untuk suatu skema dan properti lainnya yang bersifat generik. Urutan blok penyusunnya tidak signifikan dan spasi digunakan sebagai pemisah.
< 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 >
Ini akan menjadi keluaran menggunakan semantik Microdata
sebagai:
< 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 >
Atau menggunakan semantik RDFa
sebagai:
< 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 >
Terkadang perlu untuk menyusun skema – misalnya jika Anda ingin mendeskripsikan seseorang saat Anda membuka skema Artikel. Hal ini dimungkinkan dengan menggunakan skema bersarang. Untuk menggunakan ini, cukup tambahkan skema yang diawali dengan titik, setelah properti. Setelah Anda selesai menggunakan skema bertingkat, tutup tag yang memuatnya, dan atur ulang skema asli.
< 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 >
Ini akan menjadi keluaran menggunakan semantik Microdata
sebagai:
< 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 >
Atau menggunakan semantik RDFa
sebagai:
< 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 >
Misalkan Anda sudah memiliki instance perpustakaan ParserPlugin
. Dan Anda perlu menambahkan semantik Microdata atau RDFa ke HTML berikut yang merupakan bagian dari artikel ( misalnya $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 >
Keluaran Microdata
akan menjadi:
< 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 >
Keluaran RDFa
akan menjadi:
< 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 >
Sebaliknya, jika Anda memutuskan untuk mengubah Tipe saat ini ( misalnya $scope="Review";
).
Keluaran Microdata
akan menjadi:
< 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 >
Keluaran RDFa
akan menjadi:
< 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 >
Pustaka PHPStructuredData
menggunakan file types.json
untuk memeriksa dan mengeluarkan semantik yang divalidasi, file tersebut berisi semua Jenis dan Properti yang tersedia dari kosakata http://schema.org, dan dihasilkan secara otomatis dengan https://github.com/ perayap web alexprut/Spider4Schema.
itemref
.StructuredData
.types.json
semua properti wajib yang ditentukan oleh Google, Yandex, Baidu. PHPStructuredData dilisensikan di bawah Lisensi MIT – lihat file LISENSI untuk detailnya.