it-swarm.com.de

Was ist die korrekte Verwendung von schema.org SiteNavigationElement?

In Sachen SEO ...

Ist es am besten, das Schema dem übergeordneten Element zuzuordnen, das alle Links enthält?

<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 sein 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>
33
Giel Berkers

Wenn SiteNavigationElement für die gesamte Navigation gedacht ist (d. H. Eine Navigationslinkliste), ist Ihr erstes Beispiel korrekt.

Wenn SiteNavigationElement für einen einzelnen Navigationseintrag gedacht ist (d. H. Einen Link in der Navigationslinkliste), ist das zweite Beispiel korrekt.

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

Ein Navigationselement der Seite.

Der übergeordnete Typ WebPageElement ist jedoch definiert als:

Ein Webseitenelement wie eine Tabelle oder ein Bild

Außerdem scheinen alle anderen untergeordneten Typen (wie Table oder WPFooter ) für die gesamte Sache und nicht für bestimmte Teile der Sache verwendet zu werden.

Dies scheint also darauf hinzudeuten, dass die gesamte Navigation markiert sein 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 gehören alle Eigenschaften zur gesamten Navigation, dh die url-Eigenschaft würde eine URL für diese Navigation angeben (und not die URLs der Links in dieser Navigation!).

21
unor

Laut Search Engine Land soll es so 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>
11
John R Perry

Die erste Antwort ist richtig, aber ich würde beides für (HTML5-) Semantik mischen:

<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
<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 erweitert WebPageElement und kann zum Markieren von Links verwendet werden, was häufig gute kontextabhängige Links ergibt. 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>

3
ashrafnezhad

Das hängt von der Suchmaschine ab. Gegeben sei der folgende Code-Ausschnitt:

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

Yandexs Test für strukturierte Daten tool gibt Folgendes zurück:

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

Während Google Tool zurückgibt:

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/

Beide Tools zeigen strukturierte Daten an und beide bieten einen weiteren semantischen Wert, indem Sie einfach nav verwenden. Während einige fühlenSiteNavigationElement sollte gänzlich abgelehnt werden, bekennen sie sich auch in dem gleichen Gedankengang, dass sie "das erkennen", was ich hier angegeben habe.

Sie sollten SiteNavigationElement in einem Wrapper um die in Ihrer Navigation verwendete Gruppe einzelner URLs platzieren, damit Sie die Navigation selbst mit itemprop="name" benennen können.

Daher ist das erste Beispiel richtig.

0
Josh Habdas

Die ursprüngliche Frage von OP enthielt ein gutes Beispiel für Code. Keine der Antworten tut es aber ...

Es scheint, dass jeder eine etwas zufällige Antwort abgab ... Sie können Ihren Mikrodatencode mit dem folgenden offiziellen Google-Toolsearch.google.com/structured-data/testing-tool testen.

Wenn Sie die vorgeschlagenen Antworten in diesem Tool ausführen, werden Sie feststellen, dass keine das erwartete Ergebnis liefert: eine Liste von SiteNavigationElement mit einem Namen und einer URL

Einige mögen argumentieren, dass ein ganzes Menü als "Navigationselement" betrachtet werden kann, aber ich denke, dass es für diese Bezeichnung sinnvoller ist, einen einzelnen Navigationslink zu bezeichnen. Wenn Sie SiteNavigationElement als Markierung für das gesamte Menü verwenden, haben wir keine Möglichkeit, Namen mit URLs in der HTML-Datei zu verknüpfen.

Um dies zu erreichen, muss jeder Link durch eine itemscope -Eigenschaft verkapselt sein, und alle müssen ihre eigenen name und urlitemprop haben (diese sind wie erwähnt Singleton) von @David Harkness, also müssen sie nur einmal pro itemprop erscheinen

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

Der Code oben zeigt zwei verschiedene Navigationselemente mit jeweils einem Namen und einer URL.

Hinweis: Das itemprop="url"-Attribut verwendet das Attribut href des Ankers als Wert

0
Mathieu VIALES

Ich denke, die eleganteste Lösung wäre, die hasPart -Eigenschaft zu verwenden.

<nav itemscope="itemscope" itemtype="http://www.schema.org/SiteNavigationElement">
  <a itemprop="hasPart" href="/link1.html">Link 1</a>
  <a itemprop="hasPart" href="/link2.html">Link 2</a>
  <a itemprop="hasPart" href="/link3.html">Link 3</a>
</nav>

Wenn Sie das Strukturtest-Tool von Google verwenden , werden Sie darauf hingewiesen, dass diese Links Teil des SiteNavigationElement sind und dass Google den Links zu diesen Elementen folgen sollte:

Google's Structured Data Testing Tool's result

0
David Barratt