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

Реклама
Реклама

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

DLEPlugins

Кодер
Регистрация
29 Ноя 2015
Сообщения
1.601
Рейтинг реакций
968
Баллы
113
1/3
Автор темы
5fe0e2988f7f7579f86c10680b970dba.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: Dle.Press (дорабатываю)

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

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

Рубли - R417794992142
Гривни - U357368699010
$ - Z244912848144
 
Последнее редактирование:
Автор темы
кому как нравиться. моя разметка не зависит от шаблона. будь то дектоп версия или мобильная.
адаптивный шаблон, всё пучком 🙂 один раз его настроить и так же будет не зависить от "дектоп версия или мобильная"...
 
на дле 11 пашет?
 
@DomiTori, спасибо тебе! Пиши еще для гугла. ДАй вэбмани, хоть на пиво накину.
 
Автор темы
Зачем эти не нужные теги типо $social_tags['ya😱vs:login'] = $row['autor'];. Прибавляется вес только страницы
 
Автор темы
Зачем эти не нужные теги типо $social_tags['ya😱vs:login'] = $row['autor'];. Прибавляется вес только страницы
информация взята с яндекса:
Пример описания видео
HTML:
<!--обязательные поля-->
<html prefix="og: http://ogp.me/ns#
video: http://ogp.me/ns/video#
ya: http://webmaster.yandex.ru/vocabularies/">
<head>
...
<meta property="og:title" content="Что такое schema.org"/>
<meta property="ya:ovs:id" content="3543"/>
<meta property="og:url" content="http://mysite.com/view/308/"/>
<meta property="og:description" content="Schema.org – это стандарт семантической разметки данных в сети,
объявленный поисковыми системами Google, Bing и Yahoo! летом 2011 года.
Цель семантической разметки — сделать интернет более понятным, структурированным и облегчить поисковым системам
и специальным программам извлечение и обработку информации для удобного её представления в результатах поиска."/>
<meta property="video:duration" content="4878787787"/>
<meta property="og:image" content="http://yandex.st/lego/_/X31pO5JJJKEifJ7sfvuf3mGeD_8.png"/>
<meta property="ya:ovs:upload_date" content="2013-06-05"/>
<meta property="ya:ovs:adult" content="false"/>
<meta property="og:type" content="video.other"/>
<meta property="og:video:type" content="flash"/>

<!--дополнительные поля-->
<meta property="ya:ovs:status" content="published"/>
<meta property="ya:ovs:login" content="ivan1"/>
<meta property="ya:ovs:is_official" content="true"/>
<meta property="ya:ovs:license" content="cc"/>
<meta property="og:restrictions:country:allowed string" content="Ru, Ua, Us, Uk"/>
<meta property="ya:ovs:available_platform" content="Desktop"/>
<meta property="og:video:width" content="350"/>
<meta property="og:video:height" content="700"/>
<meta property="ya:ovs:bitrate" content="254"/>
<meta property="ya:ovs:quality" content="low"/>
<meta property="ya:ovs:allow_embed" content="true"/>
<meta property="og:video" content="http://mysite.com/r5cia8fb8q.4708/"/>
<meta property="ya:ovs:embed_html" content="
<object data=&quot;http://mysite.com/r5cia8fb8q.4708/&quot; id=&quot;flash&quot; type=&quot;application/x-shockwave-flash&quot; height=&quot;240&quot; width=&quot;320&quot;><param value=&quot;always&quot; name=&quot;allowscriptaccess&quot;/><param value=&quot;true&quot; name=&quot;allowFullScreen&quot;/><param value=&quot;high&quot; name=&quot;quality&quot;/><param value=&quot;#000000&quot; name=&quot;bgcolor&quot;/><param value=&quot;true&quot; name=&quot;allowfullscreen&quot;/><param value=&quot;playlist=13470&quot; name=&quot;flashvars&quot;/></object>
"/>
<meta property="ya:ovs:content_url" content="http://mysite.com/r5cia8fb8q.4708/111.swf"/>
<meta property="ya:ovs:content_url:public" content="true"/>
<meta property="ya:ovs:category" content="education"/>
<meta property="ya:ovs:genre" content="technology"/>
<meta property="video:tag" content="technology"/>
<meta property="video:tag" content="schema.org"/>
<meta property="ya:ovs:languages" content="ru"/>
<meta property="ya:ovs:subtitle" content="http://mysite.com/r5cia8fb8q.4708/sdf.str"/>
<meta property="ya:ovs:subtitle:language" content="ru"/>
<meta property="ya:ovs:price" content="rent"/>
<meta property="ya:ovs:price:duration" content="P1DT12H"/>
<meta property="ya:ovs:price:rate" content="50"/>
<meta property="ya:ovs:price:currency" content="rur"/>
<meta property="ya:ovs:feed_url" content="http://example.com/user111/view24/view24.xml"/>
<meta property="ya:ovs:price:currency" content="rur"/>
<meta property="ya:ovs:views_last_day" content="5"/>
<meta property="ya:ovs:views_last_month" content="555"/>
<meta property="ya:ovs:views_last_week" content="25"/>
<meta property="ya:ovs:views_total" content="78787"/>
<meta property="ya:ovs:comments" content="23"/>
<meta property="ya:ovs:likes" content="78782"/>
<meta property="ya:ovs:dislikes" content="5"/>
<meta property="ya:ovs:rating" content="9"/>
<meta property="ya:ovs:person" content="Иван Иванов"/> <meta property="ya:ovs:person:role" content="director"/>
<meta property="ya:ovs:person" content="Иван Петров"/> <meta property="ya:ovs:person:role" content="host"/>
<meta property="ya:ovs:production_company" content="yandes"/>
<meta property="ya:ovs:country" content="Ru"/>
<meta property="ya:ovs:poster" content="http://yandex.st/lego/_/X31pO5JJJKEifJ7sfvuf3mGeD_8.png"/>
<meta property="ya:ovs:created_date" content="2012-11-08"/>
<meta property="ya:ovs:modify_date" content="2013-06-05"/>
<meta property="ya:ovs:expiration_date" content="2023-06-05"/>
 
Код:
<meta property="og:title" content="Что такое schema.org"/>
<meta property="ya:ovs:id" content="3543"/>
<meta property="og:url" content="http://mysite.com/view/308/"/>
<meta property="og:description" content="Schema.org – это стандарт семантической разметки данных в сети,
объявленный поисковыми системами Google, Bing и Yahoo! летом 2011 года.
Цель семантической разметки — сделать интернет более понятным, структурированным и облегчить поисковым системам
и специальным программам извлечение и обработку информации для удобного её представления в результатах поиска."/>
<meta property="video:duration" content="4878787787"/>
<meta property="og:image" content="http://yandex.st/lego/_/X31pO5JJJKEifJ7sfvuf3mGeD_8.png"/>
<meta property="ya:ovs:upload_date" content="2013-06-05"/>
<meta property="ya:ovs:adult" content="false"/>
<meta property="og:type" content="video.other"/>
<meta property="og:video:type" content="flash"/>
Ну и эти и оставить, зачем еще куча не нужного
 
Автор темы
Код:
<meta property="og:title" content="Что такое schema.org"/>
<meta property="ya:ovs:id" content="3543"/>
<meta property="og:url" content="http://mysite.com/view/308/"/>
<meta property="og:description" content="Schema.org – это стандарт семантической разметки данных в сети,
объявленный поисковыми системами Google, Bing и Yahoo! летом 2011 года.
Цель семантической разметки — сделать интернет более понятным, структурированным и облегчить поисковым системам
и специальным программам извлечение и обработку информации для удобного её представления в результатах поиска."/>
<meta property="video:duration" content="4878787787"/>
<meta property="og:image" content="http://yandex.st/lego/_/X31pO5JJJKEifJ7sfvuf3mGeD_8.png"/>
<meta property="ya:ovs:upload_date" content="2013-06-05"/>
<meta property="ya:ovs:adult" content="false"/>
<meta property="og:type" content="video.other"/>
<meta property="og:video:type" content="flash"/>
Ну и эти и оставить, зачем еще куча не нужного
ты в подробностях "разжоуваешь"яндексу что у тебя на странице и зачем оно там находиться. Причем не только яндекс понимает open graph но и другие поисковики, причем у каждого свой минимальный набор.
Открой исходную страницу какого нибудь тьюба, например этой страницы. Посмотри как она размечена. Зачем же они так заморачивались, если можно минимум описать и не париться?!Может времени свободного было много или заняться было нечем... Наверное не просто так. Все популятные тьюбы фаршируют сайт разметкой по полной

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

Код:
<meta property="og:title" content="Что такое schema.org"/>
<meta property="ya:ovs:id" content="3543"/>
<meta property="og:url" content="http://mysite.com/view/308/"/>
<meta property="og:description" content="Schema.org – это стандарт семантической разметки данных в сети,
объявленный поисковыми системами Google, Bing и Yahoo! летом 2011 года.
Цель семантической разметки — сделать интернет более понятным, структурированным и облегчить поисковым системам
и специальным программам извлечение и обработку информации для удобного её представления в результатах поиска."/>
<meta property="video:duration" content="4878787787"/>
<meta property="og:image" content="http://yandex.st/lego/_/X31pO5JJJKEifJ7sfvuf3mGeD_8.png"/>
<meta property="ya:ovs:upload_date" content="2013-06-05"/>
<meta property="ya:ovs:adult" content="false"/>
<meta property="og:type" content="video.other"/>
<meta property="og:video:type" content="flash"/>
 
кто-нибудь поставил такую разметку? Есть ошибки при проверке?
 
для гугла напишу сегодня. кошельки прикрепляю к первому посту. вопросы задавайте в этой теме
А для гугла написал таки ты? А то чет смотрю и хер пойму, где оно есть.😉
 
5fe0e2988f7f7579f86c10680b970dba.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: Dle.Press (дорабатываю)

Продолжение следует. В следующих статьях "подружим" VK и Twitter с нашим сайтом.
А вк и твит подружил? Тож чет не увидел. Или выпито уже много, шо не вижу ни фуя😀
 
Автор темы
Зайди в вебмастер яши, там написано. А то тут тыкать дольше буквы буду.😀
Ипать ты напомнил. Покорефанюсь и с ними. С дуровым пивка выпьем, твитеровскому скажу "фак ю спилберг". Позже напишу мануалы
 
Ипать ты напомнил. Покорефанюсь и с ними. С дуровым пивка выпьем, твитеровскому скажу "фак ю спилберг". Позже напишу мануалы
Збс. В теме рокет гэймс не отвечай тогда 😀
ПыСы... А то я твой "пресс" уже обсмотрел, тоже не нашёл
 

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

Назад
Сверху