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

Микроразметка рейтинга новостей в DLE Привет, друзья. Сегодня решил спалить очередную тему по модификации нашего любимого движка DLE – будем делать микроразметку рейтинга новостей для расширенного сниппета Google Rich Snippets. Как вы помните, в прошлый раз мы делали микроразметку хлебных крошек, если еще не читали, сделайте это сейчас.

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

Смотрите, вот нашел пример у Гугла для своего же блога:

Пример рейтинга в сниппете Google для блога alaev.info

* — мой блог работает на WordPress, а разметка фейковая, я привожу его тут просто в качестве примера работы разметки.

Эту разметку я внедрял фиг знает как давно и вообще про нее позабыл, но она иногда встречается, как видите. Как и по каким алгоритмам Google выбирает, где показать звездочки, я не знаю, т.к. размечены все посты, а красивый сниппет показывается всего для нескольких постов и они еще постоянно меняются.

Кстати, прошу обратить внимание еще на тот факт, что у меня в сниппете имеются красивые хлебные крошки, но я их никак не размечал, Google их сам определил и встроил в сниппет для всего моего сайта. И что еще интереснее, я видел несколько примеров сайтов, где не были размечены рейтинги-звездочки, но Гугл все равно показывал их в сниппете. Зная все это, становится понятно, что особенно-то манипулировать этими вещами не получится, поисковик все равно сделает по-своему.

Не смотря ни на что мы будем пытаться, кому-то да повезет.

Модификация рейтинга новостей в DLE под микроразметку

Внимание!!! Несколько условий, невыполнение которых приводит к различным проблемам и ошибкам:
— Данные инструкции применимы для DLE версий 9.6 и 9.7. (Для более ранних версий есть пара решений в комментариях, но я за них не ручаюсь).
— Обязательная настройка движка! Настройка групп пользователей -> Гости -> Вкладка «Новости» -> Разрешить выставление рейтинга новостей: Да.
— Вывод рейтинга со страниц категорий рекомендуется убрать, т.е. удалить упоминания рейтинга из шаблона shortstory.tpl. Или можно проделать следующее — #comment-13374 — но я бы не рекомендовал.

Итак, нам придется допилить несколько файлов движка, чтобы все заработало так, как мы этого хотим, а так же применим несколько хитростей, но обо всем по порядку…

Приступим, открываем файл /engine/modules/functions.php и находим:

function ShowRating($id, $rating, $vote_num, $allow = true) {
	global $lang;
 
	...
 
	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 {

Сохраняем файл, загружаем на сервер, заменяя прежнюю версию файла.

Пришло время рассказать о «хитрости» — она заключается в следующем. Если, например, новость совсем свежая, то для нее вряд ли есть данные о рейтинге, никто просто не успел проголосовать, и тогда количество голосов будет равно 0, а это ошибка, ну, то есть Google скажет, что мы его обманываем и никакого рейтинга у нас пока нет. Так вот, я модифицировал код таким образом, что если у нас 0 голосов, то делается «как будто» есть один голос, и это решает проблему с ошибкой, рейтинг будет одобрен Гуглом.

И вот, файлы движка модифицированы, остался последний штрих – добавить рейтинг в шаблон нашей темы оформления. Даже если у вас уже выводится рейтинг в шаблонах, то придется его серьезно доработать. В любом случае, рекомендую мой вариант, он заведомо рабочий.

Открываем файл /templates/*название вашей темы*/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.
Должны получить что-то подобное:

Отображение расширенного сниппета с рейтингом в Google

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

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

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

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

Александр «АлаичЪ» Алаев
Александр «АлаичЪ» Алаев

Вот уже 18 лет я профессионально занимаюсь созданием и продвижением сайтов и 13 лет с удовольствием пишу в любимый блог. Создал заслужившие доверие в seo-сообществе программы FastTrust и ComparseR и известный сервис для проверки траста сайтов CheckTrust.ru.

В 2014 основал веб-студию «АлаичЪ и Ко» в Краснодаре: 1 место в рейтинге агентств интернет-маркетинга (Рейтинг Рунета), 2 место в рейтинге SEO-компаний (CMSmagazine), 12 место в рейтинге известность бренда SEO-компаний в России (SeoNews).

Выступаю на профильных конференциях (All In Top, SEO Conference, SEMPRO, Baltic Digital Days). Веду канал в telegram про seo и бизнес. SEO-специалист года 2019 и 2020 (Sape).

Ерунда и баянЪ!Зачет! Плюсую!
+41

Профессиональный технический аудит и рекомендации по оптимизации вашего сайта.
Тот самый необходимый «фундамент» для успешного продвижения.

30 000 руб.

Комплексный подход к решению поставленных задач: достижение топ-10 и увеличение трафика на сайт. В стоимость уже включены полный технический аудит и оптимизация сайта.

45 000 руб.

У вас недостаточно знаний и нужны ответы на вопросы?
Интересует мнение эксперта или надо проверить подрядчика?
Вы задаете вопрос — я отвечаю!

5 000 руб./час

Проведу подробное исследование вашего сайта и основных конкурентов, опубликую материал на блоге для обсуждения и коллективного поиска новых идей.

70 000 руб.

Я начал запись своего обучающего курса по seo-продвижению.

В каждом видео я разбираю какую-то одну важную тему, и делаю это последовательно, в порядке, подходящем для изучения с нуля. Видео выкладываются раз в неделю – по средам. Я думаю, весь курс будет состоять из 50-70 роликов, так до конца еще далеко, а значит самое время подписаться и начать изучение вместе со мной.

В блоке слева всегда будет выводиться самое свежее видео курса. Ссылки: на мой канал, на плейлист обучения.

Комментарии: 170 Написать комментарий
  1. Келли Дженко (1 комм.)

    Алаичъ, можешь замутить ленту подобного рода статей о микрозаметках?

    Ответить
    • АлаичЪ

      Так а все...больше нечего размечать особо то. Или есть предложения?

      Ответить
      • ПафНутиЙ (124 комм.)

        Новости и комментарии, но это сугубо индивидуально, т.к. лучше делать не универсльное решение, а конкретно под сайт.

        Комменты можно только разметить универсально.

        Ответить
        • АлаичЪ

          Зачем размечать комменты и что нам это даст в итоге?

          А вообще — я ничего просто для того чтобы было делать не стану, если мне что-то на моих сайтах пригодится и я этим заморочусь, то я поделюсь решением. Как говорится, "на заказ" делать не стану...

          Ответить
          • drabadan (7 комм.)

            Сань,очень хотелось бы видеть на твоем блоге статьи про микроразметку для wordpress.

            Ответить
            • АлаичЪ

              Если будет желание, сделаю. А так я уже где-то видел парочку публикаций про микроразметку WP.

              Ответить
      • Oleg (1 комм.)

        Да что вы говорите? Разве нечего? А гугл думает по другому. https://support.google.com/webmasters/answer/99170?hl=ru

        Вот полный список микроразметок

        Отзывы

        Люди

        Товары

        Компании и организации

        Рецепты

        Мероприятия

        Музыка

        П.С. Ну вы здесь и огорода нагородили(с учетом комментов ниже). Чуть ли не новую цмс-ку придумали))) Зачем переписывать файлы движка? если можно просто повставлять html-теги в шаблон, типа <span itemprop="name">имя</span>, <span itemprop="nickname">кликуха</span> и т.д.

        Ответить
  2. ПафНутиЙ (124 комм.)

    Саша, Спасибо!

    Как раз делаю шаблон с микроразметкой и такая лень была ковыряться с рейтингом, а тут статья. Очень вовремя.

    Вопрос: почему data-vocabulary.org? если в заголовке ты говоришь о schema.org? или я чего то не понимаю?

    Только вот noindex — лишнее, несемантичный же тег.

    Ответить
    • АлаичЪ

      Да пожалуйста! :)

      Разумное замечание по поводу schema.org, я, видимо, домал про одно, писал другое =) На самом деле разницы никакой и нет, можно заменить адрес в itemtype и будет полное соответствие заголовку...

      Про noindex спасибо, что заметил, это я без изменений вставил свой код, можно убрать его, опять же — это ни на что не влияет.

      Ответить
      • Artem (4 комм.)

        АлаичЪ, Яндекс же вроде не учитывает noindex уже. Даже есть слухи, что он его отметил...

        Ответить
        • АлаичЪ

          Спорный вопрос, учитывает или нет. Тем не менее, этот тег не отменен и описан в мануалах Яндекса — http://help.yandex.ru/webmaster/?id=1111858

          Ответить
  3. Евгений (7 комм.)

    Ох...ть, спасибо огромное, давно мечтал о такой микроразметке.

    Ответить
  4. Ванчик (41 комм.)

    Окончание вызвало громкий смех!)))... Саша, спасибо огромное, это то что я давно ищу!

    Ответить
  5. Serik (11 комм.)

    Если проверка в Гугле не показывает звёздочки то всё, не получилось для сайта это сделать? Всё сделал как написано (ошибиться то не в чем), а звёзд при проверке не видно...

    А внизу проверки вот такая шляпа:

    Item type: http://data-vocabulary.org/review-aggregate

    property:

    votes: 1

    Внимание! Missing "rating" field.

    Ответить
    • АлаичЪ

      Ну значит неправильно сделал, раз такая ошибка выдается.

      Я надеюсь, на проверяемой странице сайта рейтинг-то видно?

      Ответить
      • Serik (11 комм.)

        АлаичЪ, сделать не правильно не реально — всего 3 файла поправить то :)

        В полной новости рейтинг виден (скривило конечно немного диз, но вряд ли из-за этого не работает). Причём через data-vocabulary.org есть ошибка, а через schema.org нет, но и так и так звёзд не показывает :(

        Хоть убейся но не работает... Шаблон не при чём — менял три разных :(

        Ответить
        • Serik (11 комм.)

          Я починил у себя неотображение :)

          АлаичЪ, добавь в шапку обязательное условие работоспособности: группе Гости не отключать возможность выставления рейтинга новостям.

          Ответить
          • АлаичЪ

            Отлично! Спасибо за важное дополнение — добавил пометку в пост!

            Ответить
      • Андрей (1 комм.)

        Какая версия php нада, для работы скрипта? У меня php 5.2.10 это нормально или надо более новый... Выставляю рейтинг 3 прошу друга выставить рейтинг он ставит 4, выставляется 4 звезды а количество человек проголосовавших всегда 1... ну что за хрень (( помогите!

        Ответить
  6. doragon (5 комм.)

    Безумно радуют вот такие вот "специалисты" с их "хитростями" :)

    Статья полезна как некое "how to".

    Однако, автор снимает ответственность с себя за то, что верстка может "уползти". Тем не менее, использует инлайновые стили и называет всех потенциально "сломавшихся" "дебилами и полными нубами". Вот только вопрос: далеко ли сам автор ушел от этого "нубства"?

    Ответить
    • АлаичЪ

      А может я должен брать на себя еще и ответственность за то, что вашу машину не угонят? Все что вы делаете с движком по информации взятой не с официального сайта — вы делаете на свой страх и риск, и так было всегда.

      Если ваши познания в верстке ушли дальше моих — поздравляю!

      Ответить
    • ПафНутиЙ (124 комм.)

      Автор и не говорит, что он мегаверстальщик, инлайн стили не являются чем то страшным, особенно для СЕО-специалиста.

      Если бы Саша не написал бы тех строк, то первые 30 комментариев были-бы в духе: "ааа, всё съехало, куда вставить" и прилагались бы бесполезные скриншоты с замыленным адресом сайта, залитые на этот же сайт.))

      Ответить
  7. Серега (3 комм.)

    А че делать тем у кого установлен счетчик рейтинга от Сандера. Дело в том что так называемый плюсик — это всего одна звезда, даже если их 1000. Гугл пишет мол 50 отзывов но одна звезда, на всех статьях так. Что, где, как это изменить, чтобы голос считался не 1 балл из 5-ти, а все пять.

    Думаю у кого установлен рейтинг от Сандера меня понял.

    Ответить
    • АлаичЪ

      Я не знаю, что такое счетчик от Сандера, так что на вопросы "кто виноват?" и "что делать?" придется ответить самостоятельно.

      Ответить
    • ПафНутиЙ (124 комм.)

      Попросить Сандера доработать рейтинг, сделав вывод нужных данных, впринципе это не сложно. Но смысла не вижу, у его рейтинга другой принцип.

      Ответить
  8. Иван (6 комм.)

    Здравствуйте, очень пригодилась статья.

    Только у кого dle 9.6-9.7 может быть ошибка синтаксиса на главной, чтобы ошибку исправить проделайте шаг 2 «Открываем файл /engine/modules/show.full.php и находим код» и с файлом show.short.

    Также возможна неточность с шагом два, вместо варианта автора может быть код вот такой:

    		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}', $row['vote_num'] );
     
    		} else {
     
    			$tpl->set( '{rating}', "" );
    			$tpl->set( '{vote-num}', "" );
    		}

    Если это так, то данный код просто замените на:

    		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 {}
    Ответить
  9. Руслан (8 комм.)

    А я сделал проще — вставил этот код в фулстори.тпл:

    <noindex>
    <div xmlns:v="http://rdf.data-vocabulary.org/#" typeof="v:Review-aggregate" style="font-size:10px; margin-top: 0px;">
    <span property="v:itemreviewed">{title}</span>
    <span rel="v:rating">
    <span typeof="v:Rating">
    <span property="v:average">8.5</span> из
    <span property="v:best">10</span>
    </span>
    </span>
    на основе
    <span property="v:votes">{views}</span> просмотров,
    <span property="v:count">5</span> отзывов.
    </div></noindex>

    И теперь рейтинг показывает на всех материалах оценку 8.5 из 10.

    Кстати да! Заметьте, что рейтинг из 10-значного числа отличается от пятизначного.

    Вот как будет выглядеть 10-значный: Рейтинг: 9.8/10 — Оценок: 100

    Вместо обычного: Оценок: 100

    Ответить
    • АлаичЪ

      И что? Зачем нам фейковые решения. Мы наоборот делаем все по уму, чтобы увеличить шанс появления данных в сниппете.

      К слову — ваша хитрость показывается в сниппете?

      Ответить
      • Руслан (8 комм.)

        Да, конечно, показывается — пруф скрин http://clip2net.com/s/2Hftb

        Ну а почему фейк? Стоит только тут <span property="v:average">8.5</span> вставить код выводящий оценку материала и все, будет реальная оценка, а для начала сделал так, чтоб на всех материалах был рейтинг в сниппете.

        Ответить
  10. Min-Z-Drav (7 комм.)

    Всё работает спасибо, а для тех кто не может найти в файлах код попробуйте по кусочкам искать и так найдёте!

    Ответить
  11. Alex (19 комм.)

    Юхуууууу, все заработало, по крайней мере в Инструментах проверки структурированных данных. Надеюсь пару дней гуглу хватит чтобы добавить в выдачу все это. Спасибо, Александр!)

    Ответить
  12. Axel (63 комм.)

    Только начал устанавливать и столкнулся с проблемой. В DLE 9.5 в /engine/modules/functions.php

    нет такого: function userrating ($id) {

    Можете в комментах объяснить, что менять?

    Ответить
    • Иван (6 комм.)

      Поищите function userrating ($name) т.е там function userrating ($id) нет

      Ответить
      • Axel (63 комм.)

        Ну тут разобрался. В /engine/modules/show.full.php Вообще ничего не сходится...

        Ответить
        • Андрей (24 комм.)

          на 9.5 и 9.6-9.7 много измений было поэтому так, надо чтобы автор и для 9.2-9.5 сделал

          Ответить
          • Иван (6 комм.)

            Axel, посмотрите мои комментарии несколько выше.Там как раз я решил Вашу проблему.

            Ответить
            • Axel (63 комм.)

              Спасибо. Но еще после первого пункта ошибка: Fatal error: Cannot redeclare showrating () (previously declared in /home/.../public_html/engine/modules/functions.php:190) in /home/.../public_html/engine/modules/functions.php on line 261

              Ответить
  13. Андрей (24 комм.)

    Я переделал под DLE 9.2-9.5 если кому надо напишите

    Ответить
    • Axel (63 комм.)

      Мне нужно. Многим нужно. Я уже весь день сижу на блоге, в ожидании что кто-то скинет инструкцию :)

      Ответить
  14. Андрей (24 комм.)

    Я покажу на примере 10 звезд. Правильно или нет, не знаю, но я сверил по исходному коду, все норм.

    Заходим в functions.php и находим function ShowRating($id, $rating, $vote_num, $allow = true) {

    И все что до function userrating($name) { заменяем на это:

    function ShowRating($id, $rating, $vote_num, $allow = true) {
        global $lang;
     
        if( $rating ) $rating = round( ($rating / $vote_num), 0 );
        else $rating = 4;
        $rating1 = str_replace( ",", ".", $rating );
        $rating2 = $rating1 * 10;
     
        if( ! $allow ) {
     
            $rated = <<<HTML
    <div class="rating" style="float:left;">
            <ul class="unit-rating">
            <li class="current-rating" style="width:{$rating2}%;">{$rating2}</li>
            </ul>
     
     
    </div>
    HTML;
     
            return $rated;
        }
     
        $rated .= <<<HTML
    <div id='ratig-layer'><div class="rating" style="float:left;">
            <ul itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating" class="unit-rating">
            <li itemprop="average" class="current-rating" style="width:{$rating2}%;">{$rating2}</li>
            <li><a href="#" title="1" class="r1-unit" onclick="doRate('1', '{$id}'); return false;">1</a></li>
            <li><a href="#" title="2" class="r2-unit" onclick="doRate('2', '{$id}'); return false;">2</a></li>
            <li><a href="#" title="3" class="r3-unit" onclick="doRate('3', '{$id}'); return false;">3</a></li>
            <li><a href="#" title="4" class="r4-unit" onclick="doRate('4', '{$id}'); return false;">4</a></li>
            <li><a href="#" title="5" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li>
            <li><a href="#" title="6" class="r6-unit" onclick="doRate('6', '{$id}'); return false;">6</a></li>
            <li><a href="#" title="7" class="r7-unit" onclick="doRate('7', '{$id}'); return false;">7</a></li>
            <li><a href="#" title="8" class="r8-unit" onclick="doRate('8', '{$id}'); return false;">8</a></li>
            <li><a href="#" title="9" class="r9-unit" onclick="doRate('9', '{$id}'); return false;">9</a></li>
            <li itemprop="best"><a href="#" title="10" class="r10-unit" onclick="doRate('10', '{$id}'); return false;">10</a></li>
            </ul>
    </div>
     
    </div>
    <table border=0 cellspacing=0 cellpadding=1 width=100%>
      <tr><td><b>Оценка</b><td align=right><b><font color=green>{$rating1}/10</font></b></td></td></tr>
     
    <tr><td><b>Голосов</b><td align=right><b><font color=green>{$vote_num}</font></b></td></td></tr>
    </table>
    HTML;
     
        return $rated;
    }
     
    function ShortRating($id, $rating, $vote_num, $allow = true) {
        global $lang;
     
        if( $rating ) $rating = round( ($rating / $vote_num), 0 );
        else $rating = 4;
        $rating = str_replace( ",", ".", $rating );
        $rating = $rating * 10;
     
        if( ! $allow ) {
     
            $rated = <<<HTML
    <div class="rating" style="float:left;">
            <ul class="unit-rating">
            <li class="current-rating" style="width:{$rating}%;">{$rating}</li>
            </ul>
    </div>
    HTML;
     
            return $rated;
        }
     
        $rated = "<div id='ratig-layer-" . $id . "'>";
     
        $rated .= <<<HTML
    <div class="rating" style="float:left;">
            <ul itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating" class="unit-rating">
            <li itemprop="average" class="current-rating" style="width:{$rating}%;">{$rating}</li>
            <li><a href="#" title="1" class="r1-unit" onclick="doRate('1', '{$id}'); return false;">1</a></li>
            <li><a href="#" title="2" class="r2-unit" onclick="doRate('2', '{$id}'); return false;">2</a></li>
            <li><a href="#" title="3" class="r3-unit" onclick="doRate('3', '{$id}'); return false;">3</a></li>
            <li><a href="#" title="4" class="r4-unit" onclick="doRate('4', '{$id}'); return false;">4</a></li>
            <li><a href="#" title="5" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li>
            <li><a href="#" title="6" class="r6-unit" onclick="doRate('6', '{$id}'); return false;">6</a></li>
            <li><a href="#" title="7" class="r7-unit" onclick="doRate('7', '{$id}'); return false;">7</a></li>
            <li><a href="#" title="8" class="r8-unit" onclick="doRate('8', '{$id}'); return false;">8</a></li>
            <li><a href="#" title="9" class="r9-unit" onclick="doRate('9', '{$id}'); return false;">9</a></li>
            <li itemprop="best"><a href="#" title="10" class="r10-unit" onclick="doRate('10', '{$id}'); return false;">10</a></li>
            </ul>
    </div>
    HTML;
     
        $rated .= "</div>";
     
        return $rated;
    }

    Сохраняем. Далее идем в show.full.php и ищем if( $row['allow_rate'] ) {

    Выше ставим:

    if ( $row['vote_num'] == 0 ) $row['vote_num'] = 1;

    Чуть ниже находим этот код:

    $tpl->set( '{vote-num}', $row['vote_num'] );

    Меняем его на:

    $tpl->set( '{vote-num}', "<span itemprop="votes">".$row['vote_num']."</span>" );

    Затем заходим в шаблон fullstory.tpl и вставляем в удобное для вас место:

    <td itemscope itemtype="http://data-vocabulary.org/Review-aggregate">{rating}</td>

    Вроде все. Да, кстати, на 5 звезд не трудно переделать. Если же захотите 10 звезд, пишите в асю 408898510, там еще надо менять файлы.

    Ответить
    • Андрей (5 комм.)

      Подскажите пожалуйста для ДЛЕ9.0

      в ней нет такого кода: $tpl->set ( '{vote-num}', $row['vote_num'] );

      есть такое:

      if ( $row['allow_rate'] ) $tpl->set ( '{rating}', ShowRating ( $row['id'], $row['rating'], $row['vote_num'], $user_group[$member_id['user_group']]['allow_rating'] ) );

      else $tpl->set ( '{rating}', "" );

      Ответить
  15. Андрей (24 комм.)

    Инструкция на 5 звезд для ДЛЕ 9.5 (на 9.2-9.4 должно тоже работать).

    Заходим в functions.php и находим function ShowRating ($id, $rating, $vote_num, $allow = true) {

    И все что до function userrating ($name) { заменяем на это:

    function ShowRating($id, $rating, $vote_num, $allow = true) {
    	global $lang;
     
    	if( $rating AND $vote_num ) $rating = round( ($rating / $vote_num), 0 );
    	else $rating = 4;
    	$rating = $rating * 17;
     
    	if( ! $allow ) {
     
    		$rated = <<<HTML
    <div class="rating" style="float:left;">
    		<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'><div class="rating" style="float:left;">
    		<ul itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating" class="unit-rating">
    		<li itemprop="average" class="current-rating" style="width:{$rating}px;">{$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 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 ShortRating($id, $rating, $vote_num, $allow = true) {
    	global $lang;
     
    	if( $rating AND $vote_num ) $rating = round( ($rating / $vote_num), 0 );
    	else $rating = 4;
    	$rating = $rating * 17;
     
    	if( ! $allow ) {
     
    		$rated = <<<HTML
    <div class="rating" style="float:left;">
    		<ul class="unit-rating">
    		<li class="current-rating" style="width:{$rating}px;">{$rating}</li>
    		</ul>
    </div>
    HTML;
     
    		return $rated;
    	}
     
    	$rated = "<div id='ratig-layer-" . $id . "'>";
     
    	$rated .= <<<HTML
    <div class="rating" style="float:left;">
    		<ul itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating" class="unit-rating">
    		<li itemprop="average" class="current-rating" style="width:{$rating}px;">{$rating}</li>
    		<li><a href="#" title="{$lang['useless']}" class="r1-unit" onclick="dleRate('1', '{$id}'); return false;">1</a></li>
    		<li><a href="#" title="{$lang['poor']}" class="r2-unit" onclick="dleRate('2', '{$id}'); return false;">2</a></li>
    		<li><a href="#" title="{$lang['fair']}" class="r3-unit" onclick="dleRate('3', '{$id}'); return false;">3</a></li>
    		<li><a href="#" title="{$lang['good']}" class="r4-unit" onclick="dleRate('4', '{$id}'); return false;">4</a></li>
    		<li itemprop="best"><a href="#" title="{$lang['excellent']}" class="r5-unit" onclick="dleRate('5', '{$id}'); return false;">5</a></li>
    		</ul>
    </div>
    HTML;
     
    	$rated .= "</div>";
     
    	return $rated;
    }

    Все остальное делаете так, как я написал выше. Должно работать!

    Ответить
    • Axel (63 комм.)

      Не работает. Ошибка: Parse error: syntax error, unexpected T_SL in /home/.../public_html/engine/modules/functions.php on line 202

      Ответить
      • Андрей (24 комм.)

        свяжитесь со мной по асе 408898510 я посмотрю, на какую строку именно ругается

        Ответить
    • Денис (2 комм.)

      а что за умножение на 17?

      Ответить
      • АлаичЪ

        У автора движка спросите :) Это для корректного отображения изображений рейтинга.

        Ответить
  16. Данил (16 комм.)

    Спасибо конечно за статью, но эти фразы: "останетесь дебилами и полными нубами" — убили. Если вас обидели или достали такими комментариями — не нужно свои эмоции на показ выставлять. Люди — учатся, ошибаются. если они спрашивают — это не значит, что они ленивые и не хотят ничего делать, это говорит о том, что им это интересно и возникли небольшие трудности.

    Ответить
    • Axel (63 комм.)

      Я думаю речь шла не о тех людях, которые учатся и им интересно. Уверен, что в основном пишут нубы и те, кто даже не пытается что-то сам освоить...

      Ответить
  17. Axel (63 комм.)

    ЭХ... Не судьба. На одном сайте вовсе не использую рейтинг новостей, а на втором рейтинг в виде "нравится/не нравится". Может кто смог бы для такого рейтинга сделать? :)

    Ответить
    • Андрей (24 комм.)

      Смысл этой микроразметки, чтобы при результатах поиска в Гугле показывались звезды, а у вас что будет выводиться 1,2,3,4,5...?

      Ответить
  18. Anatoli (3 комм.)

    А как быть с рейтингами на главной странице и в категории? Почему-то у меня там показывает не 10 новостей, а 20 и при этом одна десятка с ошибкой а вторая без ошибки? Кто сталкивался?

    Ответить
    • Андрей (24 комм.)

      А зачем на главной рейтинг? Так Гугл не поймет для какой новости этот рейтинг...

      Ответить
  19. Даниэль (16 комм.)

    Всё работает за исключением одного — не идет подсчет количества проголосовавших, тупо на 1 стоит и всё, так и должно быть?

    Ответить
    • Андрей (24 комм.)

      Нет конечно, должно изначально 1 стоять если никто не голосовал, а если кто-то нажал на 5 или 4 не важно, то потом 5 или 4 должно остаться.

      Ответить
      • Даниэль (16 комм.)

        Андрей, я и говорю, что 1 стоит, закрыты 4 звезды, жмешь на 5 звезд, закрывает все, а при обновлении страницы однерка которая выводится тегом {vote-num} тупо остается, делал все четко по инструкции, двиг 9.6, гугл видит звезды и когда их 4 и когда их 5 закрыто, а количество голосов двиг не прибавляет...

        Ответить
        • Даниэль (16 комм.)

          Разобрался по ходу: 1 голос он фейковый и, когда голосуешь впервые за новость по настоящему, то так и остается однерка, все последующие голоса засчитываются :)

          Ответить
          • Анатолий (17 комм.)

            А вот Я пробовал в 3-х браузерах, очищал кеш, менял IP но единичка так и не сдвинулась с места

            Ответить
  20. OKyJIucT (7 комм.)

    Я тоже делал фейковый рейтинг вот так:

    <div style="position:absolute; left:-9999px" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
    	<span itemprop="ratingValue">{random}</span>/5
    	<span itemprop="ratingCount">{views}</span>
    </div>

    Для {random} добавил в index.php такой код после $tpl->set ( '{content}', "<div id='dle-content'>" . $tpl->result['content'] . "</div>" );

    $rand = rand (38,50)/10;

    $tpl->set ( '{random}', $rand );

    и рейтинг выводится от 3,8 до 5. Количество голосов — это количество просмотров новости)))

    Пример такого снипета http://clip2net.com/s/2HKNS

    Хлебные крошки я делал так:

    <div style="position:absolute; left:-9999px">
    	<div xmlns:v="http://rdf.data-vocabulary.org/#">
    		<span typeof="v:Breadcrumb"><a property="v:title" rel="v:url" href="http://site.ru/">Рецепты</a></span>
    		<span typeof="v:Breadcrumb"><a property="v:title" rel="v:url" href="{category-url}">{category}</a></span>
    	</div>
    </div>

    Ну и еще добавлял itemprop="image" чтобы картинка в снипете отображалась:)

    Ответить
    • Артем (6 комм.)

      Спасибо за рецепт... А как у Вас с картинкой, получилось?

      Ответить
  21. Андрей (7 комм.)

    Если в itemtype использую data-vocabulary.org то звездочки присутствуют и нет ошибок в инструменте проверки разметки, если ставлю schema.org то звезды пропадают и соответственно сыпятся ошибки... так что думаю data-vocabulary.org все же рабочий вариант (как минимум для меня)... И спасибо автору за данное решение, поглядим как появление такого сниппета повлияет на посещаемость...

    Ответить
    • Андрей (7 комм.)

      Возможно организовать возможность редактировать / удалять оставленный комментарий ?

      Ответить
      • АлаичЪ

        Нет, такой возможности нет и не предвидится.

        Ответить
  22. Serik (11 комм.)

    Ура! У меня Гугл начал выдавать в поиске со звёздочками :)

    Ответить
    • АлаичЪ

      Ждем фоток с голыми тетками на фоне пальм и голубого моря :)

      Ответить
  23. Alex (19 комм.)

    Везет Вам, у меня даже авторство не хочет подтверждать, хотя в Инструментах все четко выдает.

    Ответить
  24. Alex (19 комм.)

    Все, на некоторых страницах заработали, сегодня весь сайт прочекал в гугле. Думаю просто гуглу больше надо времени. Ждите фотки на фоне пальм и теток))

    Ответить
    • Serik (11 комм.)

      Ну вот, а Вы переживали )))

      У меня посещалка довольно резво подскочила — не так чтоб для тёток и пальм, но именно по таким звёздам стали в разы больше приходить ))

      Посему прикупил у автора сего блога пару модулей — вроде и жаба не душет как при пожертвовании, но в то же время пригодятся )))

      Ответить
  25. Андрей (5 комм.)

    В общем ребят, кто делал для DLE 9.0 — отпишитесь, нужна помощь :)

    Ответить
  26. Роман (4 комм.)

    Cегодня вот от Яндекса пришло:

    «Мы заметили ваш интерес к использованию микроразметки на сайте. У нас для вас хорошие новости: теперь валидатор микроразметки в Яндекс.Вебмастере умеет проверять все типы разметки Schema.org, микроформаты, OpenGraph и RDFa, а не только данные, обрабатываемые Яндексом. Рекомендуем пользоваться валидатором при внесении изменений в разметку на сайте или при добавлении новых элементов.

    Если у вас есть вопросы, связанные с внедрением разметки на сайт, вы можете задать их в клубе Поиска.»

    И, кстати, data-vocabulary.org Яндекса неизвестен, в вот коммент представителя Яндекса по теме http://habrahabr.ru/company/yandex/blog/165727/#comment_5721073

    Ответить
  27. Анатолий (17 комм.)

    Что и где нужно посмотреть, ошибок не светит, сами звёзды меняют цвет, но вот (голосов: {vote-num}) не изменяется как стало (голосов: 1) так и стоит, уже и кеш чистил и ...

    Подскажите _free-zone.ws

    Ответить
  28. Роман (4 комм.)

    Для DLE 7.5 версии переделал под схема.орг, получилось вот так:

    Файл /engine/modules/functions.php

    $rated = <<<HTML
    <div class="rating" style="float:left;">
    		<ul class="unit-rating">
    		<li class="current-rating" style="width:{$rating}px;">{$rating}</li>
    		</ul>
    </div><div class="rating" style="float:left; padding-top:2px;">&nbsp;({$lang['voten']} {$vote_num})</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 itemprop="bestRating"><a href="#" title="{$lang['excellent']}" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li>
    		</ul>
    </div></div>
    HTML;
     
    	return $rated;
    }

    Файл /engine/modules/show.full.php

    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="ratingCount" id="vote-num-id-".$row['id']."">".$row['vote_num']."</span>" );
    			$tpl->set( '[rating]', "" );
    			$tpl->set( '[/rating]', "" );
     
    		} else {
            $tpl->set('{rating}',"");
    		}

    Для файла шаблона fullstory.tpl

    <span itemscope itemtype="http://schema.org/Article">[rating]<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating" style="float:left;height:20px;">{rating} (голосов: {vote-num})</div>[/rating]</span>
    Ответить
  29. Владимир (1 комм.)

    Спасибо! Отлично!

    Но вот по поводу главной...))) некоторые веб мастера продвигают главную. Я занимаюсь одностраничниками.

    Как мне быть? Нужно именно для главной. Может есть другие мелочи для снипетов, применимые к главной странице?

    Ответить
    • АлаичЪ

      Сделайте фейковую разметку, если получится. Да и потом, на микроразметке клином свет не сошелся, можно и без нее обойтись.

      Ответить
  30. Валентин (67 комм.)

    Почему то не работает, версия 9.6, все делал строго по инструкции, полностью удалил из короткой новости но все равно при заходе на главную или не в полную новость выходила ошибка, и ругалось на файл show.short.php, указывая вот на эту строку — else $tpl->set ( '{rating}', ShortRating ( $row['id'], $row['rating'], $row['vote_num'], 0 ) );

    я её удалил, ругаться перестало, но не работает при проверке... подскажите что не так?

    Ответить
  31. Александр (2 комм.)

    АлаичЪ, большое человеческое тебе спасибо за статью! Позавчера выложил сайт в интернет, вчера проделал все по твоей инструкции и уже сегодня (!) новости проиндексировались с рейтингом. Единственное что, некоторые категории проиндексировались вот так Категория1>Категория2>Категория1>Категория2. Насколько это критично для гугла? Он не станет тянуть страницы вниз из-за такого повтора? Как думаешь?

    Ответить
    • АлаичЪ

      Микроразметка не влияет на ранжирование :)

      Ответить
  32. Александр (1 комм.)

    Здравствуйте! Помогите, пожалуйста со следующей проблемой: не считаются голоса, всегда отображается "голосов:1". Код размещен корректно. Версия ДЛЕ — 9.7, не ломанная. Шаблон дефолтный. Проверка структурированных данных выполнена.

    Об этой проблеме уже упоминали в данных комментариях, но решения проблемы я так и не нашел. Буду очень признателен за помощь.

    P.S. голосование проводилось с разных компьютеров, с разными IP, кэш очищался.

    Ответить
  33. Валентин (67 комм.)

    Подскажите что можно вставить вместо data-vocabulary.org ? а то в валидаторе гугля все нормально, а в валидаторе яндекса пишет, что он с этим не знаком...

    Я понимаю что это сделано под гугль, но хочется что бы и в яндексе работало...

    Ответить
    • Роман (4 комм.)

      нужно почитать комменты выше и найти там ответ

      Ответить
      • Валентин (67 комм.)

        Я перечитал эти все коменты раз 20 наверное... и кстати с schema.org гугль звезды не показывает...

        Ответить
        • Serik (11 комм.)

          Прекрасно работает :) Доказательство — all-droid.ru

          Чуть выше пост для ДЛЕ 7.5 — немного переделав под 9.7 всё заработало и Яндекс не ругается.

          Ответить
          • Валентин (67 комм.)

            Проверил новость на твоем сайте в гугле и в яндексе... и в правду все работает...

            Может выложишь сюда свой код из тех файлов которые ты правил, а то я пытался переправлять, но ничего не вышло...

            Ответить
            • Андрей (24 комм.)

              через исходный код можно посмотреть и сделать

              Ответить
              • Валентин (67 комм.)

                Уже посмотрел и сделал... все работает... спасибо за исходный код! )))

                Но я бы еще хотел добавить вывод данных о description, о дате и о том что бесплатно, тоесть цена — ноль...

                Смотрел на schema.org, но там все на английском и честно говоря ничего не понятно...

                Ответить
                • Андрей (24 комм.)

                  а где проверял что все работает?

                  Ответить
                  • Валентин (67 комм.)

                    В Гугле и в Яндексе.

                    И еще, как сделать микроразметку для itemprop="description"?

                    Ответить
  34. Артем (8 комм.)

    Подскажите пожалуйста настройку для DLE 9.4

    Ответить
  35. Андрей (24 комм.)

    Вариант который описан здесь, нифига у меня не заработал, передалал по своему как на кинопоиске.ру на 10 звезд и сразу все ОК

    От сюда взял только чтобы отображалось 5 звезд (рейтинг) и проголосовало 1 когда никто еще не голосовал, чтобы ноля небыло

    Ответить
    • Артем (8 комм.)

      Так в итоге ты сделал 5 или 10 звезд ?

      Ответить
      • Андрей (24 комм.)

        10 звезд, но в гугле все равно отображаться будет только 5

        Ответить
  36. AntiP (1 комм.)

    Благодарю за статью — познавательно и полезно.

    Скажите — под Яндекс планируется такое? (статья по микроразметке)

    Ответить
    • АлаичЪ

      Нет, не планируется, т.к. Яндекс не поддерживает рейтинги и не выводит их в сниппете.

      Ответить
  37. stalker-xxl (2 комм.)

    А как можно сделать, чтоб отображалось в выдаче "просмотров: ****" ? ну именно кол-во просмотров новости... перерыл schema.org — не нашел

    Ответить
    • АлаичЪ

      Никак не сделать, наверное, я не видел такой возможности в спецификациях. Да и сниппетов таких я не видел...

      Ответить
  38. Alex (4 комм.)

    Для версии 9.8 актуально ?

    Ответить
  39. loop (1 комм.)

    Item

    type: http://data-vocabulary.org/rating

    property:

    average: 5

    best: 5

    Внимание! Itemtype not recognized

    Мне гугл вот что выдает )))

    Ответить
  40. Артем (6 комм.)

    Доброй ночи всем. У меня вопрос, как к сниппету прикрутить фотку? И можно ли, чтоб в speedbar и в сниппете выводились все категории к которым принадлежит новость?

    Спасибо!

    Ответить
  41. Артем (8 комм.)

    Так может кто нибудь ответить, для 5 звезд такое возможно реализовать на DLE 9.4 ?

    Ответить
    • Андрей (24 комм.)

      да возможно на любой версии, могу помочь. аська 408898510

      Ответить
  42. Jozeff (1 комм.)

    Как и у loop, гугл пишет следующие

    Item

    type: http://data-vocabulary.org/rating

    property:

    average: 5

    best: 5

    Внимание! Itemtype not recognized — красным цветом, что это значит?

    Ответить
  43. Виктор (2 комм.)

    Item

    type: http://data-vocabulary.org/rating

    property:

    average: 40

    best: 10

    Внимание! Itemtype not recognized. — что за ошибка?

    Делал на 10 звезд ДЛЕ 9.5

    Ответить
    • Андрей (24 комм.)

      Могу помочь решить ошибку, но платно

      Ответить
  44. WeBBster (1 комм.)

    А как быть у кого стоит рейтинг O-Rating by Sander?

    Ответить
  45. Alex (5 комм.)

    При проверке в Яндексе выдает ответ, что существующая микроразметка на сайте не соответствует shema.org

    Ответить
    • Андрей (24 комм.)

      Я могу вам сделать валидную разметку для гугла и яндекса, но платно, пишите если надо 408898510

      Ответить
    • АлаичЪ

      Да валидная или невалидная — разницы никакой, Яндекс ее все равно не понимает.

      Ответить
      • Алик (2 комм.)

        Понимать то понимает Schema Рейтинг, но никак не использует.

        google http://i50.fastpic.ru/big/2013/0801/54/b19e2d899ab4e84f6a050952ab486b54.jpg

        yandex http://i50.fastpic.ru/big/2013/0801/b9/0365dd458ef4c97fe6281ab4cc10a1b9.jpg

        Ответить
  46. Андрей (24 комм.)

    Вот разметка на одном из моих сайтов. http://www.google.com/webmasters/tools/richsnippets?url=http%3A%2F%2Ffreerutor.com%2F5595-planeta-okean-planet-ocean-2012-bdrip-licenziya.html&html=

    Это не реклама. Если человек знающий то он сможет все сделать как у меня через исходный код. И еще одна фишка (Рейтинг: 5/10 — 1 голос — Бесплатно) Слово БЕСПЛАТНО прописывается не буквали а

    <meta content="0.00" itemprop="price">

    <meta content="RUB" itemprop="priceCurrency">

    Можно в рублях или баксах. Если у вас интернет магазин, то вы пишите цену, ели же у вас все бесплатно то оставляете как я написал, и в выдаче у гугла уже сразу будет написана цена. Надеюсь написал понятно

    Ответить
    • АлаичЪ

      Сделать разметку и проверить ее на валидаторе — ерунда. Другой вопрос — заинтересуется ли ей Гугл!

      Ответить
      • Андрей (24 комм.)

        ну это кому повезет, но пробовать надо

        Ответить
  47. Костя (1 комм.)

    Здравствуйте, в тему сниппетов, для кулинарных рецептов существует своя микроразметка Schema.org, Recipe и т.д. можете написать пост по этой теме, как быстро обработать уже существующие базы рецептов в формате микроразметке, может посоветуете какой нибудь специальный плагин для этого? буду признателен за любой ответ

    Ответить
    • АлаичЪ

      Нет, поста про эту тему не будет. Внедрить это самостоятельно не сложно, можно попросить помощи программиста, он поможет.

      Ответить
  48. Slava (2 комм.)

    Спасибо Бро, звезды появились буквально через 2 дня) а еще прикрутил свое фото к сайту) теперь у меня вообще разноцветная выдача)

    Ответить
  49. Nurdaulet (1 комм.)

    Здравствуйте, АлаичЪ!

    Спасибо за пост, я давно хотел такого для сайта))

    Вот хотел спросить какую микроразметку лучше использовать: Микроданные или RDF?

    Ответить
    • АлаичЪ

      Это не принципиально, главное чтобы валидацию проходила и все. У меня стоит RDF.

      Ответить
  50. Денис (2 комм.)

    при 5 звездной функции тулза гугла не видит разметку новостей, пишет

    Ошибка. Either "count" or "votes" field needs to be present.

    Ошибка. Rating could not be normalized.

    Ошибка. Please provide best and worst.

    Ответить
  51. Jek (6 комм.)

    АлаичЪ благодарю за пост, вчера поставил на 9.8 сегодня уже отображается

    Ответить
  52. Jack (2 комм.)

    Народ, а можно так вот сделать. Это в файл fullstory.tpl вставить и все?

    Рейтинг: <div id="rating-block" itemscope itemtype="http://data-vocabulary.org/Review-aggregate">

    <span itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating">

    <span id="ratig-layer-{$id}" itemprop="average">{vote-num}</span>

    <span id="ratig-layer-{$id}" itemprop="best">5</span> из

    <span id="ratig-layer-{$id}" itemprop="votes">{vote-num}</span>

    </div>

    Ответить
    • АлаичЪ

      Нет, не сработает. Но выше в комментариях кто-то показывал вариант, который можно "просто вставить".

      Ответить
      • Jack (2 комм.)

        АлаичЪ, пробовал метод указанный в комментариях для dle 9.2 но не работает.

        вот этого кода $tpl->set ( '{vote-num}', $row['vote_num'] ); в файле 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'] ) );

        пробовал сделать вот так:

        if ( $row['allow_rate'] ) $tpl->set ( '{rating}', '{vote-num}',ShowRating ( $row['id'], $row['rating'], "<span itemprop=\"votes\">".$row['vote_num']."</span>", $user_group[$member_id['user_group']]['allow_rating'] ) );

        но увы не работает. всю голову сломал уже

        Ответить
  53. Антонио (1 комм.)

    Добрый день, скажите, возможно ли сделать помимо звездного рейтинга рядом отображение рейтинга числами — например 4 из 5?

    Ответить
  54. Даня (2 комм.)

    [rating]<div itemscope itemtype="http://data-vocabulary.org/Review-aggregate"><div style="float:left;width:15px;">Рейтинг:</div>(голосов: {vote-num})<div style="float:left;width:120px;">{rating}</div></div>[/rating]

    я не много код под себя отредактировал, можно так или нет?

    Ответить
  55. Dolmatov (3 комм.)

    Подскажите какой Sql запрос можно выполнить что бы у всех статей рейтинг был 1, или +1-2 к рейтингу!

    Ответить
  56. Axel (63 комм.)

    Хм... Я вот решил посмотреть, как сделан рейтинг кинопоиска.

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

    <div id="block_rating"  itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
        <meta itemprop="bestRating" content="10" />
        <div class="block_2">
     
            <div class="div1"><meta itemprop="ratingValue" content="7.2" />
    <a href="/film/686064/votes/" class="continue rating_link rating_ball_green">
       <span class="rating_ball">7.219</span>
       <span class="ratingCount" itemprop="ratingCount">43</span>
    </a>
    </div>

    И работает это у них на ура. В результатах выводится звезды и такое: Рейтинг: 7,3/10 — ‎38 голосов.

    Даже в новом инструменте Гугла (Маркер, кажись), там достаточно выделить результаты голосования и количество проголосовавших, и гугл покажет, как правильно все разметить.

    АлаичЪ, что скажешь?

    Ответить
    • АлаичЪ

      Ничего не скажу, а должен?

      Ответить
      • Axel (63 комм.)

        Ну что думаешь по этому поводу=)

        Ответить
        • АлаичЪ

          Я тебя не понимаю. Что я должен думать? Ну да, это работает — что тут еще скажешь.

          А еще ты не весь код скопировал, не все контейнеры закрыты.

          Ответить
          • Axel (63 комм.)

            Да узнать хотел, какой метот лучше? Или они оба одинаково хорошо работают?

            Просто на момент создания данного поста, у Гугла еще небыло такого инструмента, как маркер...

            Ответить
            • АлаичЪ

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

              Что за маркер, я не в курсе, но, наверное, классная штука :)

              Ответить
  57. quer (2 комм.)

    Подскажите, для как для Яндекс картинок можно сделать микроразметку?

    Ответить
    • АлаичЪ

      Можно — http://help.yandex.ru/webmaster/?id=1122760

      Ответить
      • quer (2 комм.)

        А автоматизировать можно как-то? Чтобы каждый раз руками не править в БД исходный код?

        Или нужно много менять в исходном коде DLE?

        Ответить
        • АлаичЪ

          Автоматизировать, наверное, как-то можно. Для этого потребуются правки движка точно.

          Ответить
  58. vertuhay (6 комм.)

    Как адаптировать ваш метод под дле 10.0?

    Дело в том когда правлю show.full.php перестает считать просмотры!

    Ответить
    • vertuhay (6 комм.)

      Разобрался, править все с нуля а не заменять с 9,8.

      И еще изменил

      $rating = $rating * 17;

      на

      $rating = $rating * 20;

      Ответить
  59. вова (1 комм.)

    обязательно после full-story вставлять?

    Ответить
  60. Руслан (2 комм.)

    Здравствуйте,

    Я поставил ваш скрипт, все было ок, почти 80% страниц были в звездочках, но через две недели они пропали и их уже нету как два месяца, уже и скрипт переставлял...не знаю в чем проблема и что делать!

    Ответить
    • АлаичЪ

      Значит Гугл отключил их для вас, все просто!

      Ответить
      • Руслан (2 комм.)

        а почему отключил у меня? а не у другого сайта? и можно их включить обратно?))

        Ответить
  61. Андрей (3 комм.)

    Привет, подскажи на версию 10,1 можно поставить???

    Ответить
  62. Антон (2 комм.)

    Ребят, у меня 12 голосов и все по 5 баллов, почему рейтинг не изменяется на 5 баллов?? Через анонимайзер крутил, чтобы проверить.

    http://zfilm-hd.com/288-rosomaha.html

    Ответить
  63. Толик (2 комм.)

    На 10.1 работает отлично так как написано в инструкции, жду звездочек в выдаче. В валидаторе Яндекса и Гугла все хорошо.

    schema не работает если сменить на schema.org/AggregateRating, может я не правильно делаю?

    Ответить
  64. sprrut (2 комм.)

    В валидаторе все отлично звездочки, разметка, ошибок нет, но в выдаче звезды так и не появились — наверное не понравился google.

    Ответить
    • sprrut (2 комм.)

      Через месяц появились звездочки в индексе. Все работает.

      АлаичЪ СПАСИБО!

      Ответить
  65. Толик (2 комм.)

    Добрый день! Нужна помощь!

    Если писать в гугле site:mysite.ru — звездочки есть! Недавно появились. В выдаче если искать что то — пока нет. Это нормально ?

    Разметка data-vocabulary. Это не за того что она старая ? Будет в выдаче ? И через сколько примерно ожидать ? Звездочки появились где то через месяца 2 после установки кода.

    Ответить
  66. iroder (5 комм.)

    У меня такой вопрос, если на "Инструменты для веб-мастеров" показывает эти самые звездочки, а на самом поисковике нет.

    С чем это может связываться, будут ли они вообще, или я что то сделал не правильно?

    Ответить
  67. Рома (1 комм.)

    Привет!

    Поставил вариант от "Руслан" в проверке выдает вот такую ошибку: " If count is specified in review aggregate, page should contain reviews. Otherwise you may want to use votes." На сколько она критична а звездочки в поиске показывает! DLE 10.3

    Ответить
    • Елена (1 комм.)

      Роман, добрый день! Я тоже поставила вариант Руслана, так как знаний не хватает установить через копание в движке. Скажите, как быстро у вас звездочки в поиске появились. Ту же ошибку, что вы указывали и у меня выдает.

      Ответить
  68. Антон (10 комм.)

    Кто знает как сделать микроразметку для DLE 10.4?

    Ответить
  69. Магомед (1 комм.)

    Подскажите пожалуйста как сделать для dle 10.4?

    Ответить
    • Анатолий (17 комм.)

      Точно также, по этому мануалу. Исключение только comments.class.php и в dle 10.4 нет } else { ставьте без них, всё прекрасно работает, пример вот http://serialsmotret.com/ делал сегодня.

      Ответить
      • Alexander (2 комм.)

        Анатолий, а где вы там нашли comments.class.php и вообще то не работает

        Ответить
  70. Александр (2 комм.)

    Всем привет! Всё сделал по инструкции, проверка показывает good. Результат проверки на скрине:http://prntscr.com/9bt1eq А в поиске никаких звёздочек нет. Или подождать надо какое-то время?

    Ответить
    • АлаичЪ

      И не будет. Гугл обрезал эти фишка из-за злоупотребления вебмастерами :)

      Ответить
      • Александр (2 комм.)

        В мае этого года человек ставил знакомый, всё работало на ура.

        Ответить
  71. Лена (8 комм.)

    Привет. Можете подсказать что хочет гугл, указав на такую ошибку (Не указан объект отзыва).? Вот даю скрин http://awesomescreenshot.com/0445mcm24a

    Заранее благодарю

    Ответить
    • Лена (8 комм.)

      Ну помогите пожалуйста

      Ответить
      • Андрей (24 комм.)

        Напишите мне помогу. 408898510

        Ответить
  72. Артем (2 комм.)

    Можете подсказать что хочет гугл, указав на такую ошибку (Не указан объект отзыва).? Что куд надо привязать или указать?

    Ответить
    • Артем (2 комм.)

      если не трудно на почту art5692@yandex.ru СПАСИБО"!

      Ответить
  73. Андрей (1 комм.)

    Здравствуйте. Помогите пожалуйста сделать для DLE 10.4. Кто делал для этой версии и у него работает ?

    Спасибо не перед.

    Ответить
  74. Александр (1 комм.)

    Здравствуйте. Подскажите как внедрить микроразметку schema.org для рецептов на DLE 10.4?

    Ответить
  75. Дмитрий (1 комм.)

    Не указан объект отзыва. почему? что не так http://prntscr.com/em60fp

    Ответить
  76. Родион (2 комм.)

    Здравствуйте, а есть ли у Вас еще статьи про shema, хотел настроить полностью, на главной, на странице с фильмом, то есть как настроить?, версия dle 11.3

    Ответить
    • АлаичЪ

      Нет таких мануалов у меня.

      Ответить
      • Родион (2 комм.)

        а если сделать так, как вы описали в этой статье, оно будет работать? это ведь для поисковиков? чтобы результат поиска выводился правильно?

        Ответить
        • АлаичЪ

          Это для поисковиков, верно. Но так как это хитрость и не реальный рейтинг, то Гугл уже прикрыл лавочку, не работает.

          Ответить
  77. Никита (1 комм.)

    Автор поста и комментаторы, опубликуйте пожалуйста подробную инструкцию внедрения под:

    — DLE 11.3 (можно и DLE 12.0)

    для Google, только по версии Schema.org

    Так как есть некоторая разница в исходном коде версий DLE...

    Очень прошу вас!

    Ответить