ชุดไลบรารี PHP ที่ใช้คำศัพท์ http://schema.org เพื่อนำไปใช้และส่งออกซีแมนทิกส์ Microdata หรือ 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 อยู่แล้ว และคุณต้องเพิ่ม Microdata หรือความหมาย 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 > หากคุณตัดสินใจเปลี่ยน Type ปัจจุบัน ( เช่น $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
หากคุณตัดสินใจที่จะไม่แสดงซีแมนทิกส์ Microdata หรือ 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' ในกรณีของความหมาย Microdata หรือ 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' ในกรณีของซีแมนทิกส์ Microdata หรือ 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 >
บางครั้งคุณอาจต้องการระบุคุณสมบัติอย่างชัดเจนซึ่งควรใช้เฉพาะเมื่อมีการใช้งานสคีมาเฉพาะ ตัวอย่างเช่น หากคุณสมบัตินั้นมีคุณสมบัติเฉพาะในสคีมาหนึ่ง ซึ่งเรียกว่าสิ่งที่แตกต่างในสคีมาอื่น
เป็นไปได้ที่จะบรรลุเป้าหมายนี้โดยใช้คุณสมบัติขึ้นอยู่กับสคีมา ซึ่งทำงานโดยใช้การผสมผสานระหว่างทั้ง Type และ property โดยคั่นด้วยเครื่องหมายจุด กล่าวโดยสรุป หากขอบเขตส่วนกลางปัจจุบันเท่ากับ Type และคุณสมบัติเป็นส่วนหนึ่งของประเภทนั้น ปลั๊กอินจะแทนที่แท็กข้อมูลด้วย itemprop='property' ในกรณีของความหมาย Microdata หรือ 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 อยู่แล้ว และคุณต้องเพิ่มความหมาย Microdata หรือ 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
itemrefStructuredDatatypes.json PHPStructuredData ได้รับอนุญาตภายใต้ใบอนุญาต MIT - ดูรายละเอียดในไฟล์ใบอนุญาต