Бот-информер доступности сайта   •   Магазин расширений
988 просм
11 комм
Поделиться:

Микроразметка второго и третьего типа рейтинга полной новости в DLE

В одной из статей я подробно расписал, как сделать микроразметку рейтинга полной новости в CMS DataLife Engine для первого типа рейтинга.

Первый тип рейтинга, если вы не знаете, – это «оценка», то есть для оценки статьи используется рейтинг в пять звезд, где 1 звезда – минимальная оценка, 5 – максимальная.

Все бы ничего, но как быть в том случае, если материалы на вашем сайте оцениваются вторым типом рейтинга («мне нравится»), или третьим («нравится» / «не нравится»).

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

Микроразметка второго типа рейтинга («нравится») полной новости в DLE

Итак, что мы имеем во втором типе рейтинга? Отметку «нравится», то есть количество людей, которым понравилась та или иная новость. Это число мы возьмем за количество проголосовавших, а оценку мы зададим сами. Если число проголосовавших у нас равно 0, то оценка равняется 0, а если больше 0, то, например, 4.5.

1. Подключитесь к вашему сайту по FTP.

2. Откройте файл в папке вашей темы, отвечающий за вид полной новости (чаще всего это файл fullstory.tpl), после чего в самый верх вставьте:

<div itemscope itemtype="http://schema.org/Product">

и в самый низ:

<span itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
		<meta itemprop="ratingValue" content="{numb_rate}"> 
		<meta itemprop="ratingCount" content="{numb_vote}">
	</span> 
	<meta itemprop="name" content="{title}"> 
</div>

Сохраните изменения и отправьте файл на сайт.

3. Далее откройте файл show.full.php в папке /engine/modules/, найдите строку:

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

И сразу после нее вставьте:

if($row['vote_num'] == 0) {
	$numb_rate = 0;
	$numb_vote = 0;
} else {
	$numb_rate = 4.5;
	$numb_vote = $row['vote_num'];
}

$tpl->set('{numb_rate}', $numb_rate);
$tpl->set('{numb_vote}', $numb_vote);

Сохраните изменения и отправьте файл обратно на сайт.

4. Очистите кэш. Установка закончена.

Микроразметка третьего типа рейтинга («нравится» / «не нравится») полной новости в DLE

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

Поэтому при отрицательном общем балле рейтинга мы будем переводить оценку в 1, при нуле – в 0, а при более нуля – нужный нам рейтинг, например, тот же 4.5.

1. Подключитесь к вашему сайту по FTP.

2. Откройте файл в папке вашей темы, отвечающий за вид полной новости (чаще всего это файл fullstory.tpl), после чего в самый верх вставьте:

<div itemscope itemtype="http://schema.org/Product">

и в самый низ:

<span itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"> 
		<meta itemprop="ratingValue" content="{numb_rate}"> 
		<meta itemprop="ratingCount" content="{numb_vote}"> 
	</span> 
	<meta itemprop="name" content="{title}"> 
</div>

Сохраните изменения и отправьте файл на сайт.

3. Далее откройте файл show.full.php в папке /engine/modules/, найдите строку

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

И сразу после нее вставьте:

if($row['vote_num'] == 0) {
	$numb_rate = 0;
	$numb_vote = 0;
} else {
	if($row['rating'] < 0) {
		$numb_rate = 1;
	} elseif($row['rating'] > 0) {
		$numb_rate = 4.5;
	} else {
		$numb_rate = 0;
	}
	$numb_vote = $row['vote_num'];
}

$tpl->set('{numb_rate}', $numb_rate);
$tpl->set('{numb_vote}', $numb_vote);

Сохраните изменения и отправьте файл обратно на сайт.

4. Очистите кэш. Установка закончена.

Обратите внимание, что рейтинг, который вы указываете в обоих типах рейтинга, должен быть от 1 до 5, включая дробь, где 1 – минимальная оценка, а 5 – максимальная.

Время, после которого в поиске появится рейтинг у вашего сайта, в среднем – пара недель.

Если возникли трудности – пишите об этом в комментариях.

11
комментарий
Seva
28.10 в 18:44
Ваши махинации для "Микроразметка третьего типа рейтинга" ничего не дают в сущности, уж лучше поставить вручную 4,5 и ничего не менять в файлах скрипта. Плохое решение!
  • 0
Seva, на мой взгляд решение хорошее (не считая конечно статистической общей оценки) - так как Вы получаете изменяемое число оценивших новость, а более здесь Вы ничего и не получите в этих типах рейтинга.
  • 7
Gera
11.11 в 00:08
Может стоило бы еще сделать, например:
2 лайка - рейтинг 2;
3 лайка - рейтинг 3;
4 лайка - рейтинг 4;
5 лайков и больше - рейтинг 5.
  • 0
Gera, сделать можно, но нужно ли.

Представим, что у вас не такая большая аудитория на сайте. 1 или 2 человека оценивают ваш материал и по вашей логике, оценка материала становиться 1/5 или 2/5 соответственно.

Далее, страница индексируется поисковиками и люди, нашедшие там ваш сайт видят оценку - 1/5, что говорит о том, что люди не очень хорошо отзываются об этом материале и есть ли смысл тратить время на его изучение.

Как то так. Если вы представляете все это по другому - я очень рад буду это услышать. glass
  • 8
Gera
11.11 в 10:08
Артем Мáлков, может тогда наоборот?
-1 - рейтинг 4;
-2 - рейтинг 3;
-3 - рейтинг 2;
-4 и больше - рейтинг 1.
  • 1
Gera, а вот это уже интересно. В вашем случае

if($row['vote_num'] == 0) {
$numb_rate = 0;
$numb_vote = 0;
} else {
if($row['rating'] < 0) {
$numb_rate = 1;
} elseif($row['rating'] > 0) {
$numb_rate = 4.5;
} else {
$numb_rate = 0;
}
$numb_vote = $row['vote_num'];
}

$tpl->set('{numb_rate}', $numb_rate);
$tpl->set('{numb_vote}', $numb_vote);

Вы заменяете на

if($row['vote_num'] == 0) {
$numb_rate = 0;
$numb_vote = 0;
} else {
if($row['rating'] == "-1") {
$numb_rate = 4;
} elseif($row['rating'] == "-2") {
$numb_rate = 3;
} elseif($row['rating'] == "-3") {
$numb_rate = 2;
} elseif($row['rating'] <= "-4") {
$numb_rate = 1;
} elseif($row['rating'] > 0) {
$numb_rate = 4.5;
}
$numb_vote = $row['vote_num'];
}

$tpl->set('{numb_rate}', $numb_rate);
$tpl->set('{numb_vote}', $numb_vote);
  • 5
Niki
16.03 в 12:32
А можно ли здесь
if($row['vote_num'] == 0) {
$numb_rate = 0;
$numb_vote = 0;
} else {
$numb_rate = 4.5;
$numb_vote = $row['vote_num'];
}

$tpl->set('{numb_rate}', $numb_rate);
$tpl->set('{numb_vote}', $numb_vote);

Поставить вместо 4.5 например 4.4 или 4.8 ?
  • 0
Niki, да, конечно.
  • 7
Niki
16.03 в 17:28
Получается для всех новостей будет выводится оценка 4.5 независимо от количества голосов? Как Google к такому отнесется?
  • 0
Niki, он же не может проверить реальная эта оценка или нет. Есть разметка, есть данные в ней - значит будет их выводить.
  • 5
Niki
17.03 в 11:45
А можно ли сделать так:
1 лайк - 1звезда
2лайка - 2звезды
3лайка - 3 звезды
4лайка - 4звезды
дальше с каждыми 100 оценившими + 0.1 (например 104 лайка 4.1, 204 лайка 4.2) А все что выше 4.7 так и остается??
  • 0
Оставить комментарий:
Нажимая кнопку «Отправить» вы даете согласие на обработку своих персональных данных.
Ваше Имя
Ваш E-mail
Текст комментария