2012-09-19 4 views
30

In SEO-Begriffe ...Was ist die korrekte Verwendung von schema.org SiteNavigationElement?

Ist es am besten, das Schema auf das Elternteil mit allen Links setzen?

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

... oder sollte jeder Link als eigenes Element betrachtet werden?

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

Antwort

9

Erste Antwort ist richtig, aber ich würde beide mischen für (HTML5-) semantischen:

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

dies tun führt zu einer Liste von URLs und Namen, die alle in derselben Gruppe ohne jede Beziehung zwischen einer einzelnen URL und einen Namen. Ich denke, es sollte eine Möglichkeit geben, anzugeben, dass jedes Listenelement eine einzelne Entität ist, die eine URL und einen Namen hat. –

+1

Im Allgemeinen hast du natürlich Recht. Aber wenn wir über eine Navigation sprechen, gehe ich davon aus, dass die Links alle zusammengehören, nicht wahr? –

19

Wenn SiteNavigationElement für die gesamte Navigation gemeint (dh eine Navigations-Link-Liste), die erste Beispiel ist richtig.

Wenn SiteNavigationElement für einen einzelnen Navigationseintrag (d. H. Einen Link in der Navigationsverknüpfungsliste) gedacht ist, ist Ihr zweites Beispiel korrekt.

Ich denke Schema.org definiert nicht eindeutig, welche Variante gemeint ist, wie sie sagen nur:

Ein Navigationselement auf der Seite.

jedoch die Muttertyp WebPageElement ist definiert als:

eine Webseite Element, wie eine Tabelle oder ein Bild

Auch alle anderen Kind-Typen (wie Table oder WPFooter) scheinen für die ganze Sache verwendet werden, und nicht bestimmte Teile der Sache.

So scheint dies zu deuten darauf hin, dass die gesamte Navigation markiert werden sollte, und nicht jeder einzelne 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 diesem Fall werden alle Eigenschaften gehören der ganzen Navigation, so dass heißt, die url Eigenschaft würde eine URL für diese Navigation angeben (und nicht die URLs der Links in dieser Navigation!).

+3

Also Nach Ihrer Antwort diese Microdata nur Menü zur Suche Motor einführen ... Nicht Struktur des Menüs! – user3307827

+0

@chharvey: Ja. Es [könnte in Nicht-HTML-Kontexten oder speziellen Fällen sinnvoll sein] (http://stackoverflow.com/a/27867175/1591669), aber für eine typische Webseite würde ich 'WebPageElement' und seine Untertypen nicht verwenden wie 'SiteNavigationElement'. – unor

+0

Wenn es ein Body-Tag mit Mikrodaten gibt: '' Muss ich 'itemprop' zur Navigation hinzufügen? und wenn ja, was wäre dann der Wert von "itemprop" in der Navigation? – alex

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

Nach Search Engine Land, es soll wie folgt aussehen:

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

2 downvotes ohne Erklärung, was an dieser Antwort falsch ist? –

+0

Ich habe nicht abgestimmt, aber ich habe 'name' und' url' mehrdeutig gefunden. Stellt dies dar, was der tatsächliche Wert sein sollte, oder einfach ein Platzhalter, der dem Betrachter zeigt, wo verwandte Informationen erscheinen sollen. –

+1

"URL" identifiziert die URL und "Name" identifiziert den Namen (d. H. Link 2). Also nein, sie sind keine Platzhalter. –

2

schema.org/SiteNavigationElement WebPageElement erweitert und kann verwendet werden, Links zu markieren-up, die oft gute inhaltliche Verbindungen machen würde. Sie können dieses Schema für Ihr Seitenmenü verwenden.

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