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

Микроразметка на тематику кино по версии schema.org

<meta itemprop="description" content="<?substr($BRIEF$,0,163)?>...">
укозом не занимаюсь! все зависит от того сколько там предложений! Яндекс больше первого предложения обычно не берет в снипет, если предложение длинное - он может взять кусок предложения, в зависимости от общей длины снипета, а на это влияет ранее указанные жанры, режисер и т.д....
 
Здравствуйте !
Подскажите пожалуйста :
  • expand_less
@type
Movie
aggregateRating

@type
AggregateRating
ratingValue
5
bestRating
5.0
worstRating
1.0
ratingCount
1
cancel
image
Необходимо указать значение для поля image.
cancel
name
Необходимо указать значение для поля name.
warning
dateCreated
Рекомендуется заполнять поле dateCreated. Укажите значение, если оно известно.
warning
director
Рекомендуется заполнять поле director. Укажите значение, если оно известно.
Как исправить ошибки ?

Необходимо указать значение для поля image.

cancel
name
Необходимо указать значение для поля name.

warning
dateCreated
Рекомендуется заполнять поле dateCreated. Укажите значение, если оно известно.

warning
director
Рекомендуется заполнять поле director
. Укажите значение, если оно известно. ????
 
@Reliz.club, эти все поля от разметки кино schema.org
Делай как написано в данной теме и не должно быть потом ошибок.
 
Сделал все по инструкции, и появилось это, не подскажите как исправить?
 

Вложения

  • Безымянный.png
    Безымянный.png
    37,4 КБ · Просмотры: 138
@LisER07, Спасибо, помогло
 
@byroot, может у него случайно в редакторе (notepad или блокнот) была противоположная кодировка ?)
 
@byroot, Ничего не менял, все в точности по инструкции делал. И перекодировка (перекодировку делал в админке хостинга) после этого косяка помогла буквально до перестроения публикаций, и все снова появилось, пытался снова сделать перекодировку и вот такой текст получился : "Не удалось изменить кодировку xfields.txt, объект в другой кодировке уже существует!" Пошел другим путем, в админке в значениях доп полей убрал нечитабельный текст и вписал все как должно быть

А потом психанул 😵 и откатил все изменения за последние 2 дня...
 
Последнее редактирование модератором:
под dle 13.2 ,беда php строки не соответствуют данной теме, обновить бы информацию 🙂
 
под dle 13.2 ,беда php строки не соответствуют данной теме, обновить бы информацию 🙂

Где то был даже плагин по 13.2 для микроразметки под фильмы, типок за 100 руб продавал, не могу найти 🙁
 
Ну до чего же разленились, даже плагины для разметки покупают )))
 
Есть апдейт этого модуля на DLE 17.1?
 
Последнее редактирование:
1452975568_e9occlwoko8ruhkq_ogr5ixxxl4j3hpexhjnof_p3ymrypkwj94qgrtdb3sbc6ky.jpg

От себя добавлю, разметка помогает пользователям ищущим информацию быстро найти нужную ему. Удобно, быстро и доступно 😉
Итак, давайте начнём. Начнём с самого начала, для полной разметки, вы должны создать огромное кол-во доп. полей для правильного вывода информации. Нужно (!) создать следующие поля со следующими названиями (одно поле с функцией "Использовать при желании (можно оставить поле пуcтым)" и "Использовать значения полей как перекрестные гиперссылки "):
contributor или countryOfOrigin (лучше первое) - Страна
copyrightyear - Год
genre - Жанр (если у вас категории являются жанром, то пропускаем)
director - Режиссёр
creator - Сценарист
musicBy - Композитор
editor - Монтаж
producer - Продюсер
provider - Оператор
translator - Перевод / озвучание
actor - Актёры

Эти поля должны называться ИМЕННО ТАК! Никак иначе!!! Не обязательно использовать все поля, но если будете - то только такие! Однако, нам понадобятся другие поля. Поля для: ID с кинопоиска, постера, русского названия, оригинального названия, ссылки(!) для трейлера, ссылки для видео (покажу как реализовать вывод плеера на отдельной странице), продолжительности самого фильма (в формате ЧЧ:ММ:СС). Поле короткой и полной новости будет использовано для описания.

На этой стадии вы должны определиться что вы хотите видеть у себя на сайте.

============================

Начнём с простого. Создаём поля. Далее идём к шаблонам. Открываем fullstory.tpl. В самое начало ставим
Код:
<div itemscope itemtype="http://schema.org/Movie">
<meta itemprop="dateCreated" content="{date=Y-m-d}">
    <meta itemprop="inLanguage" content="ru">
    <meta itemprop="isFamilyFriendly" content="[if xfvalue_age>=16]false[/if][if xfvalue_age<=15]True[/if]">
    [xfgiven_trailer]<link itemprop="trailer" value="[xfvalue_trailer]">[/xfgiven_trailer]
    [xfgiven_video]<link itemprop="video" value="{print-link}">[/xfgiven_video]
а в конец
Код:
</div>
А тут
Код:
<meta itemprop="isFamilyFriendly" content="[if xfvalue_age>=16]false[/if][if xfvalue_age<=15]True[/if]">
я использовал это. Если вы не можете себе этого позволить, то меняем на это
Код:
<meta itemprop="isFamilyFriendly" content="[catlist=X]false[/catlist][not-catlist=X]True[/not-catlist]">
Х меняем на ID категории, которая предназначена для "взрослых" (к.п. Жанр "Эротика"). А если и это вас не устраивает, то вот:
Код:
<meta itemprop="isFamilyFriendly" content="True">

Код:
[xfgiven_trailer]<link itemprop="trailer" value="[xfvalue_trailer]">[/xfgiven_trailer]
[xfgiven_video]<link itemprop="video" value="{print-link}">[/xfgiven_video]
trailer - это название поля, куда вводится ссылка на трейлер. Меняем на своё.
video - это название поля, куда вводится ссылка на видео. Меняем на своё.
{print-link} - об этом ниже

Далее, желательно тег {title} обернуть ссылкой на новость, примерно так:
Код:
<a itemprop="url" href="{full-link}">{title}</a>
itemprop="url" - этот тег нужен для разметки, который указывает на страницу записи.
Далее. Прописываем доп. поля. Пример:
Русское название
Код:
<span itemprop="name">[xfvalue_name]</span>
Оригинальное название
Код:
<span itemprop="alternateName">[xfvalue_nameo]</span>
Продолжительность
Код:
<span itemprop="duration">[xfvalue_time]</span>
ID с кинопоиска
Код:
<noindex><a href="http://www.kinopoisk.ru/level/1/film/{kp_id}/" target="_blank" itemprop="sameAs"><img class="kp" title="Страница на KinoPoisk.ru (откроется в новом окне)" alt="Страница на KinoPoisk.ru (откроется в новом окне)" src="http://cnd.kinospace.org/ratingkpimdb/rating.php?kp_id={kp_id}&style=1&style_type=png&expect=43200"></a></noindex>
Тут использовал этот мод: Парсер кинопоиск pkinopoisk v3.3.0 открытый код скачать
{kp_id} - меняем на ваше поле!!!
Постер
Код:
<img itemprop="image" src="{image-1}" title="{title}">
Описание
Код:
<div itemprop="description">{full-story}</div>
Поля меняем на свои

Дальше (опционально), если вы используете вывод кол-во комментариев, то оборачиваем {comments-num} в
Код:
<span itemprop="commentCount">{comments-num}</span>

============================

Открываем comments.tpl
{comment} меняем на
Код:
<span itemprop="comment">{comment}</span>

============================

Переходим к php файлам. Открываем engine/modules/show.full.php

Если вы используете категории движка как жанры, то следуем этим пунктам
ищем
Код:
if( $config['allow_alt_url'] ) $my_cat_link[] = "<a
и
Код:
else $my_cat_link[] = "<a
после добавляем
Код:
itemprop=\"genre\"

Далее ищем дважды
Код:
if( $config['allow_alt_url'] ) $value3[] = "<a
и
Код:
else $value3[] = "<a
после добавляем
Код:
 itemprop=\"" . urlencode( $preg_safe_name ) . "\"
после этого все значения доп. полей, которые имеют включенную функцию перекрёстных ссылок будут выводится в микроразметке как надо.
Теперь, если вы хотите выводить плеер на отдельной странице, нужно понять, что от функции "Печать страницы" нужно будет отказаться, ибо мы будем замещать её.

ищем
Код:
if ($config['allow_search_print']) {

            $tpl->set( '[print-link]', "<a href=\"" . $print_link . "\">" );
            $tpl->set( '[/print-link]', "</a>" );

        } else {

            $tpl->set( '[print-link]', "<a href=\"" . $print_link . "\" rel=\"nofollow\">" );
            $tpl->set( '[/print-link]', "</a>" );

        }
и меняем на
Код:
if ($config['allow_search_print']) {

            $tpl->set( '{print-link}', $print_link  );

        } else {

            $tpl->set( '{print-link}', $print_link  );

        }

============================

Открываем print.tpl

Меняем всё на
Код:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
<title>Плеер к {title}</title>
<style>
iframe {
  width: 100%;
  height: 100%;
  display: block;
  margin: 0;
  padding: 0;
  position: absolute;
  top: 0;
  left: 0;
}
</style>
<script type="text/javascript" src="http://сайт/engine/classes/js/jquery.js"></script>
<script type="text/javascript" src="http://сайт/engine/classes/js/jqueryui.js"></script>
<script type="text/javascript" src="http://сайт/engine/classes/js/dle_js.js"></script>
</head>
<body bgcolor="#ffffff" text="#000000">
Вывод плеера, смотрите документацию к плееру или моду
</body>
</html>

============================

Теперь, давайте дадим разметку видеофайлу. Открываем fullstory.tpl.
и после
Код:
<div itemscope itemtype="http://schema.org/Movie">
ставим
Код:
<div itemprop="video" itemscope itemtype="http://schema.org/VideoObject">
    <link itemprop="thumbnail" content="{image-1}" />
    <img itemprop="thumbnailUrl" src="{image-1}" title="{title}" style="display:none;">
    <meta itemprop="description" content="{full-story}" />
    <meta itemprop="name" content="{title}" />
    <meta itemprop="uploadDate" content="{date=Y-m-d}T{date=G:i:s}" />
    <meta itemprop="datePublished" content="{date=Y-m-d}">
    <link itemprop="url" href="{print-link}" />
    <meta itemprop="isFamilyFriendly" content="[if xfvalue_age>=16]false[/if][if xfvalue_age<=15]True[/if]">
    <meta itemprop="duration" content="[xfvalue_time]" />
</div>
Код:
{image-1},[xfvalue_time]
меняем на своё
Код:
<meta itemprop="isFamilyFriendly" content="[if xfvalue_age>=16]false[/if][if xfvalue_age<=15]True[/if]">
аналогия сверху

============================================

Если у вас трейлер подключался при помощи тега video, то открываем engine/classes/parse.classes.php и заменяем функцию
Код:
function build_video( $matches=array() ) {

...

    }

на
Код:
function build_video( $matches=array() ) {
        global $config;

        $url = $matches[1];

        if (!count($this->video_config)) {

            include (ENGINE_DIR . '/data/videoconfig.php');
            $this->video_config = $video_config;

        }

        $get_size = array();
        $sizes = array();

        $get_size = explode( ",", trim( $url ) );

        if (count($get_size) > 1 AND ( stripos ( $get_size[0], "http" ) === false OR stripos ( $get_size[0], "rtmp:" ) === false ) )  {

            $sizes = explode( "x", trim( $get_size[0] ) );

            if (count($sizes) == 2) {

                $width = intval($sizes[0]) > 0 ? intval($sizes[0]) : $this->video_config['width'];
                $height = intval($sizes[1]) > 0 ? intval($sizes[1]) : $this->video_config['height'];

                if (substr ( $sizes[0], - 1, 1 ) == '%') $width = $width."%";
                if (substr ( $sizes[1], - 1, 1 ) == '%') $height = $height."%";

            } else {

                $width = $this->video_config['width'];
                $height = $this->video_config['height'];


            }

        } else {

            $width = $this->video_config['width'];
            $height = $this->video_config['height'];

        }

        if (count($get_size) == 3)  $url = $get_size[1].",".$get_size[2];
        elseif (count($get_size) == 2 AND count($sizes) == 2) $url = $get_size[1];

        $option = explode( "|", trim( $url ) );

        $url = $this->clear_url( $option[0] );

        $type = explode( ".", $url );
        $type = strtolower( end( $type ) );

        if( preg_match( "/[?&;<\[\]]/", $url ) ) {

            return "[video=" . $url . "]";

        }

        if( $option[1] != "" ) {

            $option[1] = htmlspecialchars( strip_tags( stripslashes( $option[1] ) ), ENT_QUOTES, $config['charset'] );
            $decode_url = $url . "|" . $option[1];

        } else
            $decode_url = $url;


        if ( count($sizes) == 2 ) $decode_url = $width."x".$height.",".$decode_url;

        if ( stripos ( $url, "rtmp:" ) === false ) $detect_rtmp = false; else $detect_rtmp = true;

        if( $type == "flv" OR $type == "f4v" OR $type == "mp4" OR $type == "m4v" OR $type == "m4a" OR $type == "mov" OR $detect_rtmp) {

            if( $this->video_config['flv_watermark'] ) $watermark = "&amp;showWatermark=true&amp;watermarkPosition={$this->video_config['flv_watermark_pos']}&amp;watermarkMargin=0&amp;watermarkAlpha={$this->video_config['flv_watermark_al']}&amp;watermarkImageUrl={THEME}/dleimages/flv_watermark.png";
            else $watermark = "&amp;showWatermark=false";

            if( $option[1] != "" ) {

                $preview = "&amp;showPreviewImage=true&amp;previewImageUrl=".$option[1];

            } else {
          
                $preview = "&amp;showPreviewImage=true&amp;previewImageUrl={THEME}/dleimages/videopreview.jpg";
          
            }

            $id_player = md5( microtime() );

            $list = explode( ",", $url );
            $url = trim($list[0]);

            if (count($list) > 1 ){

                $url_hd = trim($list[1]);

            } else {

                $url_hd = '';
            }

            if ( $detect_rtmp ) {

                $video_url = "&amp;rtmpURI=".$url."&amp;videoUrl=".$url_hd;

            } else {

                $video_url = "&amp;videoUrl=".$url."&amp;videoHDUrl=".$url_hd;

            }

            if( $type == "mp4" OR $type == "m4v" OR $type == "m4a" OR $type == "mov" ) {

                if( $option[1] != "" ) {

                    $preview = $option[1];

                } else {

                    $preview = "";
                }
          
                if( $this->video_config['preload'] ) $preload = "metadata";
                else $preload = "none";
      
                return "<!--dle_video_begin:{$decode_url}--><video itemprop=\"trailer\" itemscope itemtype=\"http://schema.org/VideoObject\" width=\"{$width}\" height=\"{$height}\" preload=\"{$preload}\" poster=\"{$preview}\" controls=\"controls\">
                        <source itemprop=\"url\" type=\"video/mp4\" src=\"{$url}\"></source>
                        <link itemprop=\"thumbnail\" href=\"{$preview}\" />
                        <meta itemprop=\"description\" content=\"Трейлер к фильму\" />
                        <meta itemprop=\"name\" content=\"Трейлер к фильму\" />
                        </video><!--dle_video_end-->";

            } else {

                        return "<!--dle_video_begin:{$decode_url}--><object itemprop=\"trailer\" itemscope itemtype=\"http://schema.org/VideoObject\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0\" width=\"{$width}\" height=\"{$height}\" id=\"Player-{$id_player}\">
                            <param name=\"movie\" value=\"" . $config['http_home_url'] . "engine/classes/flashplayer/media_player_v3.swf?stageW={$width}&amp;stageH={$height}&amp;contentType=video{$video_url}{$watermark}{$preview}&amp;isYouTube=false&amp;rollOverAlpha=0.5&amp;contentBgAlpha=0.8&amp;progressBarColor=0xFFFFFF&amp;defaultVolume=1&amp;fullSizeView=3&amp;showRewind=false&amp;showInfo=false&amp;showFullscreen=true&amp;showScale=true&amp;showSound=true&amp;showTime=true&amp;showCenterPlay=true&amp;autoHideNav=true&amp;autoHideNavTime=3&amp;videoLoop=false&amp;defaultBuffer=3\" />
                            <param name=\"allowFullScreen\" value=\"true\" />
                            <param name=\"scale\" value=\"noscale\" />
                            <param name=\"quality\" value=\"high\" />
                            <param name=\"bgcolor\" value=\"#000000\" />
                            <param name=\"wmode\" value=\"opaque\" />
                            <embed src=\"" . $config['http_home_url'] . "engine/classes/flashplayer/media_player_v3.swf?stageW={$width}&amp;stageH={$height}&amp;contentType=video{$video_url}{$watermark}{$preview}&amp;isYouTube=false&amp;rollOverAlpha=0.5&amp;contentBgAlpha=0.8&amp;progressBarColor=0xFFFFFF&amp;defaultVolume=1&amp;fullSizeView=3&amp;showRewind=false&amp;showInfo=false&amp;showFullscreen=true&amp;showScale=true&amp;showSound=true&amp;showTime=true&amp;showCenterPlay=true&amp;autoHideNav=true&amp;autoHideNavTime=3&amp;videoLoop=false&amp;defaultBuffer=3\" quality=\"high\" bgcolor=\"#000000\" wmode=\"opaque\" allowFullScreen=\"true\" width=\"{$width}\" height=\"{$height}\" align=\"middle\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\"></embed>
                            <link itemprop=\"url\" href=\"{$url}\">
                            <link itemprop=\"thumbnail\" href=\"{$preview}\" />
                            <meta itemprop=\"description\" content=\"Трейлер к фильму\" />
                            <meta itemprop=\"name\" content=\"Трейлер к фильму\" />
                            </object><!--dle_video_end-->";
            }

        } elseif( $type == "avi" OR $type == "divx" OR $type == "mkv" ) {

            $url = htmlspecialchars( trim( $url ) , ENT_QUOTES, $config['charset'] );

            return "<!--dle_video_begin:{$decode_url}--><object classid=\"clsid:67DABFBF-D0AB-41fa-9C46-CC0F21721616\" width=\"{$width}\" height=\"{$height}\" codebase=\"http://go.divx.com/plugin/DivXBrowserPlugin.cab\">
                <param name=\"custommode\" value=\"none\" />
                <param name=\"mode\" value=\"zero\" />
                <param name=\"minVersion\" value=\"2.0.0\" />
                <param name=\"src\" value=\"{$url}\" />
                <param name=\"previewImage\" value=\"{$option[1]}\" />
                <embed itemprop=\"trailer\" type=\"video/divx\" src=\"{$url}\" custommode=\"none\" width=\"{$width}\" height=\"{$height}\" mode=\"zero\" previewImage=\"{$option[1]}\" minVersion=\"2.0.0\" pluginspage=\"http://go.divx.com/plugin/download/\">
                </embed>
                </object><!--dle_video_end-->";

        } else {
      
            return "[video=" . $url . "]";
  
        }

    }
затем перестраиваем публикации и чистим кеш

=============================

Думаю, на этом всё. если, что-то вспомнится - дополню.


P.S. если у вас уже есть поля и вы захотите заменить на вышеупомянутые, то вам следует сначала сделать так.
  1. идём в phpMyAdmin
  2. в таб SQL
  3. вставляем:
    Код:
    UPDATE `dle_post` SET `xfields`=REPLACE(`xfields`,СтароеНазвание','НовоеНазвание');
  4. открываем /engine/data/xfields.txt и меням поля
  5. идём в админку
  6. в управление доп. полями
  7. выбираем любое на редактирование и пересохраняем его
  8. чистим кеш

=========================

Проверить результат можно здесь: Яндекс или Google

Яндекс может выдавать ошибку из-за того, что некоторые теги прописываются маленькими буквами - не волнуйтесь, так и с датой.
=========================

Демонстрация
http://maxim-harder.de/dle/hacks/30-mikrorazmetka-na-tematiku-kino-po-versii-schemaorg.html

=========================

обновил и в архив кинул
Было бы лучше в JSON
 

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

Назад
Сверху