Расширение функционала стандартного рейтинга "Нравится" - "Не нравится" для DLE

Расширение функционала стандартного рейтинга "Нравится" - "Не нравится"

Расширение функционала стандартного рейтинга "Нравится" - "Не нравится"

Если у вас DLE 10.5 или старше и вы хотите иметь возможность раздельного вывода минусов и плюсов в рейтинге, то этот хак для вас.
Этот хак только для третьего типа рейтинга - "Нравится" и "Не нравится".
Не буду вдаваться в теорию, но подобный вывод рейтинга легко реализуем исходя из имеющихся данных и никаких дополнительных изменений в БД делать не нужно.
Да и вообще вся установка предельно проста.
Приступим.

Открыть файл engine/modules/functions.php
Найти строку (первую, в функции ShowRating):
	} elseif ($config['rating_type'] == "2") {

После нее вставить:
		$rate_minus = ($vote_num - $rating)/2;
		$rating_plus = $rating + $rate_minus;

		$rated = <<<HTML
<div class="main-sliders-rate ignore-select">
	<a href="#" title="Нравится(+)" onclick="doRate('1', '$id'); return false;">
		<span>
			<svg viewBox="61.9 84.9 200.8 194.4">
				<path d="M237,146c-4-0.8-8.8-0.8-11.2-0.8h-41V98.6c0-8-6.4-13.7-13.7-13.7h-19.3c-7.2,0-12.9,4.8-15.3,11.2l-11.2,47.4c0,0.8-1.6,3.2-1.6,3.2l-19.3,20.1c0,0-0.8,0.8-0.8,1.6c-0.8,0-1.6,0.8-1.6,0.8H78.8c-8.8,0-16.9,5.6-16.9,14.5v61c0,8.8,8,16.1,16.9,16.1h23.3c1.6,0,3.2-0.8,4.8-0.8l16.1,13.7c4,3.2,9.6,5.6,14.5,5.6h72.3c39.4,0,53-31.3,53-57v-41.8C261.1,158,245.8,148.4,237,146z M81.2,186.9h18.5v56.2H81.2L81.2,186.9L81.2,186.9z M243.4,222.3c0,11.2-3.2,36.9-34.5,36.9h-72.3c-0.8,0-2.4-0.8-2.4-0.8l-16.1-12.9v-0.8v-61v-1.6c0-0.8,0-1.6,0.8-1.6l19.3-20.1c3.2-3.2,5.6-7.2,6.4-11.2l10.4-44.2h9.6v43.4c0,8,7.2,14.5,15.3,14.5h45c2.4,0,5.6,0,6.4,0.8c1.6,0.8,10.4,4,10.4,16.1C243.4,180.5,243.4,222.3,243.4,222.3z"></path>
			</svg>
			$rating_plus
		</span>
	</a>
	<a href="#" title="Не нравится(-)" onclick="doRate('-1', '$id'); return false;">
		<span>
			<svg viewBox="97.6 84.8 200.8 194.4">
				<path d="M298.4,183.6v-41.8c0-25.7-12.9-57-53-57h-72.3c-4.8,0-10.4,2.4-14.5,5.6l-16.1,13.7c-1.6-0.8-3.2-0.8-4.8-0.8h-23.3c-8.8,0-16.9,7.2-16.9,16.1v61c0,8.8,8,14.5,16.9,14.5h23.3c0.8,0,1.6,0.8,1.6,0.8s0,0.8,0.8,1.6l19.3,20.1c0.8,0.8,1.6,2.4,1.6,3.2l11.2,47.4c1.6,6.4,8,11.2,15.3,11.2h19.3c7.2,0,13.7-5.6,13.7-13.7v-45.8h41c2.4,0,7.2,0,11.2-0.8C283.1,215.7,298.4,206.1,298.4,183.6z M118.5,120.2H137v56.2h-18.5V120.2z M279.9,183.6c0,12.9-8.8,16.1-10.4,16.1c-1.6,0-4,0.8-6.4,0.8h-45c-8,0-15.3,6.4-15.3,14.5v43.4h-11.2l-10.4-44.2c-0.8-4-4-8-6.4-11.2l-19.3-20.1l-0.8-1.6v-1.6v-61v-0.8l16.1-12.9c0.8,0,1.6-0.8,2.4-0.8h72.3c31.3,0,34.5,25.7,34.5,36.9V183.6z"></path>
			</svg>
			$rate_minus
		</span>
	</a>
</div>
HTML;
		if( $allow ) $rated = "<div id=\"ratig-layer-$id\">$rated</div>";
		return $rated;


При желании использовать стили:

Готово. В шаблоне использовать один стандартный тег {rating}

Стили и HTML код нагло взяты с сайта kinokong
Пример работы можно посмотреть тут - color.sandev.pro

С уважением,
Олег Александрович a.k.a. Sander
Комментарии: (49)
  1. foto
    Посетитель 7 марта 2016 13:28 #
    А могли бы сделать к этому хаку тег, который будет выводит средний бал (положительный рейтинг - отрицательный = средний бал)... Очень нужная правка в этом рейтинге.

    Заранее Вам спасибо)
    0
    1. foto
      Администратор 7 марта 2016 14:31 #
      Файлы engine/modules/show.***.php
      После строки
      $tpl->set( '{vote-num}', "<span id=\"vote-num-id-".$row['id']."\" class=\"ignore-select\">".$row['vote_num'].";</span>" );

      Вставить
      $tpl->set( '{rate-num}', $row['rating'] );

      В шаблоне использовать тег {rate-num}

      Для 5и значного рейтинга вставлять строку:
      $tpl->set( '{rate-num}', $row['vote_num']?$row['rating']/$row['vo
      te_num']:0 );
      +2
      1. foto
        Посетитель 7 марта 2016 16:38 #
        Спасибо огромное!
        0
      2. foto
        Посетитель 7 марта 2016 17:15 #
        Подскажите еще одну вещь... Как правильно сделать такую страницу
        0
        1. foto
          Администратор 7 марта 2016 18:00 #
          Статическая страница + {custom}
          0
          1. foto
            Посетитель 7 марта 2016 21:03 #
            Так и сделал) Если Вам не сложно, помогите сделать такую же нумерацию как на той странице) Вообще что-то не могу понять как там устроено(
            Вот шаблон кастома, который используется для вывода шаблона
            <tr><td style="width:40px;text-align:center;padding:5px 0 4px 0;border-bottom:1px dotted #CCC;"></td>
            <td style="text-align:left;padding:5px 0 4px 0;border-bottom:1px dotted #CCC;p"><a style="color:#313746!important;" href="{full-link}">{title}</a></td>
                <td style="width:150px; text-align:center;padding:5px 0 4px 0;border-bottom:1px dotted #CCC;">{rate-num}</td></tr>
            0
  2. foto
    Клиент 10 марта 2016 14:03 #
    Всем привет,как вставить данный рейтинг в комментарии?
    то есть человек пишет коммент а под комментарием стоит данный рейтинг!
    +1
  3. foto
    Посетитель 26 марта 2016 14:40 #
    Подскажите пожалуйста, как сделать что бы выводился только отрицательное число?
    0
    1. foto
      Администратор 26 марта 2016 15:59 #
      В коде убрать
      	<a href="#" title="Нравится(+)" onclick="doRate('1', '$id'); return false;">
      		<span>
      			<svg viewBox="61.9 84.9 200.8 194.4">
      				<path d="M237,146c-4-0.8-8.8-0.8-11.2-0.8h-41V98.6c0-8-6.4-13.7-13.7-13.7h-19.3c-7.2,0-12.9,4.8-15.3,11.2l-11.2,47.4c0,0.8-1.6,3.2-1.6,3.2l-19.3,20.1c0,0-0.8,0.8-0.8,1.6c-0.8,0-1.6,0.8-1.6,0.8H78.8c-8.8,0-16.9,5.6-16.9,14.5v61c0,8.8,8,16.1,16.9,16.1h23.3c1.6,0,3.2-0.8,4.8-0.8l16.1,13.7c4,3.2,9.6,5.6,14.5,5.6h72.3c39.4,0,53-31.3,53-57v-41.8C261.1,158,245.8,148.4,237,146z M81.2,186.9h18.5v56.2H81.2L81.2,186.9L81.2,186.9z M243.4,222.3c0,11.2-3.2,36.9-34.5,36.9h-72.3c-0.8,0-2.4-0.8-2.4-0.8l-16.1-12.9v-0.8v-61v-1.6c0-0.8,0-1.6,0.8-1.6l19.3-20.1c3.2-3.2,5.6-7.2,6.4-11.2l10.4-44.2h9.6v43.4c0,8,7.2,14.5,15.3,14.5h45c2.4,0,5.6,0,6.4,0.8c1.6,0.8,10.4,4,10.4,16.1C243.4,180.5,243.4,222.3,243.4,222.3z"></path>
      			</svg>
      			$rating_plus
      		</span>
      	</a>

      Так полностью исчезнет положительное число и палец вверх.

      Чтобы убрать только число, но оставить палец вверх, в данном коде убрать только
      			$rating_plus
      0
      1. foto
        Посетитель 26 марта 2016 16:24 #
        Спасибо большое
        0
  4. foto
    Посетитель 21 мая 2016 13:33 #
    Добрый день, можете сказать принцип работы данного хака, куда сохраняется голос? или как обнулить голоса ?
    0
    1. foto
      Администратор 21 мая 2016 19:20 #
      Хранение и обработка данных остаются стандартные от DLE.
      Этот хак/модуль лишь меняет вид отображения.

      Модуль управления рейтингом писал Пафнутий
      +2
  5. foto
    Посетитель 27 июня 2016 12:11 #
    Добрый день.Очень красиво выглядит.Не могли Вы и для dle 10.3 версию переделать?
    +1
    1. foto
      Администратор 27 июня 2016 12:19 #
      В 10.3 нету рейтинга +-
      0
  6. foto
    Посетитель 1 июля 2016 23:09 #
    А как сделать так чтоб любой человек мог лайкать, даже автор новости?
    0
    1. foto
      Администратор 1 июля 2016 23:11 #
      Открыть файл engine/ajax/rating.php и удалить код
      	if( $allrate['user_id'] == $member_id['user_id'] ) {
      		
      		$db->close();
      		
      		echo "{\"error\":true, \"errorinfo\":\"{$lang['rating_error1']}\"}";
      		die();
      	}
      0
      1. foto
        Посетитель 1 июля 2016 23:29 #
        У этого есть небольшой не дочет...тут не выводится фикс о том что вы проголосовали...а только после обновления страницы...
        0
        1. foto
          Администратор 1 июля 2016 23:30 #
          Вероятнее всего ошибка у вас в шаблоне.
          Блок рейтинга обновляется на AJAX сразу после голосования.
          0
          1. foto
            Посетитель 1 июля 2016 23:35 #
            А если я вам дам код вы можете помочь с проверкой? На печеньку отправлю))
            0
      2. foto
        Клиент 14 января 2018 21:11 #
        Сандер, подскажи пожалуйста, какой код убрать в новых версиях движка, например 11.2 что-бы тоже мог любой голосавть.
        0
  7. foto
    Посетитель 7 июля 2016 10:53 #
    у меня все выводится но при нажатии ничего не происходит пишет "Загрузка. Пожалуйста, подождите..."
    и рейтинг не вставляется. dle 11
    0
    1. foto
      Администратор 7 июля 2016 12:17 #
      Проблема или в шаблоне (JS) или в файле engine/ajax/rating.php
      Залейте оригинальный файл rating.php и проверьте в консоли шаблон на наличие ошибок в момент голосования.
      0
      1. foto
        Посетитель 7 июля 2016 13:40 #
        в консоли нет ошибок???
        0
        1. foto
          Администратор 7 июля 2016 13:42 #
          Вы у меня спрашиваете? Я не знаю.
          Так же возможно вы допустили ошибку при установке...
          0
          1. foto
            Посетитель 7 июля 2016 13:55 #
            ну я проверил в консоле нет ошибок.
            0
          2. foto
            Посетитель 7 июля 2016 14:27 #
            вот все выводится но при нажатии нечего не преисходит
            0
            1. foto
              Администратор 7 июля 2016 14:43 #
              Значит с вероятностью 80% ошибка где-то в php.
              0
              1. foto
                Посетитель 7 июля 2016 14:52 #
                вот залил на файлобменник поспотрите пожалюста functions.php
                ссылка
                0
              2. foto
                Администратор 7 июля 2016 15:07 #
                Тут вроде порядок.
                Значит проблема или в файле rating.php или все же что-то в шаблоне.
                Стандартный рейтинг работает нормально?

                PS. Адрес сайта?
                0
              3. foto
                Посетитель 7 июля 2016 15:12 #
                сайт на денвере
                0
              4. foto
                Посетитель 7 июля 2016 15:19 #
                все исправил праблема был в файле rating.php
                0
  8. foto
    Посетитель 12 июля 2016 11:01 #
    Сделал по инструкции, изначально не чего не вышло. обновил пару раз появился рейтинг, хотя в шаблон тег не вставлял. После чего решил отказаться от изменений. Залил стандартный functions.php теперь у меня не переходит на полную новость, ссылка формируется странно, в виде http://kinofilms.pro/?newsid=117&seourl=oblasti-tmy&seocat=detektiv а браузер пишет что сайт выполнил переадресацию слишком много раз. Рекомендует удалить cookie, но это не помогает. Помогите пожалуйста вернуть всё на место.
    0
    1. foto
      Администратор 12 июля 2016 11:05 #
      Данный хак не имеет абсолютно никакого отношения к формированию URL и редиректам.
      0
      1. foto
        Посетитель 12 июля 2016 11:17 #
        Я понимаю, спасибо тоже об этом думал, но странно до этого такого не было. Что я мог сделать не так(
        0
  9. foto
    Посетитель 14 июля 2016 11:38 #
    Sander, извините, а не могли бы Вы написать в какой именно файл и в какое место нужно вставить тег {rating} на примере дефолтного шаблона DLE?
    Заранее спасибо!
    0
    1. foto
      Администратор 14 июля 2016 11:41 #
      Для начала я бы порекомендовал вам ознакомиться с самим движком, а не углубляться в модули.

      PS. Файлы стандартны для всех шаблонов: shortstory.tpl и fullstory.tpl
      Если это не изменено в настройках категории.
      +1
      1. foto
        Посетитель 14 июля 2016 11:43 #
        Спасибо, я уже попробовал в shortstory.tpl
        0
      2. foto
        Посетитель 14 июля 2016 11:46 #
        Просто стандартный рейтинг не устраивает. Извиняюсь, еще вопрос: А как сделать вывод рейтинга на главную страницу, что бы на против каждой новости был виден рейтинг новости?
        0
        1. foto
          Администратор 14 июля 2016 11:48 #
          Лучше обратитесь за платной помощью к верстальщику.

          PS. Теги рейтинга работают только в вышеуказанных шаблонах и в шаблонах новостей выводимых через custom.
          +1
          1. foto
            Посетитель 14 июля 2016 11:51 #
            Спасибо за ответ.
            0
          2. foto
            Посетитель 5 апреля 2017 20:05 #
            ПРИВЕТ, очень нужна твоя помощь подскажи пожалуйста как можно приподнять рейтинг немного вверх и расширить его немного ? Какими кодами я так и не нашел. Вот на скрине посмотри
            0
  10. foto
    Посетитель 13 ноября 2016 12:50 #
    Здравствуйте. Воспользовался Вашим рейтингом повторно, но в этот раз что-то пошло не так)))) Не присваиваются стили к кнопкам голосования. Подскажите, что может быть не так. Сайт - http://base-road.ru/
    0
    1. foto
      Посетитель 19 ноября 2016 11:22 #
      Вот кстати у меня тоже не получается, правда у меня движок Dle 11.1 и работаю с Denwer. Хотелось бы узнать в чём может быть проблема confused
      0
  11. foto
    Клиент 2 февраля 2017 22:02 #
    Здравствуйте, а можно ли вывести с этого рейтинга количество голосов в процетах, пример:
    0
  12. foto
    Посетитель 6 апреля 2017 08:20 #
    Всем привет. Админ подскажи пожалуйста как сделать подсчет рейтинга как на скрине а то у меня вот так получилось
    0
    1. foto
      Администратор 6 апреля 2017 18:00 #
      Обнулите значения рейтинга и в настройках тип рейтинга должен быть "Нравится и не нравится".
      А текст выравнивается стилями. Какими именно не могу сказать, нужно работать с сайтом.
      0
      1. foto
        Посетитель 6 апреля 2017 18:29 #
        Я вам в личку написал посмотрите если не затруднит.
        0
  13. foto
    Посетитель 11 августа 2017 15:00 #
    Добрый день.
    И все же как сделать чтобы был подсчет голосов в процентах примерно так как указал пользователь trouble ???
    0
    1. foto
      Администратор 15 января 2018 14:16 #
      После строки
      $rating_plus = $rating + $rate_minus;

      Вставить:
      $plus_bar = round(100 * $rating_plus / $vote_num);
      $minus_bar = 100 - $plus_bar;

      Ниже сверстать полоску бара используя значения переменных $plus_bar и $minus_bar.
      Пример:
      <div class="rate-bar-wrap">
          <div class="rate-bar-plus-var>{$plus_bar}%</div>
          <div class="rate-bar">
              <div class="rate-bar-plus" style="width:{$plus_bar}%;"></div>
          </div>
          <div class="rate-bar-minus-var>{$minus_bar}%</div>
      </div>
      0
Добавить комментарий
  • Логин
  • E-mail (не обязательно)
Повторите рисунок:
antibot
© Sander-Development. 2009-2018.
При копировании, ссылка на источник обязательна.