Микроразметка [решение + проблема]

Сегодня полностью закончил добавлть микроразметку для своего сайта. Всё бы хорошо, но Яндекс ругается на:
ПРЕДУПРЕЖДЕНИЕ: не выполнено обязательное условие для острова «Статья» — обязательное поле description отсутствует
Как это должно быть, я знаю, но вот как это реализовать в LS, я не знаю. По идеи первый абзац поста должен быть заключён в
<p itemprop="description">текст первого абзаца или предложения</p>


Вот что я сделал:
1. header.tpl
Добавил:
<head xmlns:og="http://ogp.me/ns#">
...
<link rel="image_src" href="{cfg name='path.static.skin'}/images/i/logo500x500.jpg" />
<link rel="apple-touch-icon" href="{cfg name='path.static.skin'}/images/i/logo200x200.jpg" type="image/png" />
<meta property="og:image" content="{cfg name='path.static.skin'}/images/i/share-logo.png" />
	
{if $oTopic}
<meta property="og:type" content="article" />
<meta property="og:title" content="{$oTopic->getTitle()|escape:'html'}" />
<meta property="og:url" content="{$oTopic->getUrl()}" />
<meta property="og:site_name" content="{cfg name='view.name'}" />
<meta property="og:description" content="{$sHtmlDescription}..." />
<meta property="og:locale" content="ru_RU">
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="@NAME" />
{/if}


2. topic_part_header.tpl
Добавил:
<article {if !$bTopicList}itemscope itemtype="http://schema.org/Article"{/if} class="topic topic-type-{$oTopic->getType()} js-topic">
...
{if !$bTopicList}<h1 itemprop="headline"{else}<h2{/if} class="topic-title word-wrap">
...


3. .../config/jevix.php
добавляем: itemprop=«image»
		'cfgAllowTagParams' => array(
			// вызов метода
			array(
				'img',
				array('src', 'itemprop'=> array('image'), 'alt' => '#text', 'title', 'align' => array('right', 'left', 'center', 'middle'), 'width' => '#int', 'height' => '#int', 'hspace' => '#int', 'vspace' => '#int', 'class'=> array('image-center'))
			),


4. topic_photoset.tpl
Добавляем itemprop=«image» к фотопостам
<a itemprop="image" class="photoset-image" href="{$oPhoto->getWebPath(1000)}" rel="[photoset]"  title="{$oPhoto->getDescription()}"><img src="{$oPhoto->getWebPath('190crop')}" alt="{$oPhoto->getDescription()}" /></a>

Прошу заметить, я добавил itemprop=«image» не в тег
<img />
а в тег
<a></a>
Так чтоб поисковик брал большую картинку, а не привью. Для Google и Яндекс это не проблема и не будет ошибкой.

Вот результат:
Для тех, кто в танке, проверить микроразметку сайта можно в Яндексе.


Кто подскажет, как можно решить проблему description?

9 комментариев

avatar
В общем, долго и упорно бился с пробелмай, пока толку ноль.
itemprop="description"
по требованиям, должен быть длиннее 250 символов. То есть, надо как-то написать плагин/хак, который бы автоматически при публикации материала отсчитывал 250+ символов и по завершению абзаца(ов), после чего вставлял:
<p itemprop="description"> 
Текст
</p>
avatar
В каталоге есть плагин — Автокат, который ставит кат после того количества символов, которые указаны в конфиге. Покопайтесь в плагине, возможно найдете как вырезать первые 250 символов.
avatar
попробуйте добавить «topic title + description»
<meta property="og:description" content="{$oTopic->getTitle()|escape:'html'}. {$sHtmlDescription}" />

Либо заюзайте какой-нибудь плагин, которым можно настроить description страниц, например этот
avatar
Только заметил, что ваш вопрос касается schema.org… Для чего решили использовать одновременно ogp.me и schema.org? Но если решили, ставьте весь текст, никто ведь не запрещает, — где-то в topic_topic.tpl
<div itemprop="description" class="topic-content text">
avatar
Кстати, для яндекса этот
«description»
почему-то не является обязательным согласно их описанию и примерам, а вот их же валидатор посему ругается на его отсутствие. Чудны дела твои, яндексе.
avatar
Есть похожий вопрос:

Как сделать чтобы для главной страницы отображался логотип в
meta property=«og:image» content="лого.png"

а

на странице топика превью топика (плагин TopicPreview)
meta property=«og:image» content="превью топика.png"

Делал так:
{if $sAction=='index'}
    <meta property="og:image" content="лого.png" />
{else}
    <meta property="og:image" content="###" />
{/if}

Подскажите, пожалуйста, что вставить во 2 переменную?
avatar
Данная конструкция говорит что если экшен НЕ index, то там будет топик. А это не совсем так…
Думаю, лучше пойти от обратного:
{if $oTopic and $oTopic->getPreviewImageWebPath()}
    <meta property="og:image" content="{$oTopic->getPreviewImageWebPath(375crop)}"/>
{else}
    <meta property="og:image" content="лого.png" />
{/if}

где XXX размер кропа превьюшки — задается в конфиге плагина mainpreview
avatar
Благодарю
avatar
Спасибо за статью! Сделал все по инструкции, правда с мелкими доработками в своем шаблоне, но все заработало. Никаких ошибок! Даже:
<meta property="og:description"

работает, хотя там нет 250 символов, проверил на разных топиках.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.