it-swarm-id.com

Apa penggunaan schema.org SiteNavigationElement yang benar?

Dalam istilah SEO ...

Apakah yang terbaik untuk menempatkan skema pada induk berisi semua tautan?

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

... atau haruskah setiap tautan dianggap sebagai elemen tersendiri?

<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

Jika SiteNavigationElement dimaksudkan untuk seluruh navigasi (mis., Daftar tautan navigasi), contoh pertama Anda benar.

Jika SiteNavigationElement dimaksudkan untuk entri navigasi tunggal (mis., Tautan dalam daftar tautan navigasi), contoh kedua Anda benar.

Saya pikir Schema.org tidak secara jelas mendefinisikan varian mana yang dimaksudkan, karena mereka hanya mengatakan:

Elemen navigasi halaman.

Namun, tipe induk WebPageElement didefinisikan sebagai:

Elemen halaman web, seperti tabel atau gambar

Juga, semua tipe anak lainnya (seperti Table atau WPFooter ) tampaknya digunakan untuk seluruh hal, dan bukan bagian spesifik dari hal tersebut.

Jadi ini sepertinya menyarankan bahwa seluruh navigasi harus ditandai, dan tidak setiap tautan tunggal:

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

Dalam hal ini, semua properti milik seluruh navigasi, sehingga itu berarti properti url akan menentukan URL untuk navigasi ini (dan bukan URL dari tautan dalam navigasi ini!).

21
unor

Menurut Tanah Mesin Pencari , seharusnya terlihat seperti ini:

<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

Jawaban pertama benar tetapi saya akan mencampur keduanya untuk (HTML5-) semantik:

<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 extends WebPageElement dan dapat digunakan untuk menandai tautan, yang sering membuat tautan kontekstual yang bagus. Anda dapat menggunakan skema ini untuk menu halaman Anda.

<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

Itu tergantung pada mesin pencari. Diberikan potongan kode berikut:

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

Pengujian data terstruktur Yandex alat akan kembali:

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

Sedangkan alat Google mengembalikan:

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/

Kedua alat menunjukkan data terstruktur dan keduanya memberikan nilai semantik di atas dan di luar hanya menggunakan nav. Jadi sementara beberapa perasaanSiteNavigationElement harus dihilangkan seluruhnya, mereka juga, dalam aliran pemikiran yang sama mengakui yang mereka "kenali" adalah yang saya berikan di sini.

Anda harus menempatkan SiteNavigationElement dalam pembungkus di sekitar grup masing-masing URL yang digunakan dalam navigasi Anda sehingga Anda dapat menamai navigasi itu sendiri menggunakan itemprop="name".

Karena itu, contoh pertama sudah benar.

0
Josh Habdas

Pertanyaan awal OP berisi contoh kode yang bagus. tidak ada jawaban yang melakukannya ...

Tampaknya semua orang memberikan jawaban yang agak acak ... Anda dapat menguji kode microdata skema Anda menggunakan alat google resmi berikutsearch.google.com/structure-data/testing-tool .

Jika Anda menjalankan jawaban yang diajukan dalam alat ini, Anda akan melihat bahwa tidak ada yang memberi Anda hasil yang diharapkan: daftar SiteNavigationElement dengan nama & url

Beberapa mungkin berpendapat bahwa seluruh menu mungkin dianggap sebagai "elemen navigasi" tapi saya pikir lebih masuk akal bagi denominasi ini untuk menunjuk satu tautan navigasi. Ditambah lagi jika kita menggunakan SiteNavigationElement sebagai penanda untuk seluruh menu, kita tidak memiliki cara mengaitkan nama dengan URL di html.

Untuk mencapai ini, Anda harus memiliki setiap tautan yang dienkapsulasi oleh properti itemscope dan mereka semua harus memiliki name dan urlitemprop mereka sendiri (ini adalah singleton sebagaimana disebutkan oleh @David Harkness, sehingga mereka harus muncul hanya sekali 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>

Kode di atas akan membentuk dua elemen navigasi yang berbeda, masing-masing dengan nama dan URL.

Catatan: atribut itemprop="url" menggunakan atribut href jangkar sebagai nilai

0
Mathieu VIALES