web-dev-qa-db-fra.com

Où est la place idéale dans le code pour utiliser le balisage Schema.org en JSON-LD?

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

Exemple: les chapelures - devrais-je juste mettre le script JSON-LD avant le balisage pour les miettes, ou devrais-je passer tout le temps de charger (encore) les modèles pour les définir dans la zone créant le <head> ? On dirait que ce serait un coup dur pour la performance, mais si cela en vaut la peine, cela doit être fait.

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

<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 un autre champ d'application, plus bas dans la page, près des miettes rendues visuellement). Ce serait bien d'avoir cela en tête, 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>
9
dhaupin

JSON-LD ne s'en soucie pas . 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 langage HTML, vous ne devez l’inclure dans la head que si le JSON-LD concerne votre page Web ou ce que votre page Web représente, car l’élément head est défini contenir des métadonnées pour le document . Mais il n’est pas toujours facile de définir si quelque chose est considéré comme une métadonnée ou non; Je ne m'inquiéterais pas trop à ce sujet.

8
unor