CMS DataLife Engine - Система управления сайтами

redissx

местные
  • Публикации

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

  • Посещение

Репутация

25 Хороший

О redissx

  • Звание
    Активист

Посетители профиля

998 просмотров профиля
  1. Авто спойлер в комментариях

    Также примерно с небольшим исправлением (хотя тут именно под текст сделано). Скрипт ограничивает высоту блока, вставят картинку 600-400, обрежет картинку до 200 (или как в настройках), ниже соответственно тоже обрежет. С спойлером в тексте комментария вообще будет некорректная работа. Под символы этот скрипт никак. Я вообще не могу даже предположить, как с символами. Допустим, количество символов мы определили, но как резать текст с учетом, что там картинки и спойлеры возможны? Да и в интернете, что я видел или высоту обрезает или символы, но чисто с текстом. С смешанным содержимым не встречал.
  2. Авто спойлер в комментариях

    Любая сворачивалка. Вот мое творение (только от высоты), настройки задаются. пусть текст вашего комента в классе fdesc <div class="fdesc">{comment}</div> 1. в js файл $(document).ready(function(){ $('.fdesc').wTextSlicer({ height: '200', textExpand: 'Развернуть текст полностью', textHide: 'Свернуть текст' }); }); /*! wTextSlicer v 1.01 */ jQuery.fn.wTextSlicer = function(options){ var options = jQuery.extend({ height: '200', textExpand: 'expand text', textHide: 'hide text' },options); return this.each(function() { var a = $(this), h = a.outerHeight(); if ( h > options.height ) { a.addClass('slice slice-masked').attr('data-height',h).height(options.height).after('<div class="slice-btn"><span>'+options.textExpand+'</span></div>'); }; var bt = $(this).next('.slice-btn').children('span'); bt.click(function() { var ah = parseInt(a.css("height"), 10); ah == h ? a.css({'height':options.height}) : a.css({'height':h}); bt.text(bt.text() == options.textExpand ? options.textHide : options.textExpand); a.toggleClass('slice-masked'); }); }); }; 2. в css файл .slice {overflow:hidden; position:relative; transition:height .2s;} .slice-btn {} .slice:not(.slice-masked) + .slice-btn {margin:15px 0 0 0;} .slice-btn span {display:inline-block; cursor:pointer; color:#5B86E5;}
  3. Версия для слабовидящих

    Прямая реклама запрещена, по гуглу можно найти. Делал давно как раз по образу kremlin.ru, как было тогда давно на тот момент у него (апрель 2016). Отдельный шаблон, его как раз брали и берут, чтобы у надзорных органов не было претензий. За все время не было от пользователей просьб на доработку, из чего делаю вывод, что версия вполне подходит.
  4. Приветствую. Для ajax подгрузки новостей существует множество плагинов с кучей разных настроек. Но если вам требуется только подгрузка и ничего более, то предлагаю не грузить лишнего и воспользоваться этим небольшим решением. Загрузка при клике по кнопке В итоге мы получим это 1. В navigation.tpl вашего шаблона <div class="bottom-nav ignore-select" id="bottom-nav"> <div class="nav-load" id="nav-load">[next-link]Загрузить еще[/next-link]</div> <!-- сюда можете вставить дополнительно обычную навигацию --> </div> 2. В конец css файла вашего шаблона .bottom-nav {clear: both; padding-top: 60px;} .nav-load {text-align: center;} .nav-load a {padding: 0 60px; display: inline-block; height: 60px; line-height: 60px; border-radius: 30px; font-weight: 700; font-size: 18px; background-color: #2980b9; color: #fff;} .nav-load a:hover {background-color: #00a652; color: #fff;} .nav-load span {display: none;} 3. В конец js файла вашего шаблона $(document).ready(function(){ $('body').on('click','#nav-load a',function(){ var urlNext = $(this).attr('href'); var scrollNext = $(this).offset().top - 200; if (urlNext !== undefined) { $.ajax({ url: urlNext, beforeSend: function() { ShowLoading(''); }, success: function(data) { $('#bottom-nav').remove(); $('#dle-content').append($('#dle-content', data).html()); $('#dle-content').after($('#bottom-nav')); window.history.pushState("", "", urlNext); $('html, body').animate({scrollTop:scrollNext}, 800); HideLoading(''); }, error: function() { HideLoading(''); alert('что-то пошло не так'); } }); }; return false; }); }); Автоматическая загрузка при скролле В итоге по мере прокрутки к нижним новостям следующие новости будут автоматически загружаться. 1. В navigation.tpl вашего шаблона <div class="bottom-nav ignore-select" id="bottom-nav"> <div class="nav-load" id="nav-load">[next-link]Загрузить еще[/next-link]</div> </div> 2. В конец css файла вашего шаблона .bottom-nav {clear: both; opacity:0;} 3. В конец js файла вашего шаблона $(document).ready(function(){ var loadLink = $('#nav-load'), loadStatus = 0; $(window).scroll (function () { if ($(this).scrollTop() + $(this).height() + 50 > loadLink.offset().top) { var urlNext = loadLink.find('a').attr('href'); if (urlNext !== undefined && loadStatus == 0) { loadStatus = 1; $.ajax({ url: urlNext, beforeSend: function() { ShowLoading(); }, success: function(data) { $('#bottom-nav').remove(); $('#dle-content').append($('#dle-content', data).html()).after($('#bottom-nav')); window.history.pushState("", "", urlNext); HideLoading(); loadStatus = 0, loadLink = $('#nav-load'); } }); } else { loadLink.remove(); }; }; }); }); здесь в строке if ($(this).scrollTop() + $(this).height() + 50 > loadLink.offset().top) { цифра 50 - это расстояние до нижнего края новостей при котором начинается загрузка. То есть вы можете немного заранее загружать, пока юзер не доскроллил до конца, меняя эту цифру. Например, 250 - новости будут загружаться раньше. Также замечу, что рекомендуется использовать загрузку только на главной и в категории во избежание проблем. Обычно я делаю так в navigation.tpl [aviable=main|cat] <div class="bottom-nav ignore-select" id="bottom-nav"> <div class="nav-load" id="nav-load">[next-link]Загрузить еще[/next-link]</div> <!-- сюда можете вставить дополнительно обычную навигацию --> </div> [/aviable] [not-aviable=main|cat] <!-- обычная навигация --> [/not-aviable]
  5. Помогите с поиском

    за быстрый поиск отвечает id='quicksearch' в шаблоне и включение в админке разрешения на быстрый поиск
  6. Называйте как хотите, суть в том, что это можно сделать за 10 минут, а не ждать релизов новых версий по полгода, где все равно этого скорее всего не будет Вашу позицию я понял.
  7. Плагины ставят кому нужно, а вы предлагаете всем насильно их пихнуть через dle_js.js. Или вы думаете это все иначе работает? Обозвали плагины костылями - не надо так. Напишу еще раз, мне не сложно. Потому что готов поспорить в ДЛЕ этого никогда не внедрят, т.к. позиция разработчиков в этом давно ясна - что легко делается шаблоном, того не будет в движке.
  8. Зачем движок лишними скриптами грузить? Это делается в шаблоне за 10 минут, куча готовых плагинов. Выбор же типа навигации в зависимости от категории опять же делается шаблоном, в navigation.tpl с помощью aviable, category. Постараюсь на днях расписать подробно, как сделать.
  9. Еще интересный красочный вариант. Здесь добавлен вывод процента, который окрашивается в зеленый-красный в зависимости от высокий-низкий. 1. в fullstory.tpl в нужное место ставим [rating-type-3] <div class="frate ignore-select" id="frate-{news-id}"> <div class="rate-plus" id="pluss-{news-id}" onclick="doRateLD('plus', '{news-id}');"><span class="fa fa-thumbs-up"></span><span class="rcount">{views}</span></div> <div class="rate-minus" id="minuss-{news-id}" onclick="doRateLD('minus', '{news-id}');"><span class="fa fa-thumbs-down"></span><span class="rcount">{comments-num}</span></div> <div class="rate-data">{rating}{vote-num}</div> </div> [/rating-type-3] 2. в ваш css файл в конец .frate {height:40px; line-height:24px; width:200px; position:relative; opacity:0; display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap; -ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;} .frate.done {opacity:1;} .rate-data {display:none;} .rate-plus, .rate-minus {cursor:pointer;} .frate .fa {color:#3c0; display:inline-block; vertical-align:top; font-size: 24px; margin-right:10px;} .rate-minus .fa {color:#f20404; position: relative;} .frate div:hover .fa {animation: bounceRate 0.3s infinite linear; animation-direction: alternate;} .rbar {height:6px; overflow:hidden; background-color:#f20404; border-radius:3px; position:absolute; left:0; bottom:0; width:100%;} .rfill {width:50%; height:100%; position:absolute; left:0; top:0; background-color:#3c0; transition:width 1s linear;} .rate-perc {font-size: 18px; font-weight: 700;} .rate-perc.high {color:#3c0;} .rate-perc.low {color:#f20404;} @keyframes bounceRate { from {transform: translate(0,0%);} to {transform: translate(0,-50%);} } 3. в ваш js файл в конец $(document).ready(function(){ $('.frate').each(function(){ var rate = $(this), rdata = rate.find('.rate-data'), rrate = parseInt(rdata.find('.ratingtypeplusminus').text(), 10), rvote = parseInt(rdata.find('span[id*=vote]').text(), 10); rate.append('<div class="rbar"><div class="rfill"></div></div>'); rate.find('.rate-plus').after('<div class="rate-perc">0%</div>'); if ( rvote >= rrate && rvote > 0 ) { var m = (rvote - rrate)/2, p = rvote - m, perc = Math.round(p/rvote*100); rate.find('.rate-plus span.rcount').html(p); rate.find('.rate-minus span.rcount').html(m); rate.find('.rfill').css({'width':''+perc+'%'}); rate.find('.rate-perc').html(''+perc+'%'); perc < 49 ? rate.find('.rate-perc').addClass('low') : rate.find('.rate-perc').addClass('high'); } else { rate.find('.rate-plus span.rcount').html('0'); rate.find('.rate-minus span.rcount').html('0'); }; rate.addClass('done'); }); }); function doRateLD( rate, id ) { ShowLoading(''); $.get(dle_root + "engine/ajax/rating.php", { go_rate: rate, news_id: id, skin: dle_skin, user_hash: dle_login_hash }, function(data){ HideLoading(''); if ( data.success ) { var rating = data.rating; rating = rating.replace(/&lt;/g, "<"); rating = rating.replace(/&gt;/g, ">"); rating = rating.replace(/&amp;/g, "&"); $("#ratig-layer-" + id).html(rating); $("#vote-num-id-" + id).html(data.votenum); var rt = parseInt($(rating).text()), m = (data.votenum - rt)/2, p = data.votenum - m, perc = Math.round(p/data.votenum*100), fRate = $("#frate-" + id); fRate.find('.rate-plus span.rcount').html(p); fRate.find('.rate-minus span.rcount').html(m); fRate.find('.rfill').css({'width':''+perc+'%'}); fRate.find('.rate-perc').html(''+perc+'%'); } else if (data.error) {DLEalert ( data.errorinfo, dle_info );} }, "json"); }; 4. подключаем иконки http://fontawesome.io/icons/ любым способом. Например, с cdn. в main.tpl в секцию head добавляем <script src="https://use.fontawesome.com/fe271d92aa.js"></script>
  10. Приветствую. Данным примером хочу показать, как стандартный рейтинг DLE "нравится-не нравится" визуально преобразовать в всякий интересный вид на примере рейтинга Youtube. Самое главное - этот способ не затрагивает файлы движка, полностью совместим с ним, по-сути это и есть стандартный функционал DLE. Здесь я применю раздельный подсчет лайков, визуальную шкалу соотношений лайков, процентное соотношение лайков. С помощью js мы посчитаем все это, используя rating и vote-num, и применим. Живое голосование будем делать на основе немного измененной стандартной функции DLE. В результате мы получим такой супер рейтинг. Подробно не буду объяснять, что к чему, просто выложу. 1. в fullstory.tpl в нужное место ставим (замечу, что можно и в shortstory.tpl) [rating-type-3] <div class="frate ignore-select" id="frate-{news-id}"> <div class="rate-plus" id="pluss-{news-id}" onclick="doRateLD('plus', '{news-id}');"><img src="{THEME}/images/thumb-up.png" alt="нравится" /><span>0</span></div> <div class="rate-minus" id="minuss-{news-id}" onclick="doRateLD('minus', '{news-id}');"><img src="{THEME}/images/thumb-down.png" alt="не нравится" /><span>0</span></div> <div class="rate-data">{rating}{vote-num}</div> </div> [/rating-type-3] 2. в ваш css файл в конец .frate {display:inline-block; white-space:nowrap; height:30px; line-height:20px; position:relative;} .rate-data {display:none;} .rate-plus, .rate-minus {display:inline-block; vertical-align:top; cursor:pointer; min-width:40px; color:#a0a0a0;} .rate-minus {margin-left:20px;} .frate img {opacity:0.3; margin-right:7px; display:inline-block; vertical-align:top;} .frate div:hover img {opacity:1;} .frate div:hover {color:#000;} .rbar {height:3px; overflow:hidden; background-color:#cfcfcf; border-radius:1px; position:absolute; left:0; top:100%; width:100%;} .rfill {width:50%; height:100%; position:absolute; left:0; top:0; background-color:#2692e6; transition:width 1s linear;} 3. в ваш js файл в конец $(document).ready(function(){ $('.frate').each(function(){ var rate = $(this), rdata = rate.find('.rate-data'), rrate = parseInt(rdata.find('.ratingtypeplusminus').text(), 10), rvote = parseInt(rdata.find('span[id*=vote]').text(), 10); rate.append('<div class="rbar"><div class="rfill"></div></div>'); if ( rvote >= rrate && rvote > 0 ) { var m = (rvote - rrate)/2, p = rvote - m, perc = Math.round(p/rvote*100); rate.find('.rate-plus span').html(p); rate.find('.rate-minus span').html(m); rate.find('.rfill').css({'width':''+perc+'%'}); }; }); }); function doRateLD( rate, id ) { ShowLoading(''); $.get(dle_root + "engine/ajax/rating.php", { go_rate: rate, news_id: id, skin: dle_skin, user_hash: dle_login_hash }, function(data){ HideLoading(''); if ( data.success ) { var rating = data.rating; rating = rating.replace(/&lt;/g, "<"); rating = rating.replace(/&gt;/g, ">"); rating = rating.replace(/&amp;/g, "&"); $("#ratig-layer-" + id).html(rating); $("#vote-num-id-" + id).html(data.votenum); var rt = parseInt($(rating).text()), m = (data.votenum - rt)/2, p = data.votenum - m, perc = Math.round(p/data.votenum*100), fRate = $("#frate-" + id); fRate.find('.rate-plus span').html(p); fRate.find('.rate-minus span').html(m); fRate.find('.rfill').css({'width':''+perc+'%'}); } else if (data.error) {DLEalert ( data.errorinfo, dle_info );} }, "json"); }; 4. закачиваем картинки лайков в папку images шаблона Есть нюанс: работает, если был всегда нравится-не нравится или с нуля. Если ранее были звезды или просто один лайк и там наставили оценок, то работать не будет (цифры будут нули), надо обнулять все. В архиве вы найдете все написанное выше, раскиданное по папкам и файлам. https://drive.google.com/open?id=0BziqeF4Ecg58M1NCZ1RkaXNuQW8 Источник: http://webrambo.ru/100-reyting-dle-kak-na-youtube-razdelnye-layki-shkala.html
  11. Не работает {speedbar}

    В таких случаях визуально переношу в нужное место с помощью jquery, например, методом append, insertBefore и тд.
  12. Специально. Но все равно не заработает, как уже написали выше.
  13. vote-num обернут в span, поэтому работать с ним не будет. вроде бы. а вообще так [declination={vote-num}]отзыв||а|ов[/declination]
  14. ReCaptch

    У вас уже какая тема, а все проблемы связаны с шаблоном. Найдите другой нормальный шаблон и будет вам счастье.
  15. В этом нет необходимости. Через js с помощью лишь шаблона на стандартном рейтинге нравится-не нравится делаются очень интересные вариации здесь 4 - за, 1 - против.