• Автор:

    Flesha
  • Добавлено:

    авг 16, 2015
  • Комментариев:

    3
  • Просмотров:

    1 777

Микроразметка рейтинга в DLE по schema.org

Микроразметка рейтинга в DLE по schema.org

Сегодня будем делать микроразметку рейтинга для DLE по версии schema.org. Алаич уже показывал пример микроразметку для DLE. Но эта версия немного улучшена и доработана, все фишки которые описывал Саша, остались в своем девственном виде. Ну что вы готовы выделится в поисковых системах? Сразу хочется отметить что к seo это отношения не имеет, но ваш seo блог или сайт сможет выделится в поисковой выдаче.

Приступим:

1. Открываем файл /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) {



Вносим поправки в код, начинаю с версии 10.4, в движке несколько типов рейтингов, нам нужны только звёздочки:
if( !$config['rating_type'] ) {
if( $rating AND $vote_num ) $rating = round( ($rating / $vote_num), 0 );
else $rating = 0;
if ($rating < 0 ) $rating = 0;
$rating = $rating * 20;


Меняем на
if( !$config['rating_type'] ) {
if( $rating AND $vote_num ) $rating = round( ($rating / $vote_num), 0 );
else $rating = 4;
if ($rating < 0 ) $rating = 0;
$AVERrating = $rating;
$rating = $rating * 17;


Ниже находим:
<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>


Меняем на:
 <div id='ratig-layer-{$id}'><div class="rating">
<ul itemprop="rating" itemscope itemtype="https://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>


!!Сохраняем и закидываем на хостинг с заменой.

Открываем файл /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="reviewCount" id="vote-num-id-".$row['id']."">".$row['vote_num']."</span>" );
$tpl->set( '[rating]', "" );
$tpl->set( '[/rating]', "" );
} else {

!! Сохраняем и закидываем на хостинг с заменой.

Открываем файл /templates/*Имя Темы*/fullstory.tpl и в самом начале файла добавляем:
<div itemscope itemtype="https://schema.org/Product">


Ищем тег {title} и заменяем на:
<span itemprop="name">{title}</span>


В самый конец файла, добавляем:
</div>


Ну и для вывода самого рейтинга, в нужном месте вставляем:
<div itemprop="aggregateRating"
itemscope itemtype="https://schema.org/AggregateRating">
[rating]<div style="float:left;width:100px;">Рейтинг:</div>{rating}<div style="float:left;width:120px;">(голосов: {vote-num})</div>[/rating]
</div></div>


!! Сохраняем и закидываем на хостинг с заменой.

На выходе, мы будем иметь код, который в идеале будет выглядеть примерно так:
Микроразметка рейтинга в DLE по schema.org


Который прекрасно проходит проверку как в:
Яндекс Валидатор микроразметки

Так и в:
Гугл Валидатор микроразметки

Ну вот в принципе и все!
!! Все визуальные оформления вывода рейтинга в вашем шаблоне, это сугубо дело каждого.

Информация обновлена для версии движка DLE 10.4 - 10.5 dle
Вернуться

Комментарии:


  1. Дмитрий Соломатин → 17 августа 2015 19:50
    Описание установки не верное в 1 пункте.
  2. bonopard → 8 января 2016 02:19
    Напишите верное решение по рейтингу для 10.6 Заранее благодарен.
    1. Илья Остапенко → 8 января 2016 08:35
      *Удалено*
      Вру вру;) Перепутал с хлебными крошами;D
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.