Семантическая микроразметка рейтинга в 5 звезд
Как всегда, перед началом внесения изменений в код движка, хочу вас предупредить, о возможных непредвиденных казусах, потому, всегда, делайте резервные копии редактируемых файлов. Сегодня, будем модифицировать такие файлы: — /engine/modules/functions.php- /engine/modules/show.full.php- /engine/modules/show.short.php- /templates/*Имя Темы*/shortstory.tpl
— /templates/*Имя Темы*/fullstory.tpl
Предлагаю немного модифицировать наш functions.php
Открываем /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 = set( '[/rating]', "" );
} else {
Открываем engine/modules/show.short.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}', "".$row['vote_num']."" );
$tpl->set( '[rating]', "" );
$tpl->set( '[/rating]', "" );
} else {
Заменяем на:
if ( $row['vote_num'] == 0 ) $row['vote_num'] = 1;
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}', "".$row['vote_num']."" );
$tpl->set( '[rating]', "" );
$tpl->set( '[/rating]', "" );
} else {
Сохраняем изменения и закидываем на хостинг с заменой!Итак, мы подготовили и модифицировали стандартный рейтинг. Осталось, вывести его на страницы, краткой и полной новости.
Открываем /templates/*Имя Темы*/fullstory.tpl (shortstory.tpl) и в месте вывода рейтинга вставляем:
[rating]{rating}{vote-num}[/rating]
Если не знаете что и как заменять В каждом шаблоне вывод рейтинга разный, выглядит примерно так
[rating]{rating}[/rating]
Если у вас в выводе рейтинга присутствует какой-либо класс (в примере class=»full-rating») то нужно этот класс скопировать в код для вставки.Получается вместо:
[rating]{rating}[/rating]
Должно выйти:
[rating]{rating}{vote-num}[/rating]
Здесь стоит заменить что в размешиваемом теге (в этом случае тег span) должен присутствовать тег {vote-num}, я его скрыл с помощью стилей, если вам нужно — можете открыть (убрав style=»display:none;»), но убирать нельзя, так ка не будет размечен reviewcount.
Ищем тег {title} и заменяем на:
{title}
В начало файла вставляем: В конце файла ставим:
Ищем тег {full-story} и заменяем на:
{full-story}
Это разметка description, что бы не было ошибки Валидатора Яндекс:
ПРЕДУПРЕЖДЕНИЕ:
не выполнено обязательное условие для острова «Статья» — обязательное поле description отсутствуетСохраняем изменения и закидываем на хостинг с заменой!
Автор: ???