Приветствую, уважаемые форумчане!
Может кому-то пригодится то, что я только что сделал. Не знаю, насколько правильно я это сделал, но фишка работает.
Движок: DLE 8.0 (по сути, должно работать на всех версиях)
В общем, мне необходимо было сделать два {topnews}:
1. выводит 30 новостей по рейтингу за всё время;
2. выводит 25 новостей по количеству просмотров за всё время.
Итак, первым делом открываем index.php
Находим строку$tpl->set ( '{topnews}', $topnews );
Ниже добавляем$tpl->set ( '{top_news}', $top_news );
Далее открываем engine/init.php
Находим строкуif ($config['allow_topnews'] == "yes") include_once ENGINE_DIR . '/modules/topnews.php';
Ниже вставляемif ($config['allow_topnews'] == "yes") include_once ENGINE_DIR . '/modules/topnews1.php';
Открываем файл engine/inc/templates.php
Находим строку{topnews}<br />
Ниже вставляем{top_news}<br />
Теперь идем в папку "engine/modules/", копируем файл topnews.php, кидаем его в ту же папку, но с именем "topnews1.php".
Далее в этом файле необходимо все найденные значения "
topnews" заменить на "
top_news".
ВАЖНО: если перед "topnews" идет символ "
$", его ни в коем случае нельзя менять!
В том месте, где Вы хотите видеть новый вывод топовых новостей (/templates/ВАШ_ШАБЛОН/main.tpl), добавьте {top_news}.
НастройкиВ файлах topnews.php и topnews1.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" );
INTERVAL 1 MONTH
Здесь цифру 1 можно поменять на какое-то другое число. В настоящий момент установлено значение 1 месяц. То есть топовые новости выводятся за месяц. Если Вы хотите вывести топовые новости за всё время, напишите там, например, 9999
ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC
Далее идет сортировка. Начну по порядку:
1. rating - по рейтингу
2. comm_num - по количеству комментариев
3. news_read - по количеству просмотров новости
4. date - по дате добавления
Вы можете убрать то, что Вам не нужно.
Ну и последний штрих
LIMIT 0,10
Цифра 10 отвечает за количество выводимых новостей. Если Вы хотите сделать ТОП-30 новостей, просто измените цифру "10" на "30".
После изменений не забываем
чистить кэш, так как можно не увидеть изменений при включенном кешировании.
Вся та лабуда, что написана выше, скорее всего, есть в интернете. Возможно мой способ дает большую нагрузку и реализовать его можно проще, но я написал так, как это сделано у меня.
Успехов!