Перейти к публикации

Рекомендованные сообщения

Собственно...

Как оказалось, рейтинг топ 10 в DLE строится очень специфически, то есть, по суммарному количеству баллов, которые проставило n пользователей, а не по среднему, как показывает графическое отображение в новости. Выходит, что 4 раза по 1-му баллу, это сравни 2 раза по 2 :) (а дальше отличие только по посещаемости или дате)

Так как такая простота мне не подходит для нового проекта, я решил это побороть)

1. Делаем запрос к базе

ALTER TABLE dle_post ADD COLUMN rate_tr decimal(4,1) not null default'0';
2. Открываем файл engine\ajax\rating.php Там находим такую строчку
$db->query( "UPDATE " . PREFIX . "_post set rating=rating+'$go_rate', vote_num=vote_num+1 where id ='$news_id'" );
и заменяем её на
$db->query( "UPDATE " . PREFIX . "_post set rating=rating+'$go_rate', vote_num=vote_num+1, rate_tr=rate_tr*0+rating/vote_num where id ='$news_id'" );
3. Открываем файл engine\modules\topnews.php Находим строчку
$db->query( "SELECT id, title, date, alt_name, category, flag FROM " . PREFIX . "_post WHERE approve='1' AND date >= '$this_month' - INTERVAL 1 MONTH AND date < '$this_month' ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,10" );
заменяем на
$db->query( "SELECT id, title, date, alt_name, rate_tr, vote_num, category, flag FROM " . PREFIX . "_post WHERE approve='1' AND date >= '$this_month' - INTERVAL 1 MONTH AND date < '$this_month' ORDER BY rate_tr DESC, vote_num DESC, news_read DESC, date DESC LIMIT 0,10" );

получаем рейтинг по среднему, который строится, учитывая последовательность: рейтинг, кол-во проголосовавших, кол-во просмотров

Не судите строго, я энергетик )) программист/верстальщик любитель-самоучка 6 мес увлекаюсь для себя)

Буду рад комментариям и замечаниям.

и ещё...

чтобы добавить в админку возможность чистить данный рейтинг:

1. Открываем файл engine\inc\editnews.php

после

<option value="mass_clear_rating">{$lang['mass_clear_rating']}</option>

вставляем

<option value="mass_clear_rate_tr">{очистка пр рейтинга}</option>

2. Открываем файл engine\inc\massactions.php

после

} elseif( $action == "mass_clear_rating" ) {

$field = "rating";

$value = 0;

$k_mass = true;

$title = $lang['mass_clear_rating_2'];

$lang['mass_confirm'] = $lang['mass_clear_rating_1'];

$lang[mass_confirm_1] = $lang[mass_confirm_2];

вставляем

} elseif( $action == "mass_clear_rate_tr" ) {

$field = "rate_tr";

$value = 0;

$k_mass = true;

$title = $lang['mass_clear_rating_2'];

$lang['mass_confirm'] = $lang['mass_clear_rating_1'];

$lang[mass_confirm_1] = $lang[mass_confirm_2];

находим

if ( $field == "rating" ) {

$db->query( "UPDATE " . PREFIX . "_post SET vote_num='0' WHERE id='{$id}'" );

заменяем на

if ( $field == "rate_tr" ) {

$db->query( "UPDATE " . PREFIX . "_post SET vote_num='0', rating='0' WHERE id='{$id}'" );

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

:)

Изменено пользователем ilya_nb
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...