Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как сделать 10 бальный рейтинг?

Как сделать 10 бальный рейтинг?


     рейтинг, рейтинг новостей    Общие вопросы по PHP, Хаки    963

вопрос
Здравствуйте, меня интересует возможность сделать 10 бальный рейтинг на dle 15.2
Ранее созданные плагины не работают на новой версии движка

Ответа пока нет


14 комментариев

Dark5ider
Эксперт

Dark5ider - -

Пришлите списком модули, которые не работают. Так проще будет "подправить".
В другом случае вам в Стол заказов

Rudoy
ГипноКотЭ

Rudoy - -

Dark5ider, здравствуйте
Вы не так поняли
Я имею в виду ранее созданные плагины 10 бального рейтинга которые сейчас гуляют на просторах интернета, не работают на dle 15.2

Dark5ider
Эксперт

Dark5ider - -

Я вас понял, поэтому и и говорю, что либо вы приводите списком (или одну ссылку) плагины которые не работают, либо заказывайте написание плагина с нуля.

Rudoy
ГипноКотЭ

Rudoy - -

написал выше

redissx
Юзер

redissx - -

на 15.1 работает, 15.2 не знаю
<?xml version="1.0" encoding="utf-8"?>
<dleplugin>
	<name>Рейтинг 10</name>
	<description>Рейтинг 10 Звёзд</description>
	<icon></icon>
	<version>1.0</version>
	<dleversion>11.0</dleversion>
	<versioncompare>greater</versioncompare>
	<upgradeurl></upgradeurl>
	<filedelete>0</filedelete>
	<needplugin></needplugin>
	<mnotice>0</mnotice>
	<mysqlinstall><![CDATA[]]></mysqlinstall>
	<mysqlupgrade><![CDATA[]]></mysqlupgrade>
	<mysqlenable><![CDATA[]]></mysqlenable>
	<mysqldisable><![CDATA[]]></mysqldisable>
	<mysqldelete><![CDATA[]]></mysqldelete>
	<phpinstall><![CDATA[]]></phpinstall>
	<phpupgrade><![CDATA[]]></phpupgrade>
	<phpenable><![CDATA[]]></phpenable>
	<phpdisable><![CDATA[]]></phpdisable>
	<phpdelete><![CDATA[]]></phpdelete>
	<notice><![CDATA[]]></notice>
	<file name="engine/modules/functions.php">
		<operation action="replace">
			<searchcode><![CDATA[		<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>]]></searchcode>
			<replacecode><![CDATA[
		<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['good']}" class="r5-unit" onclick="doRate('5', '{$id}'); return false;">5</a></li>
		<li><a href="#" title="{$lang['good']}" class="r6-unit" onclick="doRate('6', '{$id}'); return false;">6</a></li>
		<li><a href="#" title="{$lang['good']}" class="r7-unit" onclick="doRate('7', '{$id}'); return false;">7</a></li>
		<li><a href="#" title="{$lang['good']}" class="r8-unit" onclick="doRate('8', '{$id}'); return false;">8</a></li>
		<li><a href="#" title="{$lang['good']}" class="r9-unit" onclick="doRate('9', '{$id}'); return false;">9</a></li>
		<li><a href="#" title="{$lang['excellent']}" class="r10-unit" onclick="doRate('10', '{$id}'); return false;">10</a></li>
		</ul>]]></replacecode>
			<enabled>1</enabled>
		</operation>
	</file>
	<file name="engine/ajax/rating.php">
		<operation action="replace">
			<searchcode><![CDATA[if( $go_rate > 5 or $go_rate < 1 ) $go_rate = false;]]></searchcode>
			<replacecode><![CDATA[if( $go_rate > 10 or $go_rate < 1 ) $go_rate = false;]]></replacecode>
			<enabled>1</enabled>
		</operation>
	</file>
	<file name="engine/modules/show.short.php">
		<operation action="replace">
			<searchcode><![CDATA[if( $row['vote_num'] ) $ratingscore = str_replace( ',', '.', round( ($row['rating'] / $row['vote_num']), 1 ) );]]></searchcode>
			<replacecode><![CDATA[if( $row['vote_num'] ) $ratingscore = str_replace( ',', '.', round( ($row['rating']*2 / $row['vote_num']), 1 ) );]]></replacecode>
			<enabled>1</enabled>
		</operation>
	</file>
	<file name="engine/modules/show.full.php">
		<operation action="replace">
			<searchcode><![CDATA[if( $row['vote_num'] ) $ratingscore = str_replace( ',', '.', round( ($row['rating'] / $row['vote_num']), 1 ) );]]></searchcode>
			<replacecode><![CDATA[if( $row['vote_num'] ) $ratingscore = str_replace( ',', '.', round( ($row['rating']*2 / $row['vote_num']), 1 ) );]]></replacecode>
			<enabled>1</enabled>
		</operation>
	</file>
	<file name="engine/modules/show.custom.php">
		<operation action="replace">
			<searchcode><![CDATA[if( $row['vote_num'] ) $ratingscore = str_replace( ',', '.', round( ($row['rating'] / $row['vote_num']), 1 ) );]]></searchcode>
			<replacecode><![CDATA[if( $row['vote_num'] ) $ratingscore = str_replace( ',', '.', round( ($row['rating']*2 / $row['vote_num']), 1 ) );]]></replacecode>
			<enabled>1</enabled>
		</operation>
	</file>
</dleplugin>

Rudoy
ГипноКотЭ

Rudoy - -

воркает) спасибо большое)

Rudoy
ГипноКотЭ

Rudoy - -

работает чуток кривовато
если кто то нажмет 10 балов, а другой нажмет 5
то будет показывать не средний балл, где максимум 10
а сумму (15 баллов)

redissx
Юзер

redissx - -

я не прогер, изменил, вроде работает, сейчас на 15.1 тестил, проблем не увидел.

Rudoy
ГипноКотЭ

Rudoy - -

так же работает не по правильной формуле) не знаю где именно проблема
но теперь везде оценка занижена (у старых статей)
у новых статей теперь считает по правильной формуле

redissx
Юзер

redissx - -

Что значит занижен? Если оценка 5.8 А количество звёзд 6, то значит всё верно, ведь количество звёзд - это просто округлённое число. В этом плагине вообще не затрагивается формула ratingscore, она остается в том же видишь что и была: общий рейтинг/количество голосов.

Судя по всему у вас просто в старых новостях был рейтинг лайки и там были наставлены оценки. А лайки и звёзды обратно не совместимы, надо очищать рейтинг при переходе с лайков на звёзды.

Rudoy
ГипноКотЭ

Rudoy - -

У меня ранее были звезды
Был 5 звездочный рейтинг и если оценка ранее была 4.5 из 5, то теперь показывает 4.5 из 10 на старых новостях
А новые новости без оценок считает правильно теперь

redissx
Юзер

redissx - -

Понятно. Рейтинг записан в базу данных, и там была запись по пятибалльной шкале, вот и всё. Новые новости уже записываются по десятибалльной шкале. Думаю, что тут ничего не сделать кроме как очистить рейтинг. Ну или писать какой-то скрипт который обновит записи в базе данных для старых новостей умноженное на два. Ну или дополнять плагин чтобы он просто умножал на два старые новости, Но это всё уже не ко мне, не разбираюсь в этом

В базе данных хранится суммарный рейтинг и количество голосов.

Rudoy
ГипноКотЭ

Rudoy - -

Спасибо большое за плагин, ты очень помог

Похожие вопросы

наверх