Все для DataLife Engine / DLE хаки / Хак для DLE / Микроразметка schema.org рейтинга в DLE 10.5

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


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

Информация Обновлена для версии движка dle 10.5 - dle 10.4

Приступим:
открываем файл /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="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>


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

Открываем файл /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="http://schema.org/Product">


Ищем тег {title} и заменяем на:

<span itemprop="name">{title}</span>


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

</div>


Ну и для вывода самого рейтинга, в нужном месте вставляем:

<div itemprop="aggregateRating"
        itemscope itemtype="http://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.5
  • 60

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

snamp от 12 октября 2015 08:09
Да и когда "Открываем файл /engine/modules/show.full.php и находим:"
и заменяем, то на сайте вылазит ошибка - хрень не проверенную выкладываете
snamp от 10 октября 2015 10:32
Свойство rating недопустимо для объекта типа AggregateRating. это на рейтинг, просто у меня разметка для <div itemscope itemtype="http://schema.org/MusicRecording">
как исправить?
dle9.com от 14 сентября 2015 04:35
Цитата: snamp
А если у меня нравится/не нравится - ни как не проконает?

да, это только для звездочек (если звезды используются)
snamp от 13 сентября 2015 21:28
А если у меня нравится/не нравится - ни как не проконает?
Добавить комментарий

Оставить комментарий

    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent