1 (15.10.2013 02:03 отредактировано Hooligan)

Тема: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

Здравствуйте дорогие братья по оружию.
Сейчас, я плотно занят микроразметкой нескольких корпоративных (заказных) сайтов, заказчик поставил задачу, разметить сайты по версии schema.org, так вот к чему я это. Прочитав пост Александра Микроразметка рейтинга новостей в DLE для Google по версии schema.org, я вынужден с ним немного не согласится и привести пример, своей реализации микроразметки рейтинга в DLE 10.
По сути, я лишь немного его доработал, конкретно под формат Schema, все плюшки которые описал Саша, остаются в не тронутом виде.
С позволения АлаиЧа, поехали!!

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

и заканчивается:

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 class="unit-rating">
        <li itemprop="ratingValue" 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><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=\"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>

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

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

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

Что то длинноватый пост вышел, но думаю, что объяснил доходчиво!
Ну вот в принципе и все, что я хотел вам поведать!
! Все визуальные оформления вывода рейтинга в вашем шаблоне, это сугубо дело каждого.
! PS: Как всегда, жду вашей критики! Спасибо!

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

Hooligan, Круто! Спасибо тебе за проделанную работу.
Топик перенес в раздел про DLE, но ссылку и в прежнем месте оставил. Так же пометил тему как важную.

3

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

admin пишет:

Hooligan, Круто! Спасибо тебе за проделанную работу.
Топик перенес в раздел про DLE, но ссылку и в прежнем месте оставил. Так же пометил тему как важную.

Не за что, думаю скоро выложу примеры разметки страниц под конкретные нужды!

4

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

Так должно быть в ЯШЕ:

product

    itemType = http://schema.org/Product
    name = Название новости
    aggregaterating
        aggregaterating
            itemType = http://schema.org/AggregateRating
            ratingvalue = 5
            reviewcount = 2

?

5

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

ExVood пишет:

Так должно быть в ЯШЕ:

Да!

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

Вопрос к спецу темы, что все это дает ?
не совсем понял.

7

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

vl-it, не берите в голову, со временем поймёте, или когда потребуется.

+ DVE

8

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

vl-it пишет:

Вопрос к спецу темы, что все это дает ?
не совсем понял.

Все это, нам дает красивый вывод сайта в результатах поиска (сниппеты)

PS: не спец темы, а Топик Стартер или ТС!
хотя Спец Темы СТ! Тоже ничего))) Но от общепринятого понятия думаю отходить не стоит!

9

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

Видео и фото как-то можно разметить в DLE?

10

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

*Gaara* пишет:

Видео и фото как-то можно разметить в DLE?

конечно, ждите, скоро все все узнают))

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

На новом сайте код Алаича не ставил. Можно здесь полную инструкцию по установке? Мне первый пункт вообще не ясен smile

И можно инструкцию под рейтинг в 10 звезд?

12

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

Axel пишет:

На новом сайте код Алаича не ставил. Можно здесь полную инструкцию по установке? Мне первый пункт вообще не ясен smile

И можно инструкцию под рейтинг в 10 звезд?

Подписывайтесь на новости блога maximoff.com.ua и вы будете в курсе выхода мануала о интересующей вас разметке!

13 (09.10.2013 06:05 отредактировано Axel)

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

Hooligan, Кинул блог в закладки.
Когда примерно ждать статью о микроразметке рейтинга? Будет ли там инструкция для рейтинга в 10 звезд?

Предложения по блогу:
- Разбейте текст по абзацам. Трудновато читать, когда текст в куче... Вообще, уделите внимание форматированию текста.
- Сделайте голотип в шапке ссылкой на главную. По привычке тыкаю в него постоянно smile

14

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

Hooligan, на 97 будет работать?

15

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

Chapman пишет:

на 97 будет работать?

берете делаете бэкап, проводите эксперимент, работает, оставляете, не работает, откатываете измененные файлы.

16

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

Chapman пишет:

Hooligan, на 97 будет работать?

Будет работать, начиная с дле 9.0

Добавлено: 10.10.2013 23:39

Axel пишет:

Hooligan, Кинул блог в закладки.
Когда примерно ждать статью о микроразметке рейтинга? Будет ли там инструкция для рейтинга в 10 звезд?

Предложения по блогу:
- Разбейте текст по абзацам. Трудновато читать, когда текст в куче... Вообще, уделите внимание форматированию текста.
- Сделайте голотип в шапке ссылкой на главную. По привычке тыкаю в него постоянно smile

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

17

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

Помогите пожалуйста, на всех моих сайтах все работает прекрасно но не работает на моем любимом сайте http://www.androidsland.ru/, все делал по инструкции, в чем может быть причина?

18

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

samo733792 пишет:

Помогите пожалуйста, на всех моих сайтах все работает прекрасно но не работает на моем любимом сайте http://www.androidsland.ru/, все делал по инструкции, в чем может быть причина?

Ну гугл же ясно пишет
Ошибка. If count is specified in review aggregate, page should contain reviews. Otherwise you may want to use votes. More information about aggregate reviews.
Ошибка. Rating could not be normalized.
Ошибка. Rating is empty.

Поставьте рейтинг еще раз и по инструкции!!

19

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

Да я сделал это сто раз, шаблон поменял,  сайт обновил на DLE 10.1 и все так же.

20

Re: Микроразметка рейтинга полной новости в DLE 10.0 по schema.org

samo733792 пишет:

Да я сделал это сто раз, шаблон поменял,  сайт обновил на DLE 10.1 и все так же.

А вы сделайте 101 раз, я вас уверяю, что вы, допустили ошибку!