Как реализовать "mainEntityOfPage" на этом конкретном сайте?

Пожалуйста, смотрите здесь: https://developers.google.com/structured-data/testing-tool?url=https%253A%252F%252Fglamourina.net%252Fen%252F

Как я могу правильно добавить mainEntityOfPage на этот сайт?

В примере документации Google я вижу примерно следующее:

<div itemscope itemtype="http://schema.org/NewsArticle">

  <meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="https://google.com/article"/>

Но это единый блог автора. И он имеет blogPosts.

<article itemscope itemtype="https://schema.org/BlogPosting" class="singlearticles">

Было бы хорошо, если бы я изменил его так:

<article itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="https://linktoarticle"/>

Не знаю, хорошо ли я понимаю использование mainEntityOfPage. Я был бы признателен, если кто-то может предложить, как я могу сделать это конкретное дело/сайт. Не в общем, потому что каждый сайт может иметь другой mainEntityOfPage, но мне нужно знать и понимать правильную реализацию для этого сайта.

Ответ 1

Пример Google Microdata​​h3 >

Пример 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 для обоих.)