Ответ 1
Пример Google Microdatah3 >
Пример Google Microdata недействителен. Если элемент meta
имеет атрибут itemprop
, требуется атрибут content
(подробнее).
Я описал различные способы, как указать mainEntityOfPage
в Microdata, наиболее сложным из которых является элемент link
, который создает значение URL (вместо другой Microdata пункт):
<link itemprop="mainEntityOfPage" href="#" onclick="location.href='http://example.com/article-1'; return false;" />
mainEntity
Легче понять использование mainEntityOfPage
, если мы сначала посмотрим его обратное свойство, mainEntity
.
При a WebPage
, который содержит BlogPosting
, мы могли бы иметь:
<body itemscope itemtype="http://schema.org/WebPage">
<article itemprop="mainEntity" itemscope itemtype="http://schema.org/BlogPosting">
</article>
</body>
Это означает: the и BlogPosting
, а BlogPosting
- это "первичный объект", описанный в этом WebPage
. Это означает, что это особенно важно, если есть больше элементов, например, Person
, описывающих автора, еще пять элементов BlogPosting
для связанных записей, элемент WebSite
, дающий некоторые метаданные и т.д. Благодаря mainEntity
/mainEntityOfPage
, потребители могут узнать, что основной/основной элемент на этой странице (то есть, что означает страница).
mainEntityOfPage
Следующий пример с mainEntityOfPage
приведет к эквивалентным структурированным данным, таким как пример с mainEntity
сверху:
<article itemscope itemtype="http://schema.org/BlogPosting">
<div itemprop="mainEntityOfPage" itemscope itemtype="http://schema.org/WebPage">
</div>
</article>
Как вы можете видеть, элемент для элемента BlogPosting
содержит элемент для элемента WebPage
. Это, конечно, довольно необычная разметка.
Но свойство mainEntityOfPage
не только ожидает значение (CreativeWork
) как значение, оно также ожидает URL. Поэтому вместо того, чтобы явно указывать элемент WebPage
, вы можете указать URL-адрес страницы:
<article itemscope itemtype="http://schema.org/BlogPosting">
<link itemprop="mainEntityOfPage" href="#" onclick="location.href='http://example.com/article-1'; return false;" />
</article>
(Этого ожидает Google в соответствии с их документацией для Статьи Rich Snippet.)
Excursus: URL-адрес страницы и сообщения
Многие сайты не различают URL-адрес веб-страницы и URL-адрес для сообщения в блоге. Для этих сайтов может показаться глупым заявить что-то вроде
http://example.com/article-1 (the blog post)
is the 'mainEntityOfPage'
http://example.com/article-1 (the web page)
http://example.com/article-1 (the web page)
has 'mainEntity'
http://example.com/article-1 (the blog post)
Но это может быть полезно в любом случае (например, для выбора того, какой элемент является основным, потому что другие элементы не будут иметь этот оператор или для пустого node и т.д.).
Однако некоторые сайты различают (особенно для Связанные данные), поэтому они могут указывать что-то вроде
http://example.com/article-1#this (the blog post)
is the 'mainEntityOfPage'
http://example.com/article-1 (the web page)
http://example.com/article-1 (the web page)
has 'mainEntity'
http://example.com/article-1#this (the blog post)
Здесь http://example.com/article-1#this
представляет сообщение в блоге, а http://example.com/article-1
представляет страницу с информацией об этой публикации (или содержимом самой публикации). Более ясным примером будет человек и страница об этом человеке; или здание, и страницу об этом здании. См. Мой ответ на пример почему вы можете это сделать. (Но, как объяснялось выше, вам не нужно различать, вы можете использовать один и тот же URL для обоих.)