2012-09-19 53 views
30

在搜索引擎優化條件...schema.org SiteNavigationElement的正確用法是什麼?

是最好把計劃放在包含所有鏈接的父級?

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

......還是應該將每個鏈接視爲自己的元素?

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

回答

9

第一個答案是正確的,但我願意爲混合兩者(HTML5-)語義:

<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

這樣做的結果的網址和名稱,都在同一組的名單,沒有一個單一的網址和名稱之間的任何關係。我認爲應該有一些方法來表明每個列表元素是一個具有一個URL和一個名稱的實體。 –

+1

一般而言,你是對的,當然。但是正如我們在談論導航時,我假設這些鏈接都屬於一個整體,不是嗎? –

19

如果SiteNavigationElement是爲整個導航(即導航鏈接列表),你的第一個例子是正確的。

如果SiteNavigationElement是針對單個導航條目(即,導航鏈接列表中的鏈接),則您的第二個示例是正確的。

我覺得Schema.org不明白地定義其變體的意思,因爲他們只會說:

的頁面的導航元素。

然而,父類型WebPageElement定義爲:

一個網頁元件,像一個表或​​圖像

此外,所有的其他子類型(如TableWPFooter)似乎被用於整個事情,而不是事物的具體部分。

因此,這似乎表明,整個導航應標明瞭,不是每個單獨的鏈接:

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

在這種情況下,所有的屬性屬於整個導航,所以這意味着url財產將指定此導航的URL(並且而不是此導航中的鏈接的URL!)。

+3

所以根據你的回答,這Microdata只是引入菜單serach引擎...不是結構的菜單! – user3307827

+0

@chharvey:是的。它[在非HTML上下文或特殊情況下可能有意義](http://stackoverflow.com/a/27867175/1591669),但對於典型的Web頁面,我不會使用「WebPageElement」及其子類型像'SiteNavigationElement'。 – unor

+0

如果有一個包含微數據的body標籤:''我需要添加'itemprop'來導航嗎?如果是,那麼導航中'itemprop'的值是多少? – 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

Search Engine Land,它應該是這樣的:

<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沒有解釋什麼是不正確的這個答案? –

+0

我沒有投票,但我確實發現'name'和'url'不明確。這是代表實際價值應該是什麼,或者只是一個地方持有人向觀衆展示相關信息應該出現的位置。 –

+1

'url'標識URL,'name'標識名稱(即鏈接2)。所以不,他們不是佔位符。 –

2

schema.org/SiteNavigationElement延伸WebPageElement並且可以用來加價環節,這往往使良好的上下文鏈接。您可以將此架構用於頁面菜單。

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