2016-04-07 12 views
1

Ich arbeite an dem Hinzufügen von Schema.org Elementen zu einer Drupal-Site. Wie einige vielleicht schon wissen, kann es mühsam sein, gerendertes HTML für einzelne Felder zu ändern.Kann ich eine Schema.org-Eigenschaft auf der Item-Wrapper-Ebene anstelle des Element-Tags angeben?

In diesem Fall arbeite ich auf Produktdetailseiten. Spezifisches Hinzufügen der itemprop="name"-Eigenschaft zum Produkttitelfeld. Dies ist nur ein einfacher Knoten-Inhaltstyp, an dem ich gerade arbeite. Also habe ich die Knotenvorlage für diesen Inhaltstyp geändert. Daraus ergibt sich die folgende HTML-Struktur:

<div itemprop="name" class="product-view__item__title"> 
    <h3 class="field-label"></h3> 
    <h1 class="field-title-field item__title-field"> 
    Very Important Product 
    </h1> 
</div> 

Alles im div Element kommt von render() auf dem Titelfeld in der Vorlage aufrufen. Bis jetzt habe ich nicht viel Glück mit Haken, um das verschachtelte h1 Umbau zu ändern. Aber ich habe mich nicht zu sehr angestrengt, da ich dies mit anderen Feldern tun muss und herausfinden wollte, ob ich die Elementeigenschaft weit oben im HTML-Baum angeben kann.

Also irgendwelche Gedanken? Benötige ich die Eigenschaft, die auf der Ebene h1 hinzugefügt wird, oder kann ich es in diesem Beispiel unter div erreichen?

Wir tun dies, um Suchmaschinen mit besseren Informationen zu versorgen.

Antwort

1

Ja, Sie können dies tun.

Der Wert für die name-Eigenschaft wird¹ der Element textContent sein (d. H. Der Textinhalt des Elements und aller seiner Nachkommen, verkettet).

Das bedeutet natürlich, dass Sie sicherstellen müssen, dass kein anderer Inhalt innerhalb dieser div gerendert wird (wie eine Beschriftung im Element mit der Klasse field-label).


¹ definiert als by WHATWG’s Microdata (Living Standard) und by W3C’s Microdata (W3C Working Group Note).