Eine Reihe von PHP-Bibliotheken, die das http://schema.org-Vokabular verwenden, um Microdata- oder RDFa Lite 1.1-Semantiken zu implementieren und auszugeben.
Diese Bibliothek wird im Joomla CMS seit Version 3.2 verwendet (genannt JMicrodata).
Erstellt während des Google Summer of Code 2013 und 2014.
Die Bibliothek wurde mit folgenden Zielen konzipiert:
Komponist :
Fügen Sie Ihrer composer.json
Datei Folgendes hinzu:
{
"require" : {
"palex/ PHPStructuredData " : " * "
}
}
Aus der Quelle :
Führen Sie git clone https://github.com/alexprut/PHPStructuredData.git
aus
Direkter Download :
Laden Sie die letzte Version hier herunter
Nehmen wir an, Sie verfügen bereits über eine Instanz der Microdata- oder RDFa-Bibliothek. Und Sie müssen dem folgenden HTML-Code, der Teil eines Artikels ist, Mikrodaten- oder RDFa-Semantik hinzufügen ( z. B. $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>
Die Microdata
-Bibliothek rendert:
< 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 >
Die RDFa
Bibliothek rendert:
< 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 >
Wenn Sie sich stattdessen dazu entschließen, den aktuellen Typ zu ändern ( z. B. $sd->setType('Review');
).
Die Microdata
-Bibliothek rendert:
< 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 >
Die RDFa
Bibliothek rendert:
< 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 >
Wie Sie sehen, greift John Doe
auf den Personentyp zurück und es gibt keinen Informationsverlust. Selbst wenn der aktuelle Typ keine Autoreneigenschaft hat, werden wichtige Informationen für die Maschinen angezeigt. Suchmaschinen wissen, dass es eine Person John Doe
gibt John Doe
.
Wenn Sie sich stattdessen dafür entscheiden, keine Mikrodaten- oder RDFa-Semantik zu rendern, deaktivieren Sie einfach die Bibliotheksausgabe ( z. B. $sd->enable('false');
).
Sowohl Microdata
als auch RDFa
Bibliothek rendern:
< 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 >
Derzeit unterstützen weder RDFa
noch Microdata
Bibliothek mehrere Fallbacks.
Wenn Sie Ihre Ansichten von der Logik trennen möchten, ist ParserPlugin
eine PHP-Klasse zum Parsen des HTML-Markups und zum Konvertieren der data-*
HTML5-Attribute in die korrekt formatierte Microdata- oder RDFa Lite 1.1-Semantik.
Die data-*
Attribute sind neu in HTML5, sie geben uns die Möglichkeit, benutzerdefinierte Datenattribute in alle HTML-Elemente einzubetten. Wenn Sie also die Bibliotheksausgabe deaktivieren, wird der HTML-Code weiterhin validiert. Das Standardsuffix, nach dem die Bibliothek sucht, ist data-sd
, wobei sd für strukturierte Daten steht. Sie können jedoch mehr als ein benutzerdefiniertes Suffix registrieren.
Der Typ definiert, welches Schema für das folgende Markup verwendet wird. Der Typ muss immer das erste Zeichen in Großbuchstaben enthalten, um korrekt interpretiert zu werden. Wenn es sich bei dem Typ um ein gültiges Schema handelt, wird der globale Bereich für die Seite ab diesem Zeitpunkt auf dieses Schema aktualisiert. Das Plugin ersetzt das Daten-Tag durch itemscope itemtype='https://schema.org/Type'
bei Mikrodatensemantik oder vocab='https://schema.org' typeof='Type'
bei RDFa Lite 1.1 Semantik.
< div data-sd =" Article " >
< p > This is my article </ p >
</ div >
Dies wird mithilfe der Microdata
wie folgt ausgegeben:
< div itemscope itemtype =" http://schema.org/Article " >
< p > This is my article </ p >
</ div >
Oder verwenden Sie RDFa
Semantik als:
< div vocab =" http://schema.org " typeof =" Article " >
< p > This is my article </ p >
</ div >
Sobald ein Schema deklariert wurde, besteht der nächste Schritt darin, einzelne Eigenschaften zu deklarieren – den Inhalt zu erklären und ihm eine semantische Bedeutung zu geben.
Das erste Zeichen der Eigenschaft muss immer ein Kleinbuchstabe sein, um korrekt interpretiert zu werden. Wenn festgestellt wird, dass die Eigenschaft Teil des aktuellen Schemas ist, ersetzt das Plugin das Daten-Tag durch itemprop='property'
bei Mikrodatensemantik oder property='property'
bei RDFa Lite 1.1-Semantik. Wenn festgestellt wird, dass die Eigenschaft keine gültige Eigenschaft des aktiven Schemas ist, wird sie ignoriert und die nächste verfügbare Eigenschaft wird analysiert.
< div data-sd =" Article " >
< p data-sd =" articleBody " > This is my article </ p >
</ div >
Dies wird mithilfe der Microdata
wie folgt ausgegeben:
< div itemscope itemtype =" http://schema.org/Article " >
< p itemprop =" articleBody " > This is my article </ p >
</ div >
Oder verwenden Sie RDFa
Semantik als:
< div vocab =" http://schema.org " typeof =" Article " >
< p property =" articleBody " > This is my article </ p >
</ div >
Manchmal möchten Sie vielleicht explizit eine Eigenschaft angeben, die nur verwendet werden soll, wenn ein bestimmtes Schema aktiv ist – zum Beispiel, wenn die Eigenschaft in einem Schema eine bestimmte Eigenschaft hat, die in einem anderen Schema anders heißt.
Dies kann durch die Verwendung einer schemaabhängigen Eigenschaft erreicht werden. Dies funktioniert durch die Verwendung einer Kombination aus Type und property , getrennt durch einen Punkt. Kurz gesagt: Wenn der aktuelle globale Bereich dem Typ entspricht und die Eigenschaft Teil dieses Typs ist, ersetzt das Plugin das Daten-Tag durch itemprop='property'
im Fall der Mikrodatensemantik oder property='property'
im Fall von 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 >
Dies wird mithilfe der Microdata
wie folgt ausgegeben:
< div itemscope itemtype =" http://schema.org/Article " >
< p itemprop =" articleBody " > This is my article </ p >
< p itemprop =" wordcount " > 4 </ p >
</ div >
Oder verwenden Sie RDFa
Semantik als:
< div vocab =" http://schema.org " typeof =" Article " >
< p property =" articleBody " > This is my article </ p >
< p property =" wordcount " > 4 </ p >
</ div >
Mithilfe einer Kombination davon ist es möglich, mehrere Eigenschaften anzugeben, darunter einige, die spezifisch für ein Schema sind, und andere, die generisch sind. Die Reihenfolge der Bausteine spielt keine Rolle und als Trennzeichen wird ein Leerzeichen verwendet.
< 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 >
Dies wird mithilfe der Microdata
wie folgt ausgegeben:
< 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 >
Oder verwenden Sie RDFa
Semantik als:
< 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 >
Manchmal ist es notwendig, Schemata zu verschachteln – zum Beispiel, wenn Sie eine Person beschreiben möchten, während Sie das Artikelschema geöffnet haben. Dies ist mithilfe verschachtelter Schemata möglich. Um dies zu verwenden, hängen Sie einfach das Schema mit einem vorangestellten Punkt nach der Eigenschaft an. Wenn Sie mit der Verwendung des verschachtelten Schemas fertig sind, schließen Sie das enthaltende Tag und stellen Sie das ursprüngliche Schema wieder ein.
< 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 >
Dies wird mithilfe der Microdata
wie folgt ausgegeben:
< 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 >
Oder verwenden Sie RDFa
Semantik als:
< 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 >
Nehmen wir an, dass Sie bereits über eine Instanz der ParserPlugin
-Bibliothek verfügen. Und Sie müssen dem folgenden HTML-Code, der Teil eines Artikels ist, Mikrodaten- oder RDFa-Semantik hinzufügen ( z. B. $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 >
Die Microdata
lautet:
< 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 >
Die RDFa
Ausgabe wird sein:
< 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 >
Stattdessen, wenn Sie sich entscheiden, den aktuellen Typ zu ändern ( z. B. $scope="Review";
).
Die Microdata
lautet:
< 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 >
Die RDFa
Ausgabe wird sein:
< 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
-Bibliotheken verwenden die Datei types.json
, um validierte Semantik zu überprüfen und auszugeben. Diese Datei enthält alle verfügbaren Typen und Eigenschaften aus dem http://schema.org-Vokabular und wurde automatisch mit https://github.com/ generiert. alexprut/Spider4Schema-Webcrawler.
itemref
Unterstützung hinzufügen.StructuredData
Unterstützung für mehrere Fallbacks hinzu.types.json
alle von Google, Yandex und Baidu angegebenen erforderlichen Eigenschaften hinzu. PHPStructuredData ist unter der MIT-Lizenz lizenziert – Einzelheiten finden Sie in der LICENSE-Datei.