Wo ist der ideale Ort im Code, um Schema.org-Markup als JSON-LD zu verwenden?

9

Wo kann Schema.org-Markup mit JSON-LD am besten platziert werden? Einige empfehlen innen, <head>aber Skripte funktionieren auch inline. In einer MVC wäre es einfacher, sie in den gleichen Bereich wie die Controller zu bringen, was bedeutet, dass sie in der Nähe ihres Elements inline sind. Aber JSON-LD kann als ein riesiges Skript / Stapel in der "besser funktionieren" <head>. Ich bin mir einfach nicht sicher, welchen idealen Ort ich nehme.

Beispiel wäre Breadcrumbs - sollte ich nur das JSON-LD-Skript vor das Markup für die Crumbs setzen, oder sollte ich mir die Mühe machen, die Modelle (erneut) zu laden, um sie in dem Bereich zu definieren, in dem sie erstellt wurden <head>? Es scheint, als wäre es ein Performance-Hit, aber wenn es sich für die Spezifikation lohnt, muss es getan werden.

Hier ist ein Beispiel für die Organisation in JSON-LD (dies wäre <head>bereits geschehen):

<script type="application/ld+json"> {
"@context" : "http://schema.org",
"@type" : "Organization",
"name" : "A Huge Corporation",
"url" : "http://www.example.com",
"logo" : "http://www.example.com/huge-corporation.png",
"founder" : "Humanz",
"foundingDate" : "1268",
"sameAs" : "http://plus.google.com/111111111111111111111",
"contactPoint" : {
    "@type" : "ContactPoint",
    "contactType" : "Customer Service",
    "telephone" : "+1-888-888-8888",
    "faxNumber" : "+1-777-777-7777",
    "contactOption" : "TollFree",
    "areaServed" : "US",
    "availableLanguage" : "English",
    "email" : "[email protected]"
},
"hasPos" : {
    "@type" : "Place",
    "name" : "The Branch or Store",
    "photo" : "http://www.example.com/store.png",
    "hasMap" : {
        "@type" : "Map",
        "url" : "https://maps.google.com/maps?q=feed_me_a_map"
    },
    "address" : {
        "@type" : "PostalAddress",
        "name" : "The Branch or Store",
        "streetAddress" : "1547 Main Street",
        "addressLocality" : "Beverly Hills",
        "addressRegion" : "CA",
        "postalCode" : "90210",
        "addressCountry" : "United States"
    }
}}
</script>

Und hier ist das Breadcrumb-Snippet (befindet sich derzeit in einem anderen Bereich weiter unten auf der Seite in der Nähe der visuell gerenderten Krümel). Wäre schön, das in den Kopf zu bekommen, wenn sich die Arbeit lohnt:

<script type="application/ld+json"> {
"@context" : "http://schema.org",
"@type" : "Breadcrumblist",
"itemListElement" : [
    {
    "@type" : "ListItem",
    "position" : 1,
    "item" : {
        "@id" : "http:www.example.com",
        "name" : "Home"
        }
    },
    {
    "@type" : "ListItem",
    "position" : 2,
    "item" : {
        "@id" : "http:www.example.com/widgets",
        "name" : "Widgets"
        }
    },
    {
    "@type" : "ListItem",
    "position" : 3,
    "item" : {
        "@id" : "http:www.example.com/widgets/green",
        "name" : "Green Widgets"
        }
    }
]}
</script>
Dhaupin
quelle

Antworten:

8

JSON-LD ist das egal . Dies ist sinnvoll, da die Daten dieselben sind, unabhängig davon, wo im Dokument sie extrahiert werden.

Aus der Sicht von HTML sollten Sie es nur in das headJSON-LD aufnehmen, wenn es sich um Ihre Webseite handelt oder um das, was Ihre Webseite darstellt, da das headElement so definiert ist, dass es Metadaten für das Dokument enthält . Es ist jedoch nicht immer einfach zu definieren, ob etwas als Metadaten zählt oder nicht. Ich würde mir darüber keine Sorgen machen.

unor
quelle
Sinnvoll für den <head> -Gedanken - wird wahrscheinlich die Organisation dort oben verlassen ... Ich denke, er zählt als "Meta" genug in dem Sinne, dass er auf jeder einzelnen Seite steht und ein identifizierbares "Tag" pro Wort liefert.
Dhaupin
und headblockiert nicht ein weiterer Code das Rendern der Seite? Ich habe mich gefragt, ob das vorher </body>besser sein könnte
João Pimentel Ferreira
1
@ JoãoPimentelFerreira: Ich würde erwarten, dass es nicht blockiert, weil es ein Datenblock ist, kein Skript (beide verwenden das scriptElement, aber es sind technisch unterschiedliche Fälle). Browser können jeden Datenblock völlig ignorieren. Aber ich weiß nicht, was Browser tatsächlich tun.
Unor