Редактор темы

Внедрение микро-разметки для видео в dle. часть 3 - schema для google

DLEPlugins

Кодер
Регистрация
29 Ноя 2015
Сообщения
1.601
Рейтинг реакций
968
Баллы
113
1/3
Автор темы
17b5f41b052baaafbeb566d59ceb577c.png
Решил выкроить время и поделиться с вами инфой, как лично я встраиваю разметку от schema в свои сайты. Как раз буду писать статью и попутно ставить разметку на один из сайтов. Форум этот киношный, да и мои сайты с кино и сериалами, поэтому буду писать о разметке кино.
Читал статьи, гуглил, и снова читал. Вывел для себя следующее - на одной странице можно размещать несколько типов разметки, причем в разных формах (мета, 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>
Само собой вписываете свои данные, та непонятная ссылка в genre говорит гуглу что это вебсайт а не банка пива или пачка сигарет xD
Проверяю на ошибки

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>
В catlist выставляете id категорий с фильмами для типа Movie и с сериалами для типа TVSeries. В isFamilyFriendly тоже можно выставить теги с категориями или значениями доп полей. True значит, что фильм/сериал можно смотреть несовершеннолетним. false значит что фильм/сериал только для совершеннолетних. trailer меняете на ваше лат. название доп поле, которое содержит ссылку на трейлер. duration содержит длительность фильма/сериала в формате 00:ММ:СС (вписываю руками)

Первый шаг преодолели. Теперь вам расскажу об одной хитрости. Вот как выглядят мои доп поля
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|||
Обратите внимание на contributor,copyrightyear,productioncompany и прочие. Я использовал лат. название доп поля contributor вместо привычного country для страны, copyrightyear вместо year для года выхода, productioncompany вместо company для компании выпустившей фильм/сериал.... Далее объясню почему.
Открываю 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 ) . "\"
Эта махинация сделает возможным авто-разметку для доп полей с включенным "Использовать значения полей как перекрестные гиперссылки". А тут обязательное условие, чтобы вместо year вы выставили copyrightyear в качестве альт. названия доп поля, и тд....

Если у вас жанры проставляются в качестве категорий (как модно сейчас делать) делаете следующее. В файле 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>
Дальше будьте внимательны и правьте в зависимости от названия вашего класса 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'] );
Открываем fullstory.tpl вашего шаблона и в json (я использую json в разметке schema) код вашей разметки в самый низ вставляем
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>

В итоге получим следующую картинку в Гугле
screenshot_1-jpg.7816



Желающим отблагодарить "на пиво" мои кошельки вебмани:

Рубли - R417794992142
Гривни - U357368699010
$ - Z244912848144
 
Последнее редактирование:
Интересно, интересно. Только я не понял а где часть 1 и часть 2 если это 3тья?
 
яша ld+json разметку игнорит 🙁
 
Автор темы
яша ld+json разметку игнорит 🙁
именно яша по разметке организации в формате json выводил при поиске "сайт.ру" адресс, телефон, емейл... Как ни странно все равно кушает
 
именно яша по разметке организации в формате json выводил при поиске "сайт.ру" адресс, телефон, емейл... Как ни странно все равно кушает
по организации - может быть. на фильмы на страницах фильмов - игнорил её на некоторых сайтах где пробовал так разметку ставить! приходилось по другому делать 🙂
 
Автор темы
по организации - может быть. на фильмы на страницах фильмов - игнорил её на некоторых сайтах где пробовал так разметку ставить! приходилось по другому делать 🙂
для яши в первой части серии статей написал отдельно, так как яша у нас парниш капризный, без бутылки не понимает

хех, в этой тебе набрал 777 сообщений
Screenshot
паралельно в vk набрал 7777 друзей.
Screenshot
мб миллион евро найду на улице?...
 
Последнее редактирование модератором:
рад, что моя инструкция так помогла тебе ))
 
Автор темы
рад, что моя инструкция так помогла тебе ))
я бы сказал - она открыла глаза на schema в DLE.

именно яша по разметке организации в формате json выводил при поиске "сайт.ру" адресс, телефон, емейл... Как ни странно все равно кушает
вот о чем я говорил
Screenshot
 
Последнее редактирование модератором:
Автор темы
что то решил я посмотреть разметку кинопоиска...
главная - нет ничего:
2016-08-05_00-45-10.png
фильм - есть, но вместе с рецензиями/отзывами:
2016-08-05_00-46-47.png
жанры, страны и другие второстепенные страницы - нет разметки:
2016-08-05_00-48-10.png

Так что вообще не стоит заморачитваться кроме как над тем, чтобы сделать нормальную разметку фильма на странице фильма, а не на всех страницах нахерачить всё подряд что только можно 😀

при этом кинопоиск - это вроди как организация, имеющая офф офис в москве! 🙂
 
Последнее редактирование:
Автор темы
при этом кинопоиск - это вроди как организация, имеющая офф офис в москве! 🙂
Не спорю, статус организации престижнее. И отношение поисковиков другое сразу. Пох, лучше переесть чем голодать. Предпочитаю херячить разметку по максимуму. Она нужна не только для поисковиков...🙂
Все в голос кричали, нах ssl нужен, пользы 0. Я потестил. Открою тайну. Даже разметка быстрее съедается поисковиками, когда есть ssl. И к сайту дружелюбнее они. Сайт с 0 посещалкой, на котором просто хаки испытываю, по определённым запросам на первой странице в гугле в первой тройке. Как? Отвечу - ssl + разметка. Щас помидоры пойдут в бой, но у каждого вера своя. Я на опытах сделал для себя вывод и буду строить сайты исходя из своих наблюдений. Остальные пусть работают по своему)
 
Последнее редактирование:
Предпочитаю херячить разметку по максимуму.
ещё реальный телефон укажи в ней нихуяси чтоб правообладатели могли всегда тебе позвонить особенно РКН 😉
 
Автор темы
ещё реальный телефон укажи в ней нихуяси чтоб правообладатели могли всегда тебе позвонить особенно РКН 😉
на одном из сайтов я адрес поставил - токио, япония, ул ........ Телефон я не ставлю. Хай правообладатели в японию бегут за мной нихуяси
 
@DomiTori, Я вот не вкурю, у меня новый сайт, заточен под гулю. стоит мзвращаться именно под эту тему?
 
Автор темы
два дня назад добавил разметку звездочек по новому методу, сегодня уже вижу плоды.
Screenshot_1.jpg
кому нужно могу поделиться своим методом. В отличие от старых хаков, которые валяются в сети нет необходимости править 100500 файлов движка. Все гораздо проще
 

Похожие темы Последние темы Популярные темы

Назад
Сверху