Читал статьи, гуглил, и снова читал. Вывел для себя следующее - на одной странице можно размещать несколько типов разметки, причем в разных формах (мета, json и тп), поисковики это нормально съедают. Вот и начал размечать все что только можно и нельзя) Предпочитаю ставить разметку в json когда это возможно, microdata на крайняк.
Статья будет дополняться ибо о всем сразу не напишешь. Так что периодически заглядывайте сюда)
После каждого типа разметки проверяем разметку на ошибки тут. Начнем.
1. С одной стороны мой сайт это вебсайт, с другой - это виртуальная организация. Значит на главную пихаю обе эти разметки.
Начнем с разметки Organization. Открываем main.tpl вашего шаблона, перед тегом </body> вставляем
HTML:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Organization",
"url": "https://сайт.ру",
"email": "admin(at)сайт.ру",
"name": "Мой сайт",
"logo": "http://ссылка /logo.png",
}
</script>
HTML:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebSite",
"url": "http://сайт ру/",
"dateCreated": "2016-01-01",
"genre": "http://vocab.getty.edu/aat/300265431",
"inLanguage": "ru"
}
</script>
Проверяю на ошибки
2. Перейдем к самому интересному и геморному. К разметке наших фильмов и сериалов. 100 лет назад я прочел статью от maxim harder (на этом форуме он @MaHarder ) о микроразметке schema, его советы и наблюдения и по ним начал учиться в этом направлении. Часть описанного ниже было написано им, часть написано уже мной. Приступим.
Открываем fullstory.tpl вашего шаблона. В самое начало, в качестве первой строчки вставляем
HTML:
<div itemscope itemtype="[catlist=1,3]http://schema.org/Movie[/catlist][catlist=2,4]http://schema.org/TVSeries[/catlist]">
<meta itemprop="dateCreated" content="{date=Y-m-d}">
[xfgiven_duration]<meta itemprop="duration" content="[xfvalue_duration]">[/xfgiven_duration]
<meta itemprop="inLanguage" content="ru">
<meta itemprop="isFamilyFriendly" content="True">
[xfgiven_trailer]<link itemprop="trailer" value="[xfvalue_trailer]">[/xfgiven_trailer]
HTML:
</div>
Первый шаг преодолели. Теперь вам расскажу об одной хитрости. Вот как выглядят мои доп поля
Обратите внимание на contributor,copyrightyear,productioncompany и прочие. Я использовал лат. название доп поля contributor вместо привычного country для страны, copyrightyear вместо year для года выхода, productioncompany вместо company для компании выпустившей фильм/сериал.... Далее объясню почему.poster|Постер||text||1|0|0|0|||0|0|||
screen1|Скриншот 1||text||1|0|0|0
screen2|Скриншот 2||text||1|0|0|0
screen3|Скриншот 3||text||1|0|0|0
screen4|Скриншот 4||text||1|0|0|0|||0|0|||
screen5|Скриншот 5||text||1|0|0|0|||0|0|||
wallpaper|Обои на фон сайта||text||1|0|0|0|||0|0|||
name_russian|Русское название||text||1|0|0|0
name_original|Оригинальное название||text||1|0|0|0
name_english|Название на английском||text||1|0|0|0
contributor|Страна||text|Япония|1|1|0|0
copyrightyear|Год выхода||text||1|1|0|0
genre|Жанр||text||1|1|0|0|||0|0|||
productioncompany|Студия||text||1|1|0|0
director|Режиссёр||text||1|1|0|0
creator|Сценарист/Автор оригинала||text||1|1|0|0
actor|Актеры||text||1|1|0|0|||0|0|||
producer|Продюсер||text||1|1|0|0
provider|Оператор||text||1|1|0|0
musicby|Композитор||text||1|1|0|0
contentrating|Рейтинг MPAA||text||1|1|0|0
typicalagerange|Ограничение возраста||text||1|1|0|0
kp_id|ID с кинопоиска||text||1|0|0|0
premiere|Дата выхода||text||1|0|0|0
datepublished|Премьера в формате ГГГГ-ММ-ДД||text||1|0|0|0
duration|Продолжительность||text|00:ММ:СС|1|0|0|0
keywords|Ключевые слова||text||1|1|0|0
trailer_youtube|Трейлер с ютуба (если нет родного)||text||1|0|0|0|||0|0|||
trailer_iframe|Iframe код трейлера||text||1|0|0|0|||0|0|||
trailer_duration|Продолжительность трейлера||text||1|0|0|0
translator|Перевод / озвучание||text||1|1|0|0
video|Ссылка на фильм||text||1|0|0|0
lastepisode|Какая серия добавлена||text||1|0|0|0|||0|0|||
seasonnumber|Номер сезона||text||1|0|0|0
seriesnumber|Количество серий||text||1|0|0|0
althernative|Видеоплеер от MoonWalk||text||1|0|0|0|||0|0|||
rating_kp|Рейтинг с КиноПоиск||text|0.0|1|0|0|0|||0|0|||
rating_imdb|Рейтинг с IMDB||text|0.0|1|0|0|0|||0|0|||
slogan|Слоган||text||1|0|0|0|||0|0|||
budget|Бюджет||text||1|0|0|0|||0|0|||
charges_world|Кассовые сборы в мире||text||1|0|0|0|||0|0|||
charges_usa|Кассовые сборы в США||text||1|0|0|0|||0|0|||
charges_rus|Кассовые сборы в России||text||1|0|0|0|||0|0|||
marketing|Маркетинг||textarea||1|0|0|0|||0|0|||
dvd_usa|Выход DVD в США||text||1|0|0|0|||0|0|||
audience|Аудитория||text||1|0|0|0|||0|0|||
release_dvd|Релиз DVD||text||1|0|0|0|||0|0|||
release_bluray|Релиз Blu-Ray||text||1|0|0|0|||0|0|||
argument|Аргумент||text||1|0|0|0|||0|0|||
Открываю engine/modules/show.full.php и нахожу ДВА раза (у меня dle 11.1)
PHP:
if( $config['allow_alt_url'] ) $value3[] = "<a
PHP:
if( $config['allow_alt_url'] ) $value3[] = "<a itemprop=\"" . urlencode( $preg_safe_name ) . "\"
PHP:
else $value3[] = "<a
PHP:
else $value3[] = "<a itemprop=\"" . urlencode( $preg_safe_name ) . "\"
Если у вас жанры проставляются в качестве категорий (как модно сейчас делать) делаете следующее. В файле engine/modules/show.full.php находите ДВА раза
PHP:
if( $config['allow_alt_url'] ) $my_cat_link[] = "<a
PHP:
if( $config['allow_alt_url'] ) $my_cat_link[] = "<a itemprop=\"genre\"
PHP:
else $my_cat_link[] = "<a
PHP:
else $my_cat_link[] = "<a itemprop=\"genre\"
Если вы не используете категории в качестве жанров, а жанры вписываете, как и я, в доп поле genre, пропустите этот пункт.
Из правок движка это всё. Далее работаем в fullstory.tpl вашего шаблона. Снова открываем его и делаем следующие правки:
Ищем
HTML:
{title}
HTML:
<a itemprop="url" href="{full-link}">{title}</a>
Далее учтите что в каждом шаблоне свои имена классов, стили и способы вывода информации. Чаще всего информация в фильме из доп полей выводиться в каком нибудь классе. Например у меня страна выводится так
HTML:
<li><div class="ml-label">Страна:</div> <div class="ml-desc">[xfvalue_contributor]</div></li>
HTML:
<div class="ml-desc">[xfvalue_contributor]</div>
Для русского названия
HTML:
<div class="имякласса">[xfvalue_name_russian]</div>
HTML:
<div class="имякласса" itemprop="name">[xfvalue_name_russian]</div>
HTML:
<div class="имякласса">[xfvalue_name_original]</div>
HTML:
<div class="имякласса" itemprop="alternateName">[xfvalue_name_original]</div>
HTML:
<div class="имякласса">[xfvalue_duration]</div>
HTML:
<div class="имякласса" itemprop="duration">[xfvalue_duration]</div>
HTML:
<div class="имякласса">{full-story}</div>
HTML:
<div class="имякласса" itemprop="description">{full-story}</div>
HTML:
<img src="[xfvalue_poster]" alt="{title}" />
HTML:
<img itemprop="image" src="[xfvalue_poster]" alt="{title}" />
Если у вас есть тег {comments-num} в fullstrory.tpl, который выводит количество комментариев к фильму/сериалу, то сделайте следующее
выделите его
HTML:
{comments-num}
HTML:
<span itemprop="commentCount">{comments-num}</span>
Чуть позже напишу как разметить по максимуму. Перейдем пока с следующему пункту.
3. Открываем comments.tpl и ищем в нем
HTML:
<div class="имякласса">
{comment}
</div>
HTML:
<div class="имякласса" itemprop="comment">
{comment}
</div>
4. Делаем разметку наших звёздочек😀 Тобиш AgregateRating. Всё гениально просто
Работает только с типом рейтинга - оценка
Открываем /engine/modules/show.full.php, ищем код
PHP:
if( $row['allow_rate'] ) {
PHP:
if ( $row['rating'] == 0 ) $row['rating'] = 5;
if ( $row['vote_num'] == 0 ) $row['vote_num'] = 1;
$tpl->set( '{rating-num}', ( $row['rating'] / $row['vote_num'] ) );
$tpl->set( '{vote-count}', $row['vote_num'] );
HTML:
<script type="application/ld+json">
{
......
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "{rating-num}",
"bestRating": "5",
"worstRating": "1",
"ratingCount": "{vote-count}"
}
}
</script>
HTML:
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type": "VideoObject",
"@id": "{full-link}",
"description": "{full-story limit="200"}",
"duration": "{seotime}",
"url": "{full-link}",
"name": "{title}",
"thumbnail": "[xfvalue_thumb]",
"thumbnailUrl": "http://tube.anime.kim/uploads/thumbs/[xfvalue_thumb]",
"uploadDate" : "{date=Y-m-d}T{date=H:i:s}",
"datePublished": "{date=Y-m-d}T{date=H:i:s}",
"isFamilyFriendly": "true",
"genre": "Аниме, мультфильм, anime",
"embedUrl": "http://tube.anime.kim/video.php?vid=[xfvalue_revideo]",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "{rating-num}",
"bestRating": "5",
"worstRating": "1",
"ratingCount": "{vote-count}"
},
"interactionStatistic": [
{"@type": "InteractionCounter",
"interactionType": "http://schema.org/WatchAction",
"userInteractionCount": "{views}"
} ]
}
</script>
В итоге получим следующую картинку в Гугле
1 часть - open graph для яндекс
2 часть - разметка для твиттер
это 3 часть статей и разметке для поисковиков
Желающим отблагодарить "на пиво" мои кошельки вебмани:
Рубли - R417794992142
Гривни - U357368699010
$ - Z244912848144
Последнее редактирование:


