Si prega di considerare il seguente codice contrassegnato con gli attributi per fornire i microdati:
<!DOCTYPE html>
<html>
<head>
<title>Micro data test - Normal version</title>
</head>
<body>
<div itemscope itemtype="http://schema.org/Product">
<h1 itemprop="name">Product name</h1>
<img alt="" itemprop="image" src="http://placehold.it/200x200" />
<div itemprop="description">This is the product description.</div>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<meta content="in_stock" itemprop="availability" />
<span content="GBP" itemprop="priceCurrency">£</span><span itemprop="price">100.00</span>
</div>
</div>
</body>
</html>
L'uso dello strumento di test dei dati strutturati di Google offre risultati positivi.
Questo va bene nell'esempio di test, tuttavia, vogliamo implementare microdati su una varietà di siti la cui struttura HTML varia notevolmente. Per implementare gli attributi in questo modo sarà necessario che qualcuno modifichi manualmente il markup HTML su ciascuno dei siti individualmente.
Preferibilmente, vorremmo essere in grado di chiamare una singola funzione che comprime tutti i microdati in un unico posto; tecnicamente ciò è possibile usando i meta tag nel modo seguente:
<!DOCTYPE html>
<html>
<head>
<title>Micro data test - Meta tag version</title>
</head>
<body>
<meta itemscope itemtype="http://schema.org/Product" itemref="microName microImage microDescription microOffer" />
<meta id="microName" itemprop="name" content="Product name" />
<link id="microImage" itemprop="image" href="http://placehold.it/200x200" />
<meta id="microDescription" itemprop="description" content="This is the product description." />
<meta id="microOffer" itemprop="offers" itemscope itemtype="http://schema.org/Offer" itemref="microCurrency microPrice microAvail" />
<meta id="microAvail" itemprop="availability" content="in_stock" />
<meta id="microCurrency" itemprop="priceCurrency" content="GBP" />
<meta id="microPrice" itemprop="price" content="100.00" />
<div>
<h1>Product name</h1>
<img alt="" src="http://placehold.it/200x200" />
<div>This is the product description.</div>
<div>£100.00</div>
</div>
</body>
</html>
L'uso dello strumento di test dei dati strutturati di Google fornisce gli stessi risultati positivi del primo test.
Per riferimento (non lo faremmo mai su un sito reale) lo Strumento di test dei dati strutturati di Google restituisce un errore se si tenta di passare microdati nascosti dai CSS.
Quindi, sia il markup normale che quello meta-tag producono gli stessi risultati, tuttavia, ho alcune preoccupazioni dovute alle seguenti dichiarazioni di Google e Schema.org:
https://support.google.com/webmasters/answer/146750 afferma:
In generale, Google utilizzerà solo i dati sottoposti a markup visibili all'utente. I dati nascosti verranno ignorati. Tuttavia, in alcune circostanze, può essere utile fornire sia una versione leggibile da una macchina che una versione leggibile dall'uomo. Ad esempio, mentre la stringa di testo "Compleanno di Elvis" è significativa per molti lettori umani, non è significativa per i motori di ricerca come il 1935-01-08. Allo stesso modo, i lettori umani possono dedurre il significato del simbolo $, ma può essere utile dire specificamente ai motori di ricerca se i tuoi prezzi sono in pesos o dollari.
http://schema.org/docs/gs.html afferma (in relazione all'uso dei meta tag):
Questa tecnica dovrebbe essere usata con parsimonia. Usa meta con contenuto solo per informazioni che non possono essere contrassegnate diversamente.
http://schema.org/docs/faq.html#13 afferma:
Come regola generale, è necessario contrassegnare solo il contenuto visibile alle persone che visitano la pagina Web e non il contenuto in div nascosti o altri elementi di pagine nascoste.
Le mie domande sono:
- Sebbene non vengano restituiti errori, saremmo penalizzati dai motori di ricerca per l'utilizzo di metatag in questo modo (ovvero contenuti duplicati, informazioni nascoste, ecc.)?
- Se questo non è adatto, puoi suggerire un modo per dividere i microdati dai dati reali o dovremo mordere il proiettile e implementarlo in HTML caso per caso?