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

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


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

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

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


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

Dark5ider
Эксперт

Dark5ider - 5 августа 2022 11:53 -

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

Rudoy
ГипноКотЭ

Rudoy - 5 августа 2022 13:32 -

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

Dark5ider
Эксперт

Dark5ider - 6 августа 2022 13:45 -

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

Rudoy
ГипноКотЭ

Rudoy - 8 августа 2022 11:03 -

написал выше

Rudoy
ГипноКотЭ

redissx
Юзер

redissx - 11 августа 2022 09:18 -

на 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 - 11 августа 2022 11:16 -

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

Rudoy
ГипноКотЭ

Rudoy - 12 августа 2022 18:49 -

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

redissx
Юзер

redissx - 19 августа 2022 09:46 -

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

Rudoy
ГипноКотЭ

Rudoy - 19 августа 2022 11:26 -

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

redissx
Юзер

redissx - 19 августа 2022 14:55 -

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

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

Rudoy
ГипноКотЭ

Rudoy - 19 августа 2022 19:17 -

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

redissx
Юзер

redissx - 19 августа 2022 19:25 -

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

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

Rudoy
ГипноКотЭ

Rudoy - 19 августа 2022 23:56 -

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

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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

наверх