• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Хак Внедрение микро-разметки для видео в dle. часть 1 - open graph для яндекс

DomiTori

Постоялец
Регистрация
15 Июл 2015
Сообщения
92
Реакции
88
216a368ccf5e9e861accbc379a4becd6.jpg


Предисловие:
Решил я создать тьюб, на который буду выкладывать посерийно сериалы и фильмы, и с него брать видео на свой киносайт. Читал различные статьи о том кто как размечает видео. В основном люди код прописывают в fullstory своего шаблона, что не совсем правильно, ведь лучше когда разметка находиться в теле head. Поковырял движок, посмотрел как реализованы встроенные в DLE теги, о которых мы все знаем. Придумал как их глобально внедрить в DLE.

Это будет первая статья из серии статей, посвященных микро-разметке видео. В этой статье будем "дружить" сайт с Яндексом при помощи Open Graph. Приступим?

1. Открываем /engine/engine.php и ищем в нем код[/PHP]
PHP:
$s_meta .= "<meta property=\"og:{$key}\" content=\"{$value}\" />\n";
меняем его на код
PHP:
$s_meta .= "<meta property=\"{$key}\" content=\"{$value}\" />\n";
Сохраняем файл.

2. Открываем /templates/шаблон/main.tpl и ищем в нем код
PHP:
<html>
меняем на
PHP:
<html lang="ru" prefix="og: http://ogp.me/ns#
              video: http://ogp.me/ns/video#
              ya: http://webmaster.yandex.ru/vocabularies/" >

3. Открываем /engine/modules/show.full.php и ищем в нем код
PHP:
if ( count($images) ) $social_tags['image'] = $images[0];
меняем на
PHP:
if ( count($images) ) $social_tags['og:image'] = $images[0];
ищем код
PHP:
$social_tags['video'] = $media[1][0];
меняем на
PHP:
$social_tags['og:video'] = $media[1][0];
ищем код
PHP:
$social_tags['audio'] = $media[1];
меняем на
PHP:
$social_tags['og:audio'] = $media[1];

4. В этом же файле /engine/modules/show.full.php ищем код
PHP:
$social_tags['site_name'] = $config['home_title'];
        $social_tags['type'] = 'article';
        $social_tags['title'] = htmlspecialchars( $row['title'], ENT_QUOTES, $config['charset'] );
        $social_tags['url'] = $full_link;
меняем его на код
PHP:
$social_tags['og:site_name'] = $config['home_title'];
        $social_tags['og:title'] = htmlspecialchars( $row['title'], ENT_QUOTES, $config['charset'] );
        $social_tags['og:description'] = $row['descr'];
        if ($category_id == 5 OR $category_id == 6) $social_tags['og:type'] = 'video.movie';
        elseif ($category_id == 1 OR $category_id == 2 OR $category_id == 3 OR $category_id == 4) $social_tags['og:type'] = 'video.episode';
        else $social_tags['og:type'] = 'video.other';
        $xfieldsdata = xfieldsdataload( $row['xfields'] );
        $social_tags['og:image'] = "http://сайт.ру/uploads/posts/" . $xfieldsdata['poster'];
        $social_tags['og:url'] = $full_link;
        $social_tags['og:video'] = "http://сайт.ру/video.php?vid=" . $xfieldsdata['revideo'];
        $social_tags['video:duration'] = $xfieldsdata['time_sec'];
        $social_tags['og:video:type'] = "application/x-shockwave-flash";
        $social_tags['og:video:width'] = "1024";
        $social_tags['og:video:height'] = "768";
   
        $social_tags['ya:ovs:upload_date'] = date( 'Y-m-d', $row['date'] ) . "T" . date( 'H:i:s', $row['date'] );
        $social_tags['ya:ovs:adult'] = "false";
        $social_tags['ya:ovs:content_id'] = $xfieldsdata['revideo'];
        $social_tags['ya:ovs:status'] = "published";
        $social_tags['ya:ovs:login'] = $row['autor'];
        $social_tags['ya:ovs:is_official'] = "no";
        $social_tags['ya:ovs:available_platform'] = "Desktop";
        $social_tags['ya:ovs:available_platform'] = "Mobile";
        $social_tags['ya:ovs:allow_embed'] = "true";
        $social_tags['ya:ovs:embed_html'] = "<iframe src='http://сайт.ру/video.php?vid=" . $xfieldsdata['revideo'] . "'></iframe>";
        $social_tags['ya:ovs:category'] = $cat_info[$category_id]['name'];
        $social_tags['ya:ovs:languages'] = "ru";
        $social_tags['ya:ovs:feed_url'] = $full_link;
        $social_tags['ya:ovs:views_total'] = number_format($row['news_read'], 0, ',', ' ');
        $social_tags['ya:ovs:comments'] = number_format($row['comm_num'], 0, ',', ' ');
        $social_tags['ya:ovs:likes'] = $row['vote_num'];
        $social_tags['ya:ovs:rating'] = $row['rating'];
        $social_tags['ya:ovs:poster'] = "http://сайт.ру/uploads/posts/" . $xfieldsdata['poster'];
4. Пояснение что к чему
Данное условие
PHP:
if ($category_id == 5 OR $category_id == 6) $social_tags['og:type'] = 'video.movie';
        elseif ($category_id == 1 OR $category_id == 2 OR $category_id == 3 OR $category_id == 4) $social_tags['og:type'] = 'video.episode';
        else $social_tags['og:type'] = 'video.other';
проверяет к какой категории принадлежит новость, у меня категории с id 5 и 6 это фильмы, с 1 по 4 сериалы и 6 - трейлеры. Соответственно фильмам присваиваем тип video.movie, сериалам video.episode, прочим видео video.other.

Также у меня на сайте есть следующие доп поля
poster - доп поле типа загружаемое изображение, выводит ссылку на кадр из видео.
revideo - доп поле, содержащее id видео в граббере, с помощью которого я вывожу видео-плеер
time_sec - сюда я вписываю длительность видео в секундах

Итог данных манипуляций вы можете увидеть на верхней заглавной картинке этой статьи.

Автор статьи: DomiTori.
Мой новоиспеченный блог о DLE: Для просмотра ссылки Войди или Зарегистрируйся (дорабатываю)

Продолжение следует. В следующих статьях "подружим" VK и Twitter с нашим сайтом.

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

Рубли - R417794992142
Гривни - U357368699010
$ - Z244912848144
 
а как гугл относится к данной разметки? он тоже ее учитывает? или только яндекс?
 
а как гугл относится к данной разметки? он тоже ее учитывает? или только яндекс?
ПС относятся к такому положительно, т.к. микроразметка даёт ПС больше информации о типа контента, размещенного на странице.

Насколько помню для VK, FB и Twitter есть своя микроразметка. При вставке ссылки в эти сети, сервис автоматом подтянет заголовок и изображения из микроразметки.

Также микроразметка может влият на сниппет при выдаче в результатах поисковой системы. Например, если у вас организация и вы добавили микроразметку, в сниппете может быть добавлен адрес, телефон и даже часы работы. Посмотрите тут Для просмотра ссылки Войди или Зарегистрируйся

Для разных тематик есть специфическая разметка.
 
Хм, а возможно ли сделать такую микроразметку для плееров от MoonWalk?
 
Хм, а возможно ли сделать такую микроразметку для плееров от MoonWalk?
попробовать можно, но боюсь с волками вряд ли проканает
в свойстве
PHP:
$social_tags['ya:ovs:embed_html']
укажи доп поле где у тебя ссылка на волков стоит
 
Назад
Сверху