2016-04-14 6 views
0

Я хочу добавить микроданные/богатые-фрагменты на мой сайт, но документация довольно неясная о некоторых вещах, предположит, что у меня есть этот КОНЦЕПТУАЛЬНЫЕ код:Microdata родителя/ребенок

<div itemscope itemtype="http://schema.org/LocalBusiness"> 
    <div itemprop="name">My Business</div> 
    <table itemscope itemtype="http://schema.org/PostalAddress"> 
     <tr><td itemprop="telephone">0612345678</td></tr> 
     <tr><td itemprop="addressCountry">Netherlands</td></tr> 
     <-- other postalAdress properties --> 
    </table> 
</div> 

Эта таблица, очевидно, имеет все контакты свойства (и находится в таблице по причинам форматирования). Проблема в том, что в этой таблице также содержится номер телефона. Тестер микроданных Google считает, что свойство «телефон» принадлежит PostalAddress, оно, однако, должно принадлежать LocalBusiness. Как это исправить?

+0

Почему 'itemscope' в вашем столе? Может, в этом и проблема? – putvande

+1

@putvande Чтобы создать предметный указатель для PostalAddress? – user2501247

+0

Возможный дубликат [Microdata on tables] (http://stackoverflow.com/questions/29684960/microdata-on-tables) – unor

ответ

0

Вытяните телефон из сферы PostalAddress:

<div itemscope itemtype="http://schema.org/LocalBusiness"> 
    <span itemprop="name">My Business</span> 
    <span itemprop="telephone">0612345678</span> 
    <div itemscope itemtype="http://schema.org/PostalAddress"> 
     <span itemprop="addressCountry">Netherlands</span> 
     <-- other postalAdress properties --> 
    </div> 
</div 

От schema.org:

Добавляя itemscope, вы указываете, что HTML, содержащиеся в <DIV> .. . </div > блок - это определенный предмет.

Edit: Если вы не можете изменить структуру DOM, это лучшее, что я могу придумать:

<div itemscope itemtype="http://schema.org/LocalBusiness" itemref="phone"> 
    <div itemprop="name">My Business</div> 
    <table itemscope itemtype="http://schema.org/PostalAddress"> 
     <tr itemscope><td itemprop="telephone" id="phone">0612345678</td></tr> 
     <tr><td itemprop="addressCountry">Netherlands</td></tr> 
     <-- other postalAdress properties --> 
    </table> 
</div> 
+0

Это, конечно же, возможность, но это уклонение от проблемы. При таком подходе я должен переделать все форматирование. Там должно быть более простое решение, потому что это типичная проблема с именами. – user2501247

+0

@ user2501247 Я добавил еще один пример, но я думаю, что он более уродливый и менее понятный. Тем не менее, это единственный способ, которым я могу думать, чтобы получить это свойство, назначенное вашему объекту LocalBusiness. Несмотря на то, что для реорганизации вашей структуры DOM может показаться дополнительным трудом, я бы избежал таблицы и написал ее «лучше», если у вас есть такая возможность. – Quantastical

+0

Проблема с этим решением заключается в том, что если у меня есть два элемента, которые входят в родительскую область, у меня есть недействительный синтаксис HTML (два тега с одинаковым идентификатором). Мне кажется, что это смешно, что обзор очень плохо поддерживается, это кажется повседневной проблемой. – user2501247