» » Микроразметка рейтинга новостей в DLE для Google и Yandex

20-07-2017, 14:44

Микроразметка рейтинга новостей в DLE для Google и Yandex 

Микроразметка рейтинга новостей в DLE для Google и Yandex

Микроразметка (семантическая разметка) от Schema.org и её роль в продвижении сайта. Это в буквальном смысле «выдуманный» синтаксис HTML атрибутов, созданный с целью чёткого обозначения роли конкретного участка сайта, а также передачи информации для парсеров (поисковых систем, социальных сетей, любых других ботов).

Существует несколько никак не связанных между собой видов микроразметки, привожу их в порядке убывания популярности:

Open Graph;
Schema.org;
Микроформаты;
FOAF;
Data Vocabulary;
Dublin Core;
Good Relations.

Каждый из них был создан различными командами энтузиастов и служит различным целям. Сегодня мы остановимся на микроразметке от Schema.org

Микроразметка появилась в 2011 году. Основная суть использования – расширенные сниппеты в результатах поиска, что дает надежду на повышение релевантности.

Правильно составленная микроразметка страницы даёт некоторые гарантии о более полном и правильном описании этой страницы в поисковой выдаче. Чтобы лучше понять о чём речь, сравните, как выделяется в результатах поиска сайт с рейтингом (благодаря микроразметке) и без рейтинга...

Микроразметка рейтинга новостей в DLE для Google и Yandex
Вариант вывода страницы в поиске Google с микроразметкой

Микроразметка рейтинга новостей в DLE для Google и Yandex
Вариант вывода страницы в поиске Google без микроразметки


Вероятность срабатывания микроразметки в DLE не очень велика, приходится надеяться на «повезет — не повезет». Многие вебмастера стали злоупотреблять подобной микроразметкой, и Google отключил для большинства сайтов расширенные сниппеты. Тем не менее, мизерная вероятность включения для вашего сайта подобной красоты все же существует. Так что грех не попытаться... И так, начнем!

Модификация рейтинга новостей в DLE под микроразметку (устанавливать можно на версиях DLE от 9.6 и до актуальной на сегодняшнее воемя 10.3)
— Обязательная настройка скрипта! Настройка групп пользователей -> Гости -> Вкладка «Новости» -> Разрешить выставление рейтинга новостей: Да.
— Вывод рейтинга со страниц коротких новостей shortstory.tpl рекомендуется убрать...

Открываем файл /engine/modules/functions.php и находим:
function ShowRating($id, $rating, $vote_num, $allow = true) {
	global $lang;
	
	if( $rating AND $vote_num ) $rating = round( ($rating / $vote_num), 0 );
	else $rating = 0;
	$rating = $rating * 20;
	
	if( !$allow ) {
		
		$rated = <<<HTML
<div class="rating">
		<ul class="unit-rating">
		<li class="current-rating" style="width:{$rating}%;">{$rating}</li>
		</ul>
</div>
HTML;
		
		return $rated;
	}
	
	$rated = <<<HTML
<div id='ratig-layer-{$id}'><div class="rating">
		<ul class="unit-rating">
		<li class="current-rating" style="width:{$rating}%;">{$rating}</li>
		<li><a href="#" title="{$lang['useless']}" class="r1-unit" onclick="doRate('1', '{$id}'); return false;">1</a></li>
		<li><a href="#" title="{$lang['poor']}" class="r2-unit" onclick="doRate('2', '{$id}'); return false;">2</a></li>
		<li><a href="#" title="{$lang['fair']}" class="r3-unit" onclick="doRate('3', '{$id}'); return false;">3</a></li>
		<li><a href="#" title="{$lang['good']}" class="r4-unit" onclick="doRate('4', '{$id}'); return false;">4</a></li>
		<li><a href="#" title="{$lang['excellent']}" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li>
		</ul>
</div></div>
HTML;
	
	return $rated;
}

function userrating($id) {

Заменить на следующий код:
function ShowRating($id, $rating, $vote_num, $allow = true) {
	global $lang;
 
	if( $rating AND $vote_num ) $rating = round( ($rating / $vote_num), 0 );
	else $rating = 4;
	$AVERrating = $rating;
	$rating = $rating * 17;
 
	if( !$allow ) {
 
		$rated = <<<HTML
<div class="rating">
		<ul class="unit-rating">
		<li class="current-rating" style="width:{$rating}px;">{$rating}</li>
		</ul>
</div>
HTML;
 
		return $rated;
	}
 
	$rated = <<<HTML
<div id='ratig-layer-{$id}'><div class="rating">
		<ul itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating" class="unit-rating">
		<li itemprop="average" class="current-rating" style="width:{$rating}px;">{$AVERrating}</li>
		<li><a href="#" title="{$lang['useless']}" class="r1-unit" onclick="doRate('1', '{$id}'); return false;">1</a></li>
		<li><a href="#" title="{$lang['poor']}" class="r2-unit" onclick="doRate('2', '{$id}'); return false;">2</a></li>
		<li><a href="#" title="{$lang['fair']}" class="r3-unit" onclick="doRate('3', '{$id}'); return false;">3</a></li>
		<li><a href="#" title="{$lang['good']}" class="r4-unit" onclick="doRate('4', '{$id}'); return false;">4</a></li>
		<li itemprop="best"><a href="#" title="{$lang['excellent']}" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li>
		</ul>
</div></div>
HTML;
 
	return $rated;
}
 
function userrating($id) {

Открываем файл /engine/modules/show.full.php и находим код:
if( $row['allow_rate'] ) { 
 
			$tpl->set( '{rating}', ShowRating( $row['id'], $row['rating'], $row['vote_num'], $user_group[$member_id['user_group']]['allow_rating'] ) );
			$tpl->set( '{vote-num}', "<span id=\"vote-num-id-".$row['id']."\">".$row['vote_num']."</span>" );
			$tpl->set( '[rating]', "" );
			$tpl->set( '[/rating]', "" );
 
		} else {

Заменяем этот код на следующий:
if ( $row['vote_num'] == 0 ) $row['vote_num'] = 1;
 
		if( $row['allow_rate'] ) { 
 
			$tpl->set( '{rating}', ShowRating( $row['id'], $row['rating'], $row['vote_num'], $user_group[$member_id['user_group']]['allow_rating'] ) );
			$tpl->set( '{vote-num}', "<span itemprop=\"votes\" id=\"vote-num-id-".$row['id']."\">".$row['vote_num']."</span>" );
			$tpl->set( '[rating]', "" );
			$tpl->set( '[/rating]', "" );
 
		} else {

Открываем файл /Ваш шаблон/fullstory.tpl и после {full-story} добавляем код:
[rating]<div itemscope itemtype="http://data-vocabulary.org/Review-aggregate"><div style="float:left;width:100px;">Рейтинг:</div>{rating}<div style="float:left;width:120px;">(голосов: {vote-num})</div></div>[/rating]

Если вдруг это будет криво отображаться в вашем шаблоне, то, извините, изучите наконец что такое CSS. Если у вас возникли проблемы или вопросы, типа «помогите, все криво и съехало, я полный нуб», пишите в комментариях, постараемся вам в этом помочь...

Вот как бы и все :) Как все просто делать по инструкции, не правда ли?

Осталось проверить, что все сделано правильно при помощи инструмента проверки структурированных данных Google
Должно получиться что-нибудь следующее для полной новости:

Микроразметка рейтинга новостей в DLE для Google и Yandex

Еще раз напомню, что вероятность появления такого сниппета, как показывает нам инструмент проверки крайне мала, но она есть!

Более подробно про данный вариант микроразметки можно прочитать в мануалах Google. Там же приведены все три способа разметки: микроданные, микроформаты и RDFa. В рассмотренном случае я решил использовать микроданные, никакой принципиальной разницы между этими вариантами нет, они работают одинаково.

Теперь скрестим пальцы и мечтаем, чтобы микроразметка рейтинга новостей понравилась Google и он ее включил в результаты поиска. А там и серьезный рост CTR, хороший трафик, рост позиций, горы бабла…

Спасибо за внимание, друзья, пишите комментарии и задавайте вопросы.

Источник: alaev.info
 Написал DataLife Пользователь offline (4 ноября 2014 19:56)   Пожаловаться  
Ах да, чуть не забыл.. Инструмент для проверки микроразметки рейтинга новостей в Яндексе: Яндекс Валидатор микроразметки. Для проверки в Google я уже указал в статье, но на всякий случай продублирую ссылку: инструмента проверки структурированных данных Google
 Написал Krap (28 марта 2015 22:16)   Пожаловаться  
Админ ты здесь? у меня ошыбка
 Написал DataLife Пользователь offline (18 апреля 2015 15:26)   Пожаловаться  
Какая именно ошибка?