Перейти к содержанию
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
  • Объявления

    • Maxim

      Регистрация на форуме!   05/03/17

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

Активность

Лента обновляется автоматически     

  1. Ещё раньше
  2. Обновление сайта, версия 3.0 BETA Блог Максима Гардера
  3. Курс ЦБР

    Цена по курсу валют Здесь задаём все вопросы по поводу модуля, ошибки и пожелания прошу сюда
  4. Adf.ly - интеграция в систему DLE В этой теме только предложения и пожелания к дальнейшему развитию. Все проблемы и баги пишем сюда
  5. @JustYay Извиняюсь, был занят. открываем engine/ajax/search.php и ищем $db->query("SELECT id, short_story, title, date, alt_name, category FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1".$this_date." AND (short_story LIKE '%{$query}%' OR full_story LIKE '%{$query}%' OR xfields LIKE '%{$query}%' OR title LIKE '%{$query}%') ORDER by date DESC LIMIT 5"); в исходном коде это строка 104. и меняем на $db->query("SELECT id, short_story, title, date, alt_name, category FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1".$this_date." AND (xfields LIKE '%{$query}%' OR title LIKE '%{$query}%') ORDER by date DESC LIMIT 5");
  6. Планы на будущее

    Планы на будущее
  7. Как сделать поиск быстрой новости по тайтлу и доп.полю?
  8. Установка Залить файлы из папки uploads в корень сайта (уделите внимание папке Default в папке templates) Запустите файл install.php в корне вашего сайта, а затем удалите В шаблонах откройте файл main.tpl и пропишите до </head> <link href="{THEME}/releasestatus/main.css" type="text/css" rel="stylesheet"> В этом же файле, или любом другом файле шаблона, прописываем это для вывода блока {include file="engine/modules/releasestatus.php"} На файл engine/data/releasestatus.php выставить права 666 Теги для release_block.tpl {image}, {image-1}, {image-*} - При условии, что изображения выводятся из короткой или полной новости {poster} - При условии, если изображение выводится из доп. поля {title} - Выводит название в зависимости от вывода, настроенного в настройках {type} - Выводит тип релиза, полнометражку или сериал {number} - Выводит номер серии, если релиз полнометражка - не выводится {translate_name} - Выводит название поля: "Перевод" {dub_name} - Выводит название поля: "Озвучка" {montage_name} - Выводит название поля: "Монтаж" {post_name} - Выводит название поля: "Проверка" {translate} - Выводит значение для поля: "Перевод" {dub} - Выводит значение для поля: "Озвучка" {montage} - Выводит значение для поля: "Монтаж" {post} - Выводит значение для поля: "Проверка" {suffix} - Выводит знак процента {progress} - Выводит прогрессбар, статус в процентах. Если отключены показы в процентах, то и прогрессбара не будет {link} - Ссылка на новость {id} - ID статуса [status][/status] - Скрывает текст, если отключён показ нуллевых значений (пока в стадии обдумки) [link][/link] - Заключённый текст превратится в ссылку на новость
  9. ReleaseStatus 1.0 - Установка

    ReleaseStatus - дай знать о статусе релиза другим! Ссылка на гитхаб
  10. Постер в быстром поиске через доп. поле и короткую новость Предлагаю 2 варианта реализации сего хака: через дополнительное поле и из короткой новости. Начнём с доп. поля. Открываем файл engine/ajax/search.php ищем $db->query("SELECT id, short_story, title, date, далее добавляем xfields, у нас получается $db->query("SELECT id, short_story, title, date, xfields, alt_name, category ищем $description = preg_replace( "'\[attachment=(.*?)\]'si", "", $description ); ниже ставим $xf = xfieldsdataload( $row['xfields'] ); ищем $buffer .= "<a href=\"" . $full_link . "\"> добавляем после <img src=\"".$xf['poster']."\" style=\"float:left; max-width:50px; margin-right:5px;\"> у нас получится $buffer .= "<a href=\"" . $full_link . "\"><img src=\"".$xf['poster']."\" style=\"float:left; max-width:50px; margin-right:5px;\"> $xf['poster'] - тут poster меняем на своё значение поля для вывода из краткой новости Открываем файл engine/ajax/search.php ищем $row['category'] = intval( $row['category'] ); ниже ставим $short_story = stripslashes($row['short_story']); $images = array(); preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $short_story, $media); $data = preg_replace('/(img|src)("|\'|="|=\')(.*)/i', "$3", $media[0]); foreach($data as $url) { $info = pathinfo($url); if (isset($info['extension'])) { $info['extension'] = strtolower($info['extension']); if (($info['extension'] == 'jpg') || ($info['extension'] == 'jpeg') || ($info['extension'] == 'gif') || ($info['extension'] == 'png')) array_push($images, $url); } } if ( count($images) ) { $image = $url; } else { $image = $config['http_home_url'] . "templates/" . $config['skin'] . "/dleimages/no_image.jpg"; } $config['http_home_url'] . templates/" . $config['skin'] . "/dleimages/no_image.jpg тут, либо ты кидаем в папку dleimages своего шаблона заглушку no_image.jpg, либо заменяем на свою ищем $buffer .= "<a href=\"" . $full_link . "\"> меняем на $buffer .= "<a href=\"" . $full_link . "\"><img src=\"" . $image . "\" alt=\"" . stripslashes( $title ) . "\" title=\"" . stripslashes( $title ) . "\" style=\"float: left;width: 70px;height: auto;margin: 0px 3px 3px 0px;\"> Радуемся ))) Метод не новый, будет работать на версиях 9.х -11.х
  11. Поиск и быстрый поиск по заголовку Открываем engine/ajax/search.php Ищем: $db->query("SELECT id, short_story, title, date, alt_name, category FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1".$this_date." AND (short_story LIKE '%{$query}%' OR full_story LIKE '%{$query}%' OR xfields LIKE '%{$query}%' OR title LIKE '%{$query}%') ORDER by date DESC LIMIT 5"); меняем на: //$db->query("SELECT id, short_story, title, date, alt_name, category FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1".$this_date." AND (short_story LIKE '%{$query}%' OR full_story LIKE '%{$query}%' OR xfields LIKE '%{$query}%' OR title LIKE '%{$query}%') ORDER by date DESC LIMIT 5"); $db->query("SELECT id, short_story, title, date, alt_name, category FROM " . PREFIX . "_post WHERE " . PREFIX . "_post.approve=1".$this_date." AND (title LIKE '%{$query}%') ORDER by date DESC LIMIT 5"); тем самым, мы говорим быстрому поиску, что нужно искать в заголовках. Итак, что я сделал? я из поискового запроса удалил short_story LIKE '%{$query}%' OR full_story LIKE '%{$query}%' OR xfields LIKE '%{$query}%' OR он отвечал за поиск по краткой и полной новости и по доп. полям. Теперь оптимизируем простой поиск. Открываем engine/modules/search.php ищем: if( isset( $_REQUEST['titleonly'] ) ) $titleonly = intval( $_REQUEST['titleonly'] ); else $titleonly = 0; и меняем на: if( isset( $_REQUEST['titleonly'] ) ) $titleonly = intval( $_REQUEST['titleonly'] ); else $titleonly = 3; тоесть, теперь, когда мы в поисковой строке нажимаем на "искать", то искать будет по заголовку вместо 3 можно прописать 1 или 2 Вот за что отвечают цифры: 0 => Искать только в статьях (учитываются и описания, и заголовки, и доп. поля) 1 => Искать только в комментариях 2 => Искать только в статических страницах 3 => Искать только в заголовках статей Удачи!
  12. Выполняем запросы INSERT INTO `dle_admin_sections` (`name`, `title`, `descr`, `icon`, `allow_groups`) VALUES ('tags', 'Добавление тегов', 'Пользовательские предложения тегов', 'tags.png', '1'); CREATE TABLE IF NOT EXISTS `dle_post_tags` ( `id` int(11) NOT NULL AUTO_INCREMENT, `news_id` text NOT NULL, `username` text NOT NULL, `tags` text NOT NULL, PRIMARY KEY (`id`), FULLTEXT KEY `news_id` (`news_id`), FULLTEXT KEY `username` (`username`), FULLTEXT KEY `tags` (`tags`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; dle - меняем на свой префикс Открываем .htaccess После RewriteEngine On Ставим #Пользовательские теги RewriteRule ^tags.php index.php?do=tag [L,QSA] Открываем engine/engine.php после switch ( $do ) { ставим case "tag" : include ENGINE_DIR . '/modules/tags.php'; break; Открываем engine/modules/main.php Ищем $tpl->set ( '{speedbar}', $tpl->result['speedbar'] ); ниже /*Добавление тегов*/ include ENGINE_DIR . '/data/tagsadd.php'; if($tagsconf['onof'] == 1) { $tagsbutton = "<a href=\"#\" role=\"button\" id=\"TagsAdd\">{$tagsconf['button']}</a><div style=\"display: none;\"><div class=\"box-modal\" id=\"AddTags\"><div class=\"box-modal_close arcticmodal-close\">закрыть</div><form action=\"/tags.php\" method=\"post\"><input class=\"form-control\" type=\"text\" placeholder=\"теги\" name=\"utags\" id=\"utags\"><input type=\"hidden\" name=\"news\" value=\"".$id."\"><input type=\"hidden\" name=\"username\" value=\"".$user."\"><input type=\"hidden\" name=\"userid\" value=\"".$userid."\"><input type=\"hidden\" name=\"link\" value=\"".$link."\"><input type=\"hidden\" name=\"title\" value=\"".$name."\"><button class=\"btn btn-block btn-success\" onclick=\"submit();\" id=\"add_tags\">Отправить</button></form></div></div>"; if($tagsconf['guest'] == 1) { $tpl->set( '{tagsbutton}', $tagsbutton ); } else { if($is_logged) { $tpl->set( '{tagsbutton}', $tagsbutton); } else { $tpl->set( '{tagsbutton}', ""); } } } else { $tpl->set( '{tagsbutton}', ""); } /*Добавление тегов*/ Открываем engine/modules/show.full.php перед $tpl->compile( 'content' ); if( $user_group[$member_id['user_group']]['allow_hide'] ) $tpl->result['content'] = str_ireplace( "[hide]", "", str_ireplace( "[/hide]", "", $tpl->result['content']) ); ставим /*Добавление тегов*/ include ENGINE_DIR . '/data/tagsadd.php'; if($tagsconf['onof'] == 1) { $id = $row['id']; $name = $row['title']; $link = $full_link; if($tagsconf['guest'] == 1 && empty($member_id['name'])) { $user = "Гость"; $userid = 0; } else { $user = $member_id['name']; $userid = $member_id['user_id']; } $tags = $_POST['utags']; $tagsfull = "<a href=\"#\" role=\"button\" id=\"TagsAdd\">{$tagsconf['button']}</a><div style=\"display: none;\"><div class=\"box-modal\" id=\"AddTags\"><div class=\"box-modal_close arcticmodal-close\">закрыть</div><form action=\"/tags.php\" method=\"post\"><input class=\"form-control\" type=\"text\" placeholder=\"теги\" name=\"utags\" id=\"utags\"><input type=\"hidden\" name=\"news\" value=\"{$id}\"><input type=\"hidden\" name=\"username\" value=\"{$user}\"><input type=\"hidden\" name=\"userid\" value=\"{$userid}\"><input type=\"hidden\" name=\"link\" value=\"{$link}\"><input type=\"hidden\" name=\"title\" value=\"{$name}\"><br><br><button class=\"btn btn-block btn-success\" onclick=\"submit();\" id=\"add_tags\">Отправить</button></form></div></div>"; $tagsbutton = "<a href=\"#\" role=\"button\" id=\"TagsAdd\">{$tagsconf['button']}</a>"; $tagsbody = "<div style=\"display: none;\"><div class=\"box-modal\" id=\"AddTags\"><div class=\"box-modal_close arcticmodal-close\">закрыть</div><form action=\"/tags.php\" method=\"post\"><input class=\"form-control\" type=\"text\" placeholder=\"теги\" name=\"utags\" id=\"utags\"><input type=\"hidden\" name=\"news\" value=\"{$id}\"><input type=\"hidden\" name=\"username\" value=\"{$user}\"><input type=\"hidden\" name=\"userid\" value=\"{$userid}\"><input type=\"hidden\" name=\"link\" value=\"{$link}\"><input type=\"hidden\" name=\"title\" value=\"{$name}\"><br><br><button class=\"btn btn-block btn-success\" onclick=\"submit();\" id=\"add_tags\">Отправить</button></form></div></div>"; if($tagsconf['guest'] == 1) { $tpl->set( '{tagsadd}', $tagsfull ); $tpl->set( '{tagsbutton}', $tagsbutton); $tpl->set( '{tagsbody}', $tagsbody); $tpl->set_block( "'\\[usertags\\](.*?)\\[/usertags\\]'si", "\\1" ); $tpl->set_block( "'\\[not-usertags\\](.*?)\\[/not-usertags\\]'si", "" ); } else { if($is_logged) { $tpl->set( '{tagsadd}', $tagsfull ); $tpl->set( '{tagsbutton}', $tagsbutton); $tpl->set( '{tagsbody}', $tagsbody); $tpl->set_block( "'\\[usertags\\](.*?)\\[/usertags\\]'si", "\\1" ); $tpl->set_block( "'\\[not-usertags\\](.*?)\\[/not-usertags\\]'si", "" ); } else { $tpl->set( '{tagsadd}', ""); $tpl->set( '{tagsbutton}', ""); $tpl->set( '{tagsbody}', ""); $tpl->set_block( "'\\[usertags\\](.*?)\\[/usertags\\]'si", "" ); $tpl->set_block( "'\\[not-usertags\\](.*?)\\[/not-usertags\\]'si", "\\1" ); } } } else { $tpl->set( '{tagsadd}', ""); $tpl->set( '{tagsbutton}', ""); $tpl->set( '{tagsbody}', ""); $tpl->set_block( "'\\[usertags\\](.*?)\\[/usertags\\]'si", "" ); $tpl->set_block( "'\\[not-usertags\\](.*?)\\[/not-usertags\\]'si", "\\1" ); } /*Добавление тегов*/ Открываем templates/THEME/fullstory.tpl В самое начало <script src="{THEME}/tagsadd/jquery.arcticmodal-0.3.min.js"></script> <script src="{THEME}/tagsadd/bootstrap-tokenfield.js"></script> <link rel="stylesheet" href="{THEME}/tagsadd/css/jquery.arcticmodal-0.3.css"> <link rel="stylesheet" href="{THEME}/tagsadd/css/bootstrap-tokenfield.css"> <link rel="stylesheet" href="{THEME}/tagsadd/css/themes/dark.css"> <script type="text/javascript"> $(document).ready(function() { $(document).on('click', '#TagsAdd', function(){ $('#AddTags').arcticmodal({ beforeClose: function(data, el) { alert('Ваши предложенные теги были отпавлены на рассмотрение! Администрация проверит и добавит.'); } }); }); $(document).on('click', '#add_tags', function(){ $('#AddTags').arcticmodal('close'); }); $('#utags').tokenfield(); }); </script> dark.css - меняем на свой или альтернативный из папки
  13. Пользовательские теги (1.2.1) Вопросы по установке
  14. Видеомикроразметка на DLE

    Доп. поля Для начала, я советую просмотреть саму структуру построения: Movie - schema.org. Для себя я выбрал следующие поля: contributor или countryOfOrigin (лучше первое) - Страна copyrightyear - Год genre - Жанр (если у вас категории являются жанром, то пропускаем) director - Режиссёр creator - Сценарист musicBy - Композитор editor - Монтаж producer - Продюсер provider - Оператор translator - Перевод / озвучание actor - Актёры Внимание! Нужно (!) создать следующие поля со следующими названиями (одно поле с функцией "Использовать при желании (можно оставить поле пуcтым)" и "Использовать значения полей как перекрестные гиперссылки ")! Эти поля должны называться ИМЕННО ТАК! Никак иначе!!! Не обязательно использовать все поля, но если будете - то только такие! Однако, нам понадобятся другие поля. Поля для: ID с кинопоиска, постера, русского названия, оригинального названия, ссылки(!) для трейлера, ссылки для видео (покажу как реализовать вывод плеера на отдельной странице), продолжительности самого фильма (в формате ЧЧ:ММ:СС). Поле короткой и полной новости будет использовано для описания. На этой стадии вы должны определиться что вы хотите видеть у себя на сайте. если у вас уже есть поля и вы захотите заменить на вышеупомянутые, то вам следует сначала сделать так. идём в phpMyAdmin в таб SQL выполняем запрос: UPDATE `dle_post` SET `xfields`=REPLACE(`xfields`,'СтароеНазвание','НовоеНазвание'); открываем /engine/data/xfields.txt и меням поля идём в админку в управление доп. полями выбираем любое на редактирование и пересохраняем его чистим кеш Полная новость (ваш-сайт.ру/templates/шаблон/fullstory.tpl) Начнём с простого. Создаём поля. Далее идём к шаблонам. Открываем 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" - этот тег нужен для разметки, который указывает на страницу записи. Можно и так сделать, в самом начале документа после <div itemscope itemtype="http://schema.org/Movie"> добавляем <link itemprop="url" href="{full-link}"> Однако, при этом теряется описание ссылки, посему выбирать вам. Далее. Прописываем доп. поля. Пример: Русское название <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/[xfvalue_kpid]/" target="_blank" itemprop="sameAs">Открыть на кинопоиске</a></noindex> Постер <img itemprop="image" src="{image-1}" title="{title}"> Описание <div itemprop="description">{full-story}</div> Поля меняем на свои Дальше (опционально), если вы используете вывод кол-во комментариев, то оборачиваем {comments-num} в <span itemprop="commentCount">{comments-num}</span> чтобы обработать рейтинг (рейтинг в звёзды!), делаем следующее <div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"> <link itemprop="itemReviewed" content="{full-link}"> [rating]<div style="float:left;width:100px;">Рейтинг:</div>{rating}<div style="float:left;width:120px;">(голосов: {vote-num})</div>[/rating] </div> сделаем сразу разметку для видеофайла (рекомендуется трейлер). После <div itemscope itemtype="http://schema.org/Movie"> добавляем <div itemprop="video" itemscope itemtype="http://schema.org/VideoObject"> <link itemprop="thumbnail" href="{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="http://kinospace.org/play/{kp_id}/" /> <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} - это постер http://kinospace.org/play/{kp_id}/ - ссылка на видео файл или трейлер меняем на своё. опционально Комментарии (ваш-сайт.ру/templates/шаблон/comments.tpl) Этот шаг опционален, не столь важен, но всё же рекомендую. В начало <div itemprop="comment" itemscope itemtype="http://schema.org/Comment"> <meta itemprop="dateCreated" content="{date=Y-m-d}"> <meta itemprop="author" content="{login}"> <span itemprop="contentRating" style="display:none;">{rating}</span> в конец </div> строчка <span itemprop="contentRating" style="display:none;">{rating}</span> для тех, кто использует рейтинг в комментариях. Рейтинг должен быть цифровой! К аватарке добавляем значение image, должно выглядеть где-то так: <img itemprop="image" src="{foto}" width="100" height="100" class="img-responsive avatar" alt="Аватарка {login}'a"> сам комментарий так-же оборачиваем: <span itemprop="text">{comment}</span> если используете рейтинг "нравится" и "не нравится", то оберните его следующим образом (тестировалось на дле 11) <div class="rating" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"> <link itemprop="itemReviewed" content="{news-link}#com-{comment-id}"> <div class="mwrating"> <div style="display:none;"> <span itemprop="ratingCount">{rating}</span> <span itemprop="reviewCount">{rating}</span> [negative-comment]<meta itemprop="bestRating" content="0">[/negative-comment] [positive-comment]<span itemprop="bestRating">{rating}</span>[/positive-comment] [neutral-comment]<span itemprop="bestRating">{rating}</span>[/neutral-comment] [negative-comment]<span itemprop="worstRating">{rating}</span>[/negative-comment] [positive-comment]<span itemprop="worstRating">0</span>[/positive-comment] [neutral-comment]<span itemprop="worstRating">0</span>[/neutral-comment] </div> <div class="wmminus">[rating-minus]-[/rating-minus]</div> <div class="mwrat" itemprop="ratingValue">{rating}</div> <div class="wmplus">[rating-plus]+[/rating-plus]</div> </div> </div> Версию печати для видео (ваш-сайт.ру/templates/шаблоны/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="сайт.ру/engine/classes/js/jquery.js"></script> <script type="text/javascript" src="сайт.ру/engine/classes/js/jqueryui.js"></script> <script type="text/javascript" src="сайт.ру/engine/classes/js/dle_js.js"></script> </head> <body bgcolor="#ffffff" text="#000000"> ваш плеер </body> </html> всё! Главная страница (ваш-сайт.ру/templates/шаблон/main.tpl) К тегу бади добавляем начальную структуру, должно выглядеть так <body itemscope itemtype="http://schema.org/WebPage"> Хлебные крошки (ваш-сайт.ру/templates/шаблон/speedbar.tpl) Заменяем всё содержимое на {speedbar} Хлебные крошки (ваш-сайт.ру/templates/шаблон/стили/engine.css) в самый низ добавляем (если у вас шаблон на основе бутстрапа 3, то пропускаем шаг) ol[typeof=BreadcrumbList] { display:inline-block; list-style:none!important; } ol[typeof=BreadcrumbList] > li { display:inline-block; } /\00a0 можно заменить на \00BB это заменит / на » Ядро (ваш-сайт.ру/engine/engine.php) ищем if ($config['speedbar'] AND !$view_template ) { $s_navigation = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"{$config['http_home_url']}\" itemprop=\"url\"><span itemprop=\"title\">" . $config['short_title'] . "</span></a></span>"; if( $config['start_site'] == 3 AND $_SERVER['QUERY_STRING'] == "" AND !$_POST['do']) $titl_e = ""; if (intval($category_id)) $s_navigation .= " {$config['speedbar_separator']} " . get_breadcrumbcategories ( intval($category_id), $config['speedbar_separator'] ); elseif ($do == 'tags') { if ($config['allow_alt_url']) $s_navigation .= " {$config['speedbar_separator']} <span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . "tags/\" itemprop=\"url\"><span itemprop=\"title\">" . $lang['tag_cloud'] . "</span></a></span> {$config['speedbar_separator']} " . $tag; else $s_navigation .= " {$config['speedbar_separator']} <span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"?do=tags\" itemprop=\"url\"><span itemprop=\"title\">" . $lang['tag_cloud'] . "</span></a></span> {$config['speedbar_separator']} " . $tag; } elseif ($nam_e) $s_navigation .= " {$config['speedbar_separator']} " . $nam_e; if ($titl_e) $s_navigation .= " {$config['speedbar_separator']} " . $titl_e; else { if ( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ){ $page_extra = " {$config['speedbar_separator']} ".$lang['news_site']." ".intval($_GET['cstart']); } else $page_extra = ''; $s_navigation .= $page_extra; } $tpl->load_template ( 'speedbar.tpl' ); $tpl->set ( '{speedbar}', '<span id="dle-speedbar">' . stripslashes ( $s_navigation ) . '</span>' ); $tpl->compile ( 'speedbar' ); $tpl->clear (); } Меняем на: if ($config['speedbar'] AND !$view_template ) { $s_navigation = "<li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"{$config['http_home_url']}\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">" . $config['short_title'] . "</span></a><meta property=\"position\" content=\"1\"></li>"; if( $config['start_site'] == 3 AND $_SERVER['QUERY_STRING'] == "" AND !$_POST['do']) $titl_e = ""; if (intval($category_id)) { $cat_breadcrumb = explode("|", get_breadcrumbcategories ( intval($category_id), $config['speedbar_separator'] )); $s_navigation .= " {$config['speedbar_separator']} " . $cat_breadcrumb[0]; } elseif ($do == 'tags') { if ($config['allow_alt_url']) $s_navigation .= " {$config['speedbar_separator']} <li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"" . $config['http_home_url'] . "tags/\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">" . $lang['tag_cloud'] . "</span></a><meta property=\"position\" content=\"2\"></li> {$config['speedbar_separator']} <li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">" . $tag . "</span><meta property=\"position\" content=\"3\"></li>"; else $s_navigation .= " {$config['speedbar_separator']} <li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"?do=tags\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">" . $lang['tag_cloud'] . "</span></a><meta property=\"position\" content=\"2\"></li> {$config['speedbar_separator']} <li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">" . $tag . "</span><meta property=\"position\" content=\"3\"></li>"; } elseif ($nam_e) { if($dle_module == "showfull") { $cat_breadcrumb[1] = $cat_breadcrumb[1] + 1; $s_navigation .= " {$config['speedbar_separator']} " . "<li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">{$nam_e}</span><meta property=\"position\" content=\"{$cat_breadcrumb[1]}\"></li>"; } else { $s_navigation .= " {$config['speedbar_separator']} " . "<li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">{$nam_e}</span><meta property=\"position\" content=\"2\"></li>"; } } if ($titl_e) { if(isset($cat_breadcrumb[1]) && !is_null($cat_breadcrumb[1])) $cat_breadcrumb[1] = $cat_breadcrumb[1] + 1; else $cat_breadcrumb[1] = 3; $s_navigation .= " {$config['speedbar_separator']} <li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">{$titl_e}</span><meta property=\"position\" content=\"{$cat_breadcrumb[1]}\"></li>"; } else { if ( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ){ $cat_breadcrumb[1]++; $page_extra = " {$config['speedbar_separator']} <li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">".$lang['news_site']." ".intval($_GET['cstart']) . "</span><meta property=\"position\" content=\"{$cat_breadcrumb[1]}\"></li>"; } else $page_extra = ''; $s_navigation .= $page_extra; } $tpl->load_template ( 'speedbar.tpl' ); $tpl->set ( '{speedbar}', '<ol vocab="http://schema.org/" typeof="BreadcrumbList">' . stripslashes ( $s_navigation ) . '</ol>' ); $tpl->compile ( 'speedbar' ); $tpl->clear (); } Функции сайта (ваш-сайт.ру/engine/modules/functions.php) ищем function get_breadcrumbcategories($id, $separator="&raquo;") { global $cat_info, $config, $PHP_SELF; if( ! $id ) return; $parent_id = $cat_info[$id]['parentid']; if( $config['allow_alt_url'] ) $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . get_url( $id ) . "/\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$id]['name']}</span></a></span>"; else $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$id]['alt_name']}\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$id]['name']}</span></a></span>"; while ( $parent_id ) { if( $config['allow_alt_url'] ) $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"" . $config['http_home_url'] . get_url( $parent_id ) . "/\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$parent_id]['name']}</span></a></span>" . " {$separator} " . $list; else $list = "<span itemscope itemtype=\"http://data-vocabulary.org/Breadcrumb\"><a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$parent_id]['alt_name']}\" itemprop=\"url\"><span itemprop=\"title\">{$cat_info[$parent_id]['name']}</span></a></span>" . " {$separator} " . $list; $parent_id = $cat_info[$parent_id]['parentid']; if($parent_id) { if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break; } } return $list; } меняем на function get_breadcrumbcategories($id, $separator="&raquo;") { global $cat_info, $config, $PHP_SELF, $dle_module; if( ! $id ) return; $parent_id = $cat_info[$id]['parentid']; $first_id_p = $parent_id; $i = 1; while($parent_id) { $i++; $parent_id = $cat_info[$parent_id]['parentid']; if($parent_id) if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break; } $i += 1; $parent_id = $first_id_p; if($parent_id == 0) { $id_i = 2; if($dle_module == "cat") { if( $config['allow_alt_url'] ) $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">{$cat_info[$id]['name']}</span><meta property=\"position\" content=\"2\"></li>"; else $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><span itemprop=\"title\">{$cat_info[$id]['name']}</span><meta property=\"position\" content=\"2\"></li>"; } else { if( $config['allow_alt_url'] ) $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"" . $config['http_home_url'] . get_url( $id ) . "/\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">{$cat_info[$id]['name']}</span></a><meta property=\"position\" content=\"2\"></li>"; else $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$id]['alt_name']}\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">{$cat_info[$id]['name']}</span></a><meta property=\"position\" content=\"2\"></li>"; } } else { $id_i = 3; if($dle_module == "cat") { if( $config['allow_alt_url'] ) $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">{$cat_info[$id]['name']}</span><meta property=\"position\" content=\"{$i}\"></li>"; else $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><span itemprop=\"title\">{$cat_info[$id]['name']}</span><meta property=\"position\" content=\"{$i}\"></li>"; } else { if( $config['allow_alt_url'] ) $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"" . $config['http_home_url'] . get_url( $id ) . "/\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">{$cat_info[$id]['name']}</span></a><meta property=\"position\" content=\"3\"></li>"; else $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$id]['alt_name']}\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">{$cat_info[$id]['name']}</span></a><meta property=\"position\" content=\"3\"></li>"; } } while ( $parent_id ) { $i--; if($dle_module != "cat") { if( $config['allow_alt_url'] ) $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"" . $config['http_home_url'] . get_url( $parent_id ) . "/\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">{$cat_info[$parent_id]['name']}</span></a><meta property=\"position\" content=\"{$i}\"></li>" . " {$separator} " . $list; else $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><a href=\"$PHP_SELF?do=cat&amp;category={$cat_info[$parent_id]['alt_name']}\" property=\"item\" typeof=\"WebPage\"><span property=\"name\">{$cat_info[$parent_id]['name']}</span></a><meta property=\"position\" content=\"{$i}\"></li>" . " {$separator} " . $list; } else { if($id != $cat_info[$parent_id]['id']) $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><a property=\"item\" typeof=\"WebPage\" href=\"" . $config['http_home_url'] . get_url( $parent_id ) . "\"><span property=\"name\">{$cat_info[$parent_id]['name']}</span></a><meta property=\"position\" content=\"{$i}\"></li>" . " {$separator} " . $list; else $list = "<li property=\"itemListElement\" typeof=\"ListItem\"><span property=\"name\">{$cat_info[$parent_id]['name']}</span><meta property=\"position\" content=\"{$i}\"></li>" . " {$separator} " . $list; } $parent_id = $cat_info[$parent_id]['parentid']; if($parent_id) { if( $cat_info[$parent_id]['parentid'] == $cat_info[$parent_id]['id'] ) break; } } return $list . "|" . $id_i; } Это настроит вывод рейтинга. Ищем: <div id='ratig-layer-{$id}'><div class="rating"> <ul class="unit-rating"> <li class="current-rating" style="width:{$rating}%;">{$rating}</li> <li><a href="#" title="{$lang['useless']}" class="r1-unit" onclick="doRate('1', '{$id}'); return false;">1</a></li> <li><a href="#" title="{$lang['poor']}" class="r2-unit" onclick="doRate('2', '{$id}'); return false;">2</a></li> <li><a href="#" title="{$lang['fair']}" class="r3-unit" onclick="doRate('3', '{$id}'); return false;">3</a></li> <li><a href="#" title="{$lang['good']}" class="r4-unit" onclick="doRate('4', '{$id}'); return false;">4</a></li> <li><a href="#" title="{$lang['excellent']}" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li> </ul> </div></div> и меняем на <div id='ratig-layer-{$id}'><div class="rating"> <ul class="unit-rating"> <li itemprop="ratingValue" class="current-rating" style="width:{$rating}%;">{$rating}</li> <li itemprop="worstRating"><a href="#" title="{$lang['useless']}" class="r1-unit" onclick="doRate('1', '{$id}'); return false;">1</a></li> <li><a href="#" title="{$lang['poor']}" class="r2-unit" onclick="doRate('2', '{$id}'); return false;">2</a></li> <li><a href="#" title="{$lang['fair']}" class="r3-unit" onclick="doRate('3', '{$id}'); return false;">3</a></li> <li><a href="#" title="{$lang['good']}" class="r4-unit" onclick="doRate('4', '{$id}'); return false;">4</a></li> <li itemprop="bestRating"><a href="#" title="{$lang['excellent']}" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li> </ul> </div></div> Демонстрация P.S. Проверить результат можно здесь: Яндекс или Google За разметку хлебных крошек спасибо Gameer: RDFA Breadcrumb для DLE 10.2 - 11.x
  15. Видеомикроразметка на DLE

    Обсуждаем Микроразметка на тематику кино по версии Schema.org
  16. Если у вас подключены доп. поля как перекрёстные ссылки и вы не можете обойтись без них, то делаем следующее Открываем /engine/modules/show.full.php и ищем $tpl->set( '{statuss}', $xfieldsdata[$mystatus_cfg['xfield']] ); и выше или ниже ставим if($xfieldsdata['НАЗВАНИЕ_ДОП_ПОЛЯ'] != "" || !empty($xfieldsdata['НАЗВАНИЕ_ДОП_ПОЛЯ'])) { $ОПРЕДЕЛИТЕЛЬНОЕ_НАЗВАНИЕ = $xfieldsdata['НАЗВАНИЕ_ДОП_ПОЛЯ'] } else { $ОПРЕДЕЛИТЕЛЬНОЕ_НАЗВАНИЕ = ""; } $tpl->set( '{НАЗВАНИЕ}', $ОПРЕДЕЛИТЕЛЬНОЕ_НАЗВАНИЕ ); После этого в конструкцию подключения добавляем {НАЗВАНИЕ} Названия все на латинском!
  17. Установка Залить файлы из папки uploads в корень сайт Запустите файл install.php в корне вашего сайта, а затем удалите В шаблонах откройте файл fullstory.tpl и пропишите в самом низу файла {include file="engine/modules/mystatus.php?mysid={myshows}&title={title}&news_id={news-id}"} В нужное место ставим <div class="status {statuss}">{status}</div> Открываем engine/inc/addnews.php и ищем <div class="form-group"> <label class="control-label col-md-2">{$lang['addnews_cat']}</label> <div class="col-md-10"> <select data-placeholder="{$lang['addnews_cat_sel']}" name="category[]" id="category" onchange="onCategoryChange(this)" $category_multiple style="width:100%;max-width:350px;">{$categories_list}</select> </div> </div> ниже добавляем <div class="form-group"> <label class="control-label col-md-2">MyShows ID</label> <div class="col-md-10"> <input type="text" name="myshows" size="20" > </div> </div> находим $disable_index = isset( $_POST['disable_index'] ) ? intval( $_POST['disable_index'] ) : 0; ниже ставим $myshowsid = intval($_POST['myshows']); находим tags, metatitle после ставим , myshowsid находим '{$_POST['tags']}', '{$metatags['title']}' после ставим , '$myshowsid' Открываем engine/inc/editnews.php и ищем <div class="form-group"> <label class="control-label col-md-2">{$lang['edit_cat']}</label> <div class="col-md-10"> <select data-placeholder="{$lang['addnews_cat_sel']}" name="category[]" id="category" onchange="onCategoryChange(this)" {$category_multiple} style="width:350px;">{$categories_list}</select> </div> </div> ниже добавляем <div class="form-group"> <label class="control-label col-md-2">MyShows ID</label> <div class="col-md-10"> <input type="text" name="myshows" size="20" value="{$row['myshowsid']}"> </div> </div> находим $disable_index = isset( $_POST['disable_index'] ) ? intval( $_POST['disable_index'] ) : 0; ниже ставим $myshowsid = intval($_POST['myshows']); находим (дважды) metatitle='{$metatags['title']}' после ставим (дважды) , myshowsid='{$myshowsid}' Открываем файл engine/modules/show.full.php и находим if ($row['metatitle']) $metatags['header_title'] = $row['metatitle']; Ниже прописываем include ENGINE_DIR . "/data/mystatus.php"; $xfieldsdata = xfieldsdataload( $row['xfields'] ); $tpl->set("{myshows}", $row['myshowsid']); //Определяем статус и выводим его $xfieldsdata[$mystatus_cfg['xfield']] = trim( $xfieldsdata[$mystatus_cfg['xfield']] ); if($xfieldsdata[$mystatus_cfg['xfield']] == "canceledended") { $statusname = $mystatus_cfg['closed']; } elseif($xfieldsdata[$mystatus_cfg['xfield']] == "returningseries") { $statusname = $mystatus_cfg['onair']; } elseif($xfieldsdata[$mystatus_cfg['xfield']] == "tbdothebubble") { $statusname = $mystatus_cfg['tbd']; } elseif($xfieldsdata[$mystatus_cfg['xfield']] == "onhiatus") { $statusname = $mystatus_cfg['pause']; } elseif($mystatus_cfg['pilots'] && $xfieldsdata[$mystatus_cfg['xfield']] == "pilotordered") { $statusname = $mystatus_cfg['pilot']; } elseif($mystatus_cfg['news'] && $xfieldsdata[$mystatus_cfg['xfield']] == "newseries") { $statusname = $mystatus_cfg['new']; } else { $statusname = $mystatus_cfg['none']; } $tpl->set( '{statuss}', $xfieldsdata[$mystatus_cfg['xfield']] ); $tpl->set( '{status}', $statusname ); Открываем файл engine/modules/show.short.php/engine/modules/show.custom.php (если хотим, чтобы статус отображался и короткой новости или в построенной через кастом) и находим 2ой $tpl->compile( 'content' ); } if( $user_group[$member_id['user_group']]['allow_hide'] ) $tpl->result['content'] = str_ireplace( "[hide]", "", str_ireplace( "[/hide]", "", $tpl->result['content']) ); Выше прописываем include ENGINE_DIR . "/data/mystatus.php"; $xfieldsdata = xfieldsdataload( $row['xfields'] ); $tpl->set("{myshows}", $row['myshowsid']); //Определяем статус и выводим его $xfieldsdata[$mystatus_cfg['xfield']] = trim( $xfieldsdata[$mystatus_cfg['xfield']] ); if($xfieldsdata[$mystatus_cfg['xfield']] == "canceledended") { $statusname = $mystatus_cfg['closed']; } elseif($xfieldsdata[$mystatus_cfg['xfield']] == "returningseries") { $statusname = $mystatus_cfg['onair']; } elseif($xfieldsdata[$mystatus_cfg['xfield']] == "tbdothebubble") { $statusname = $mystatus_cfg['tbd']; } elseif($xfieldsdata[$mystatus_cfg['xfield']] == "onhiatus") { $statusname = $mystatus_cfg['pause']; } elseif($mystatus_cfg['pilots'] && $xfieldsdata[$mystatus_cfg['xfield']] == "pilotordered") { $statusname = $mystatus_cfg['pilot']; } elseif($mystatus_cfg['news'] && $xfieldsdata[$mystatus_cfg['xfield']] == "newseries") { $statusname = $mystatus_cfg['new']; } else { $statusname = $mystatus_cfg['none']; } $tpl->set( '{statuss}', $xfieldsdata[$mystatus_cfg['xfield']] ); $tpl->set( '{status}', $statusname ); В нужное место в shortstory.tpl или в шаблон, что подключён через кастом, ставим <div class="status {statuss}">{status}</div> Открываем файл со стилями шаблона и в самый низ прописываем это .status,.status.normal { float: right; margin-top: -35px; font-style: normal; opacity: 0.6; color: #000; transition: all 0.3s; font-weight: 700; } .status:hover { opacity: 1; cursor: pointer; animation: shake linear 0.5s; animation-iteration-count: 1; transform-origin: 50% 0%; -webkit-animation: shake linear 0.5s; -webkit-animation-iteration-count: 1; -webkit-transform-origin: 50% 0%; -moz-animation: shake linear 0.5s; -moz-animation-iteration-count: 1; -moz-transform-origin: 50% 0%; -o-animation: shake linear 0.5s; -o-animation-iteration-count: 1; -o-transform-origin: 50% 0%; -ms-animation: shake linear 0.5s; -ms-animation-iteration-count: 1; -ms-transform-origin: 50% 0%; } .status.returningseries { color: #ebffdd; text-shadow: 0 0 1px black,0 0 2px #5cad21,0 0 3px #549e1e,0 0 4px #3d8806; } .status.canceledended { color: #ffd4d4; text-shadow: 0 0 1px black,0 0 2px #ff0000,0 0 3px #bf2727,0 0 4px #792323; } .status.onhiatus { color: #ffecbf; text-shadow: 0 0 1px black,0 0 2px #ffb300,0 0 3px #cc971a,0 0 4px #daa321; } .status.tbdonthebubble { color: #e8faff; text-shadow: 0 0 1px black,0 0 2px #1bc1ff,0 0 3px #4ae7ea,0 0 4px #277890; } .status.pilotordered { color: #e0ebff; text-shadow: 0 0 1px black,0 0 2px #0058ff,0 0 3px #275dc5,0 0 4px #93aee0; } .status.newseries { color: #fae2ff; text-shadow: 0 0 1px black,0 0 2px #d600ff,0 0 3px #89319a,0 0 4px #631a71; } @keyframes shake{ 0% { transform: rotate(0deg) ; } 20% { transform: rotate(15deg) ; } 40% { transform: rotate(-10deg) ; } 60% { transform: rotate(5deg) ; } 80% { transform: rotate(-5deg) ; } 100% { transform: rotate(0deg) ; } } @-moz-keyframes shake{ 0% { -moz-transform: rotate(0deg) ; } 20% { -moz-transform: rotate(15deg) ; } 40% { -moz-transform: rotate(-10deg) ; } 60% { -moz-transform: rotate(5deg) ; } 80% { -moz-transform: rotate(-5deg) ; } 100% { -moz-transform: rotate(0deg) ; } } @-webkit-keyframes shake { 0% { -webkit-transform: rotate(0deg) ; } 20% { -webkit-transform: rotate(15deg) ; } 40% { -webkit-transform: rotate(-10deg) ; } 60% { -webkit-transform: rotate(5deg) ; } 80% { -webkit-transform: rotate(-5deg) ; } 100% { -webkit-transform: rotate(0deg) ; } } @-o-keyframes shake { 0% { -o-transform: rotate(0deg) ; } 20% { -o-transform: rotate(15deg) ; } 40% { -o-transform: rotate(-10deg) ; } 60% { -o-transform: rotate(5deg) ; } 80% { -o-transform: rotate(-5deg) ; } 100% { -o-transform: rotate(0deg) ; } } @-ms-keyframes shake { 0% { -ms-transform: rotate(0deg) ; } 20% { -ms-transform: rotate(15deg) ; } 40% { -ms-transform: rotate(-10deg) ; } 60% { -ms-transform: rotate(5deg) ; } 80% { -ms-transform: rotate(-5deg) ; } 100% { -ms-transform: rotate(0deg) ; } } @-o-keyframes animationFrames { 0% { -o-transform: rotate(0deg) ; } 20% { -o-transform: rotate(15deg) ; } 40% { -o-transform: rotate(-10deg) ; } 60% { -o-transform: rotate(5deg) ; } 80% { -o-transform: rotate(-5deg) ; } 100% { -o-transform: rotate(0deg) ; } } @-ms-keyframes animationFrames { 0% { -ms-transform: rotate(0deg) ; } 20% { -ms-transform: rotate(15deg) ; } 40% { -ms-transform: rotate(-10deg) ; } 60% { -ms-transform: rotate(5deg) ; } 80% { -ms-transform: rotate(-5deg) ; } 100% { -ms-transform: rotate(0deg) ; } } Создаём доп. полеНазвание поля, Описание поля и Категория на своё усмотрениеТип поля: СписокЗначение по умолчанию:Для DLE 11 и выше можно сделать так returningseries|Снимается newseries|Новинка pilotordered|Пилотная серия canceledended|Закрыт onhiatus|Приостановлен tbdonthebubble|Под вопросом Для версий ниже поля должны выглядеть так returningseries newseries pilotordered canceledended onhiatus tbdonthebubble Пример подключения: {include file="engine/modules/mystatus.php?mysid={myshows}&title={title}&news_id={news-id}"} mysid - это поле нужно для выяснения ID с MyShows title - к этому тегу подключается любая комбинация названия. Желательно иметь такую комбинацию: Русское название English Name (ГОД) news_id - это определяющее самой новости Внимание! Не будет работать, если подключать доп. поля в режиме перелинковки. Для этого нужно создавать и/ли определять доп. поля по новой
  18. Установка

    Обсуждаем и предлагаем идеи для MyStatus - Статус сериалов v1.02
  19. Для чего это вообще нужно? Для вебмастеров: Если вы создаёте сайт с кино и к фильму добавляете ОЧЕНЬ много информации, но вам негде вывести её, то это поможет вам! Так вы сможете организовать вывод по отдельным страницам, при этом можно скрыть спарсенную информацию без проблем от поисковиков. А так-же, можно использовать эти страницы для доп. заработка. Для пользователей: Опять же, ситуация,что и сверху, если на странице ОЧЕНЬ много информации, что обычный пользователь не поймёт что с ней делать или она в переизбытке, что до фильма не дойдёт и ходу. Если вы до сих пор не поняли о чём, то я об этом: Открываем engine/engine.php ищем: switch ( $do ) { и ниже ставим case "screens" : include ENGINE_DIR . '/modules/extrap/screens.php'; break; Теперь поясню: case "screens" - вместо screens вписываем любое своё название, я применил такое для кадров и скриншотов, т.е. дальнейший адрес к скриншотам будет содержать название screens. /extrap/screens.php - это указанный путь до шаблонизатора самой отдельной страницы. Я рекомендую создать отдельную папку для таких страниц, как у меня extrap, но можете просто и в папку engine/modules кинуть. Главное не забудьте поменять путь в коде для вставки выше Ищем далее: elseif ($do == 'static') $titl_e = $static_descr; Ниже ставим: elseif ($do == 'screens') $nam_e = "Скриншоты к ". $title; Как вы поняли, тут мы настраиваем заголовок страницы. Указываем на своё усмотрение. Теперь заходим в engine/modules и создаём файл screens.php. Поскольку я все страницы поместил в отдельную папку, то я создал сначала её, а в ней и сам файл создал. В этот файл прописываем следующий код: <?php if( !defined( 'DATALIFEENGINE' )) return; $id_news = intval($_GET['id']); //преемник нашего id новости $row = $db->query("SELECT * FROM ".PREFIX."_post WHERE id='$id_news'"); while($list = $db->get_row( $row )) { $title = $list['title']; $xf = xfieldsdataload($list['xfields']); if(!empty($xf['screens'])) $screens = $xf['screens']; else $screens = "Скриншотов нет, но вы держитесь там!"; if( $config['allow_alt_url'] ) { $full_link = $config['http_home_url'] . $id_news . "-".$list['alt_name'].".html"; } else { $full_link = $config['http_home_url'] . "index.php?newsid=" . $id_news; } } $tpl->set( '{news-id}', $id_news); $tpl->set( '{title}', $title); $tpl->set( '{screens}', $screens); $tpl->set( '{full-link}', $full_link ); $tpl->load_template( 'extrap/screens.tpl' ); //Ваш шаблон в папке с темой. $tpl->compile( 'content' ); $tpl->clear(); ?> это примерный код. Давайте пройдёмся по пунктам: $title = $list['title']; Подобным подключением мы выводим напрямую информацию из ячейки таблицы с фильмом. К примеру сам заголовок. А так-же мы присваиваем параметр определения, типа $title. А уже к нему само значение из базы, типа $list['title']. $list - отвечает за вывод информации из таблицы, title название ячейки с информацией такой трюк проделываем с каждой ячейкой, которая нам нужна. $xf = xfieldsdataload($list['xfields']); $kpid = $xf['kinopoisk_id']; Это примерные параметры для вывода информации из доп. полей. $xf['kinopoisk_id'] - вместо kinopoisk_id прописываем название поля, которое вам нужно. Вот так мы будем выводить скриншоты, к примеру. if(!empty($xf['screens'])) $screens = $xf['screens']; else $screens = "Скриншотов нет, но вы держитесь там!"; этим кодом мы проверяем, если доп. поле со скриншотами не пустое, то выводим отформатированные кадры, если нет, то нам покажут такую справку: Меняем на своё. Идём далее, код: $tpl->set( '{news-id}', $id_news); Этим кодом мы определяем теги, которые будут выводится в шаблоне. Думаю тут понятно что к чему. Тег и его определяющее значение. Дальше: $tpl->load_template( 'extrap/screens.tpl' ); Тут определяем сам шаблон. Нужно его создать, об этом дальше. С шаблонизатором покончили, теперь переходим в папку с вашим шаблоном и создаём файл шаблона. Я писал выше, что для отдельных страниц создал папку и туда внутрь кидаю все файлы. И такой код получается у нас: <div class="full-wrap"> <article class="extrap-item movie-full"> <fieldset class="screenshots"> <legend>Скриншоты и кадры к фильму</legend> {screens} </fieldset> </article> </div> Нужны ли тут объяснения? Думаю, что нет. Открываем .htaccess в корне сайта и после RewriteEngine On добавляем RewriteRule ^screens/([0-9]+)(/?)$ index.php?do=screens&id=$1 [L] Тем самым мы получаем ссылку на страницу со скриншотами и можем в теги, типа aviable добавлять значение screens На этом всё. Для каждой страницы повторяем все пункты с самого начала. ====== Небольшой бонус для тех, кто использует шаблон FILMAX. В файл шаблона main.tpl после [aviable=main] <div class="carou-wr"> <div class="carou center"> <div id="owl-carou"> {custom template="slider" aviable="global" order="rating" limit="15" cache="yes"} </div> </div> </div> [/aviable] (это примерный код) ставим [aviable=showfull|screens|play|people|download] <div class="top-menu"> <div class="container"> <ul> <li class="active[aviable=play] open[/aviable]"><a href="/play/{news-id}/">Смотреть онлайн</a></li> <li class="active[aviable=showfull] open[/aviable]"><a href="/index.php?newsid={news-id}" rel="nofollow">Описание</a></li> <li class="active[aviable=people] open[/aviable]"><a href="/people/{news-id}/">Съёмочная группа</a></li> <li class="active[aviable=screens] open[/aviable]"><a href="/screens/{news-id}/">Кадры</a></li> </ul> </div> </div> [/aviable] в стили добавляем .top-menu { width: 100%; height: 40px; display: block; background: #d2d5da; } .top-menu .container { padding: 0; background-color: transparent; } .top-menu ul { width: 100%; margin: 0 auto; display: table; list-style: none; position: relative; } .top-menu ul li { line-height: 40px; text-align: center; display: table-cell; vertical-align: middle; } .top-menu ul li.active a { width: 100%; color: #535865; } .top-menu ul li.active:hover a { color: #292c33; cursor: pointer; } .top-menu ul li.open { background: white; } .top-menu ul li.open a { color: #292c33; } .top-menu ul li a,.top-menu ul li span { outline: none; cursor: default; font-size: 12px; font-weight: bold; display: inline-block; text-transform: uppercase; color: rgba(83,88,101,0.3); } .top-menu ul li a .count,.top-menu ul li span .count { -webkit-border-radius: 2px; -moz-border-radius: 2px; -o-border-radius: 2px; border-radius: 2px; top: -1px; color: #FFF; height: 14px; padding: 0 3px; font-size: 11px; margin-left: 5px; font-weight: 400; line-height: 15px; text-align: center; position: relative; display: inline-block; vertical-align: middle; background-color: #8F95A3; } .top-menu.social li:last-child { width: 220px; } Открываем engine/modules/main.php и ищем: if ( $dle_module == "showfull" AND $news_found ) { и меняем на if ($dle_module == "screens" || $dle_module == "play" || $dle_module == "people") { if (isset ( $_GET['id'] )) $newsid = intval ( $_GET['id'] ); else $newsid = 0; $tpl->set( '{news-id}', $newsid ); } if ( $dle_module == "showfull" AND $news_found ) { if (isset ( $_GET['newsid'] )) $newsid = intval ( $_GET['newsid'] ); else $newsid = 0; Принцип, думаю, понятен В шаблоны можно подключить спокойно скрипты, которые подключаются через инклуд или апи. к примеру: <div class="full-wrap"> <article class="movie-item movie-full"> <div id="apivideoplayer"></div> <script type="text/javascript" src="http://kinospace.org/player/api.php?w=1264&h=650&kpid={kpid}&abuse={abuse}&trailers=yes&style=2&title={title}&poster={poster}"></script> </article> </div>
  20. Обсуждаем и задаём вопросы по Отдельные страницы как на кинопоиске
  21. Открываем engine/inc/addnews.php и ищем </script>"; $categories_list = CategoryNewsSelection( 0, 0 ); и ваше ставим $(document).ready(function() { $('#short_story').keyup(function(){ var lentxt = $('#short_story').val().length; var lentxtos = $('#short_story').val().replace(/\s+/g,'').length; var total_words = $('#short_story').val().split(/[\s\.\?]+/).length; if(lentxt <= 499) { var color = '#cc0000'; } if(lentxt >= 500) { var color = '#09ad00'; } if(lentxt >= 32001) { var color = '#cc0000'; } $('#txtcount').html('Длина текста - '+lentxt+' символов с пробелами и '+lentxtos+' без').animate({color: ''+color+''},1000); $('#wordscount').html('Длина текста - '+total_words+' слов'); }); }); Открываем engine/inc/editnews.php и ищем </script>"; $categories_list = CategoryNewsSelection( $cat_list, 0 ); выше добавляем $(document).ready(function() { $('#short_story').keyup(function(){ var lentxt = $('#short_story').val().length; var lentxtos = $('#short_story').val().replace(/\s+/g,'').length; var total_words = $('#short_story').val().split(/[\s\.\?]+/).length; if(lentxt <= 499) { var color = '#cc0000'; } if(lentxt >= 500) { var color = '#09ad00'; } if(lentxt >= 32001) { var color = '#cc0000'; } $('#txtcount').html('Длина текста - '+lentxt+' символов с пробелами и '+lentxtos+' без').animate({color: ''+color+''},1000); $('#wordscount').html('Длина текста - '+total_words+' слов'); }); }); В файлах engine/inc/addnews.php и engine/inc/editnews.php ищем </div> </div> <div class="form-group editor-group"> <label class="control-label col-lg-2">{$lang['addnews_full']}</label> <div class="col-lg-10"> и выше ставим <br><var id="txtcount"></var><br> <var id="wordscount"></var> Всё. Теперь, когда в поле краткого поля менее 500 символов - текст будет красный, если 500 или более - зелёным. Однако, если текстовое поле наберёт более 32000 символов - опять покраснеет. Цифры появятся после проявления активности в самом поле
  22. Обсуждаем установку хака Количество символов краткой новости
  1. Загрузить ещё активность
×