Où est l'endroit idéal dans le code pour utiliser le balisage Schema.org en tant que JSON-LD?

9

Où est le meilleur endroit pour placer le balisage Schema.org qui utilise JSON-LD? Certains recommandent à l'intérieur <head>mais les scripts fonctionnent également en ligne. Il serait plus facile dans un MVC de les mettre dans la même portée que les contrôleurs, ce qui signifie en ligne près de leur élément. Mais JSON-LD peut "mieux fonctionner" comme un énorme script / pile dans le <head>. Je ne suis tout simplement pas sûr de l'emplacement idéal, je suppose.

Un exemple serait le fil d'Ariane - devrais-je simplement mettre le script JSON-LD avant le balisage pour les miettes, ou devrais-je passer par tous les problèmes de chargement des modèles (à nouveau) pour les définir dans la zone créant le <head>? On dirait que ce serait un impact sur les performances, mais si cela en vaut la peine pour la spécification, alors cela doit être fait.

Voici un exemple d'organisation en JSON-LD (ce serait <head>déjà le cas):

<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>

Et voici l'extrait de fil d'Ariane (réside actuellement dans une autre portée, plus bas sur la page près des miettes visuellement rendues). Ce serait bien de comprendre cela, si le travail en vaut la peine:

<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
la source

Réponses:

8

JSON-LD s'en fiche . Ce qui est logique, car les données sont les mêmes, peu importe d'où elles sont extraites dans le document.

Du point de vue du HTML, vous ne devez l'inclure que dans headsi le JSON-LD concerne votre page Web ou ce que représente votre page Web, car l' headélément est défini pour contenir des métadonnées pour le document . Mais il n'est pas toujours facile de définir si quelque chose compte ou non comme métadonnées; Je ne m'inquiéterais pas trop à ce sujet.

unor
la source
Donne du sens à la pensée <head> - va probablement finir par laisser l'organisation là-haut .... je pense que cela compte comme suffisamment "méta" dans le sens où il se trouve sur chaque page et fournit une "étiquette" identifiable par mot.
dhaupin
et dans le head, un autre code ne bloque-t-il pas le rendu de la page? Je me demandais qu'avant le </body>pourrait être mieux à cause de cela
João Pimentel Ferreira
1
@ JoãoPimentelFerreira: Je m'attendrais à ce qu'il ne bloque pas, car c'est un bloc de données, pas un script (les deux utilisent l' scriptélément, mais ce sont des cas techniquement différents). Les navigateurs pourraient ignorer totalement tout bloc de données. Mais je ne sais pas ce que font réellement les navigateurs.
unor