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

    • Maxim

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

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

Maxim

Главный
  • Публикаций

    46
  • Зарегистрирован

  • Посещение

  • Победитель дней

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

    Цена по курсу валют Здесь задаём все вопросы по поводу модуля, ошибки и пожелания прошу сюда
  3. Adf.ly - интеграция в систему DLE В этой теме только предложения и пожелания к дальнейшему развитию. Все проблемы и баги пишем сюда
  4. @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");
  5. Планы на будущее

    Планы на будущее
  6. Установка Залить файлы из папки 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] - Заключённый текст превратится в ссылку на новость
  7. ReleaseStatus 1.0 - Установка

    ReleaseStatus - дай знать о статусе релиза другим! Ссылка на гитхаб
  8. Постер в быстром поиске через доп. поле и короткую новость Предлагаю 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.х
  9. Поиск и быстрый поиск по заголовку Открываем 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 => Искать только в заголовках статей Удачи!
  10. Выполняем запросы 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 - меняем на свой или альтернативный из папки
  11. Пользовательские теги (1.2.1) Вопросы по установке
  12. Видеомикроразметка на 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
  13. Видеомикроразметка на DLE

    Обсуждаем Микроразметка на тематику кино по версии Schema.org
  14. Если у вас подключены доп. поля как перекрёстные ссылки и вы не можете обойтись без них, то делаем следующее Открываем /engine/modules/show.full.php и ищем $tpl->set( '{statuss}', $xfieldsdata[$mystatus_cfg['xfield']] ); и выше или ниже ставим if($xfieldsdata['НАЗВАНИЕ_ДОП_ПОЛЯ'] != "" || !empty($xfieldsdata['НАЗВАНИЕ_ДОП_ПОЛЯ'])) { $ОПРЕДЕЛИТЕЛЬНОЕ_НАЗВАНИЕ = $xfieldsdata['НАЗВАНИЕ_ДОП_ПОЛЯ'] } else { $ОПРЕДЕЛИТЕЛЬНОЕ_НАЗВАНИЕ = ""; } $tpl->set( '{НАЗВАНИЕ}', $ОПРЕДЕЛИТЕЛЬНОЕ_НАЗВАНИЕ ); После этого в конструкцию подключения добавляем {НАЗВАНИЕ} Названия все на латинском!
×