2016-02-12 34 views
7

Esiste comunque l'uso di JSON-LD senza includere lo script in linea nell'HTML, ma ancora gli spider di Google (&) per trovarlo? Guardandomi intorno ho visto alcune informazioni contrastanti.Esiste comunque lo schema JSON-LD non inlineato

Se questo era il file JSON-LD:

<script type="application/ld+json"> 
    { 
     "@context" : "http://schema.org", 
     "@type" : "WebSite", 
     "name" : "Example Site", 
     "alternateName" : "example", 
     "description" : "Welcome to this WebSite", 
     "headline" : "Welcome to Website", 
     "logo" : "https://example.com/public/images/logo.png", 
     "url" : "https://example.com/" 
    } 
    </script> 

E ho questo nel head del HTML:

<script src="/public/json-ld.json" type="application/ld+json"></script> 

EDIT: Ho anche provato:

<link href="/public/json-ld.json" rel="alternate" type="application/ld+" /> 

Google Spider sembra mancarlo e così fa lo strumento di test a meno che non lo indico direttamente sul file. Sto cercando di aggirare l'insicurezza in linea nel CSP. E lo only thing I can find is this, che funzionerebbe con Chrome ma non si desidera che gli errori della console vengano attivati ​​su tutti gli altri browser. Inoltre, mi piace l'idea che i dati di Schema.org siano estratti dalla struttura della pagina. Aggiungendo il JSON-LD alla sitemap per la guida di Strumenti per i Webmaster di Google?

Ci scusiamo, noob totale a JSON-lD e continuiamo a finire nella documentazione e-mail (questo sarebbe per un sito) o vecchia documentazione.

+0

Eventuali duplicati di [fa JSON-LD devono essere incorporati?] (Http://stackoverflow.com/questions/30864619/does-json-ld-have-to-be-embedded) – unor

+0

hanno provato questo, e non è ancora stato rilevato. La mia ipotesi migliore è che JSON-LD per i siti Web non sia ancora supportato in file esterni. – Cynic

risposta

0

È vero, non può essere reso esterno e non è supportato in linea, ma puoi comunque ottenere ciò che desideri iniettandolo nel DOM tramite un file JavaScript.

Nota: sto utilizzando un array per la pulizia in modo da poter segmentare tutti gli elementi di dati strutturati e aggiungerne una quantità infinita. Ho una versione più complicata di questo codice sui miei siti web e in realtà ho un file di rendering lato server esterno mascherato da un file JavaScript.

Un bot di ricerca Google sì lo capisce. Potrebbero volerci giorni per registrarsi e utilizzare gli strumenti per i Webmaster per forzare una nuova scansione non sembra forzare un aggiornamento dei dati JSON-LD: sembra che devi solo aspettare.

var structuredData = { 
    schema: { 
     corporation: { 
      '@context':   'http://schema.org', 
      '@type':   'Corporation', 
      'name':    'Acme', 
      'url':    'https://acme.com', 
      'contactPoint': 
      { 
       '@type':  'ContactPoint', 
       'telephone': '+1-1234-567-890', 
       'contactType': 'customer service', 
       'areaServed': 'US' 
      } 
     }, 
     service: { 
      '@context':   'http://schema.org/', 
      '@type':   'Service', 
      'name':    'Code optimization', 
      'serviceOutput' : 'Externalized json', 
      'description':  'Inline json to externalized json' 
     }, 
    }, 
    init: function() { 
     var g = []; 
     var sd = structuredData; 
     g.push(sd.schema.corporation); 
     g.push(sd.schema.service); 
     //etc. 

     var o = document.createElement('script'); 
     o.type = 'application/ld+json'; 
     o.innerHTML = JSON.stringify(g); 
     var d = document; (d.head || d.body).appendChild(o); 
    } 
} 
structuredData.init();