Спойлер: Цитата с Яндекса От себя добавлю, разметка помогает пользователям ищущим информацию быстро найти нужную ему. Удобно, быстро и доступно Спойлер Итак, давайте начнём. Начнём с самого начала, для полной разметки, вы должны создать огромное кол-во доп. полей для правильного вывода информации. Нужно (!) создать следующие поля со следующими названиями (одно поле с функцией "Использовать при желании (можно оставить поле пу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> Тут использовал этот мод: http://zerocoolpro.biz/forum/threads/parser-kinopoisk-pkinopoisk-v3-3-0-otkrytyj-kod-skachat.392/ {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 = "&showWatermark=true&watermarkPosition={$this->video_config['flv_watermark_pos']}&watermarkMargin=0&watermarkAlpha={$this->video_config['flv_watermark_al']}&watermarkImageUrl={THEME}/dleimages/flv_watermark.png"; else $watermark = "&showWatermark=false"; if( $option[1] != "" ) { $preview = "&showPreviewImage=true&previewImageUrl=".$option[1]; } else { $preview = "&showPreviewImage=true&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 = "&rtmpURI=".$url."&videoUrl=".$url_hd; } else { $video_url = "&videoUrl=".$url."&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}&stageH={$height}&contentType=video{$video_url}{$watermark}{$preview}&isYouTube=false&rollOverAlpha=0.5&contentBgAlpha=0.8&progressBarColor=0xFFFFFF&defaultVolume=1&fullSizeView=3&showRewind=false&showInfo=false&showFullscreen=true&showScale=true&showSound=true&showTime=true&showCenterPlay=true&autoHideNav=true&autoHideNavTime=3&videoLoop=false&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}&stageH={$height}&contentType=video{$video_url}{$watermark}{$preview}&isYouTube=false&rollOverAlpha=0.5&contentBgAlpha=0.8&progressBarColor=0xFFFFFF&defaultVolume=1&fullSizeView=3&showRewind=false&showInfo=false&showFullscreen=true&showScale=true&showSound=true&showTime=true&showCenterPlay=true&autoHideNav=true&autoHideNavTime=3&videoLoop=false&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. если у вас уже есть поля и вы захотите заменить на вышеупомянутые, то вам следует сначала сделать так. идём в phpMyAdmin в таб SQL вставляем: Код: UPDATE `dle_post` SET `xfields`=REPLACE(`xfields`,СтароеНазвание','НовоеНазвание'); открываем /engine/data/xfields.txt и меням поля идём в админку в управление доп. полями выбираем любое на редактирование и пересохраняем его чистим кеш ========================= Проверить результат можно здесь: Яндекс или Google Яндекс может выдавать ошибку из-за того, что некоторые теги прописываются маленькими буквами - не волнуйтесь, так и с датой. ========================= Демонстрация http://maxim-harder.de/dle/hacks/30-mikrorazmetka-na-tematiku-kino-po-versii-schemaorg.html ========================= обновил и в архив кинул
Все эти разметки - как покойнику кадило! Толку от них нет совершенно никакого, кроме красивого вида в поиске. Только вот на позиции разметка не влияет никак!
Парни, не майтесь дурью с этими разметками, не поможет никак! Лучше займитесь контентом для сайта, не тратьте свое время на всякую чушь!
@Romantv, объясняю последний раз и бесплатно! Разметка улучшает вид в поиске, делает его привлекательней для простого юзера и возможно кликабельней(!). НО! Если нужные вам запросы сидят в глубокой жопе, то им разметка не даст "зеленый коридор" из попы в топ и соответственно вся красота от этой разметки в пользу бедных! Согласен, был допустим нужный запрос на 4о-ом месте, благодаря разметке, оказался скажем на 35-ом, что, сильно от этого трафа прибавится? Еще раз говорю, занимайтесь контентом, продвигайте нужные запросы в топ и тогда вам эта хуета и даром не нужна будет!
yuris но да,ты прав! а они там дураки,пишут – Если я использую разметку, мой сайт будет ранжироваться лучше? Во многих случаях использование разметки делает ваш сайт заметнее в Поиске Яндекса и таким образом привлекает больше целевой аудитории. Яндекс в свою очередь заинтересован в том, чтобы пользователи решали задачи, с которыми они пришли на Поиск. Одна из наших метрик качества так и называется "счастье пользователя". Очевидно, что сайты, повышающие "счастье" будут ранжироваться выше.
@Romantv, ну ни как при наличии разметки из задницы не прыгнешь в топ, ну ни как! Понятие "будут ранжироваться выше" не означает, что если ты сидел на 50- месте, то бац, замонстрячил разметку и моментально засел царем в топе! Ранжироваться выше - это на пару позиций, не больше!
@yuris, на пару позиций на 10-й странице - это одно, но пара позиций на 1-й странице - это весьма ощутимо. К тому же нужно работать на перспективу. Любите своих юзверей и ПСы полюбят вас.
@Romantv, да разметка по большей части вообще ничего не решает, контент - вот двигатель прогресса, а все остальное нужно, но не столь важно!