it-swarm.dev

Qual è l'uso corretto di schema.org SiteNavigationElement?

In termini SEO ...

È meglio mettere lo schema sul genitore che contiene tutti i link?

<nav itemscope="itemscope" itemtype="http://www.schema.org/SiteNavigationElement">
    <a href="#">Link 1</a>
    <a href="#">Link 2</a>
    <a href="#">Link 3</a>
</nav>

... o ogni link dovrebbe essere considerato come se fosse un elemento proprio?

<nav>
    <span itemscope="itemscope" itemtype="http://www.schema.org/SiteNavigationElement">
        <a itemprop="url" href="#">
            <span itemprop="name">Link 1</span>
        </a>
    </span>
    <span itemscope="itemscope" itemtype="http://www.schema.org/SiteNavigationElement">
        <a itemprop="url" href="#">
            <span itemprop="name">Link 2</span>
        </a>
    </span>
    <span itemscope="itemscope" itemtype="http://www.schema.org/SiteNavigationElement">
        <a itemprop="url" href="#">
            <span itemprop="name">Link 3</span>
        </a>
    </span>
</nav>
33
Giel Berkers

Se SiteNavigationElement è inteso per l'intera navigazione (ad esempio, un elenco di collegamenti di navigazione), il tuo primo esempio è corretto.

Se SiteNavigationElement è inteso per una singola voce di navigazione (ad esempio, un link nell'elenco di collegamenti di navigazione), il tuo secondo esempio è corretto.

Penso che Schema.org non definisca in modo inequivocabile quale variante si intende, in quanto dicono solo:

Un elemento di navigazione della pagina.

Tuttavia, il tipo genitore WebPageElement è definito come:

Un elemento di una pagina web, come un tavolo o un'immagine

Inoltre, tutti gli altri tipi di figlio (come Table o WPFooter ) sembrano essere usati per l'intera cosa, e non parti specifiche della cosa.

Quindi questo sembra suggerire che l'intera navigazione dovrebbe essere marcata, e non ogni singolo link:

<nav itemscope itemtype="http://schema.org/SiteNavigationElement">
<ul>
  <li><a href="/link-1">Link 1</a></li> <!-- don’t use the 'url' or 'name' property here! -->
  <li><a href="/link-2">Link 2</a></li>
</ul>
</nav>

In questo caso, tutte le proprietà appartengono all'intera navigazione, pertanto la proprietà url specifica un URL per questa navigazione (e non gli URL dei collegamenti in questa navigazione!).

21
unor

Secondo Search Engine Land , dovrebbe assomigliare a questo:

<ul itemscope itemtype="http://www.schema.org/SiteNavigationElement">
    <li itemprop="name">
        <a itemprop="url" href="#">Link 1</a>
    </li>
    <li itemprop="name">
        <a itemprop="url" href="#">Link 2</a>
    </li>
    <li itemprop="name">
        <a itemprop="url" href="#">Travel Resources</a>
    </li>
</ul>
11
John R Perry

La prima risposta è corretta, ma mi piacerebbe mescolare entrambi per (HTML5-) semantico:

<nav itemscope itemtype="http://schema.org/SiteNavigationElement">
    <ul>
        <li>
            <a itemprop="url" href="http://example.com/">
                <span itemprop="name">Link 1</span>
            </a>
        </li>
    </ul>
</nav>
9
Stephan Weinhold
<nav role="navigation">

    <ul role="menubar" aria-activedescendant="">

        <li role="presentation" itemscope itemtype="https://schema.org/SiteNavigationElement">
            <a href="" role="menuitem" tabindex="-1" itemprop="url">
                <span itemprop="name">Link 1</span>
            </a>
        </li>   

    </ul>

</nav>
5
davidcondrey

schema.org/SiteNavigationElement estende WebPageElement e può essere utilizzato per contrassegnare i collegamenti, che spesso creano buoni collegamenti contestuali. Puoi usare questo schema per il tuo menu di pagina.

<nav role="navigation" itemscope itemtype="http://schema.org/SiteNavigationElement">
<ul>
    <li>
        <a href="https://yoursite.com/" title="Link to Home" itemprop="url">
            <span itemprop="name">Home</span>
        </a>
    </li>
    <li>
        <a href="https://yoursite.com/sample-page" title="Link to sample page" itemprop="url">
            <span itemprop="name">sample page</span>
        </a>
    </li>
</ul>

3
ashrafnezhad

Dipende dal motore di ricerca. Dato il seguente frammento di codice:

<nav itemscope itemtype="http://schema.org/SiteNavigationElement">
  <meta itemprop="name" content="Navigation Menu">
  <a itemprop="url" href="/">Overview</a>
  <a itemprop="url" href="/feature/">Features</a>
  <a itemprop="url" href="/module/">Modules</a>
  <a itemprop="url" href="/shortcode/">Shortcodes</a>
  <a itemprop="url" href="/extra/">Extras</a>
  <a itemprop="url" href="/search/">Search</a>
</nav>

Il test dei dati strutturati di Yandex tool restituirà:

sitenavigationelement
  itemType = http://schema.org/SiteNavigationElement
  name = Navigation Menu
  url
    href = /
    text = Overview
  url
    href = /feature/
    text = Features
  url
    href = /module/
    text = Modules
  url
    href = /shortcode/
    text = Shortcodes
  url
    href = /extra/
    text = Extras
  url
    href = /search/
    text = Search

Mentre Google tool restituisce:

SiteNavigationElement
0 ERRORS
0 WARNINGS
@type = SiteNavigationElement
name = Navigation Menu
url = https://domain.example/
url = https://domain.example/feature/
url = https://domain.example/module/
url = https://domain.example/shortcode/
url = https://domain.example/extra/
url = https://domain.example/search/

Entrambi gli strumenti mostrano dati strutturati e forniscono entrambi valore semantico al di sopra e al di là semplicemente usando nav. Quindi mentre alcuni ritengono cheSiteNavigationElement debba essere completamente deprecato, anche loro, nello stesso flusso di pensiero, confessano quello che "riconoscono" è quello che ho fornito qui.

Dovresti inserire SiteNavigationElement in un wrapper attorno al gruppo di singoli URL utilizzati nella tua navigazione in modo che tu possa nominare la navigazione stessa usando itemprop="name".

Pertanto, il primo esempio è corretto.

0
Josh Habdas

La domanda originale di OP conteneva un buon esempio di codice. nessuna delle risposte però ...

Sembra che tutti abbiano risposto in modo un po 'casuale ... Puoi testare il tuo codice dei microdati dello schema utilizzando il seguente strumento google ufficialesearch.google.com/structured-data/testing-tool .

Se esegui le risposte proposte in questo strumento noterai che nessuno ti dà il risultato atteso: un elenco di SiteNavigationElement con un nome & url

Qualcuno potrebbe obiettare che un intero menu potrebbe essere considerato un "elemento di navigazione", ma penso che abbia più senso per questa denominazione designare un singolo link di navigazione. Inoltre, se usiamo SiteNavigationElement come indicatore per l'intero menu, non abbiamo modo di associare i nomi agli URL nel codice HTML.

Per ottenere ciò, è necessario che ogni collegamento sia incapsulato da una proprietà itemscope e tutti devono avere il proprio name e urlitemprop (questi sono singleton come menzionato da @David Harkness, quindi devono apparire una sola volta per itemprop)

<nav>
    <ul>
        <li  itemscope itemtype="http://schema.org/SiteNavigationElement">
            <a itemprop="url" href="http://example.com/link-1">
                <span itemprop="name">Link 1</span>
            </a>
        </li>
        <li  itemscope itemtype="http://schema.org/SiteNavigationElement">
            <a itemprop="url" href="http://example.com/link-2">
                <span itemprop="name">Link 2</span>
            </a>
        </li>
    </ul>
</nav>

Il codice sopra presenterà due diversi elementi di navigazione, ciascuno con un nome e un URL.

Nota: l'attributo itemprop="url" utilizza l'attributo href dell'ancora come valore

0
Mathieu VIALES