DataLife Engine > Версия для печати > Вывод популярных новостей на отдельной странице

Допустим есть задача:Сделать возможность вывода в контенте список самых популярных новостей за весь период и за выбранный год.В этой статье я привожу решение поставленной задачи.Открыть файл .htaccessНайти строку:

RewriteEngine On

После нее вставить:

RewriteRule ^([0-9]{4})/topnews(/?)+$ index.php?do=topnews&year=$1 [L]
RewriteRule ^([0-9]{4})/topnews/page/([0-9]+)(/?)+$ index.php?do=topnews&year=$1&cstart=$2 [L]
RewriteRule ^topnews(/?)+$ index.php?do=topnews [L]
RewriteRule ^topnews/page/([0-9]+)(/?)+$ index.php?do=topnews&cstart=$1 [L]

Открыть файл /engine/engine.php

Найти строку:

           } elseif ($do == 'lastnews') {

ПЕРЕД ней вставить:

             } elseif ($do == 'topnews') {
                        // ################ Вывод всех последних новостей #################                 
                        if ($cstart) {
                                $cstart = $cstart - 1;
                                $cstart = $cstart * $config['news_number'];
                        }
                        $newsmodule = true;
                        if($year){
                                $url_page = $config['http_home_url'] . "{$year}/topnews";
                                $user_query = "do=topnews&year={$year}";
                        }else{
                                $url_page = $config['http_home_url'] . "topnews";
                                $user_query = "do=topnews";
                        }
                        if($year) $where_date .= " AND date >= '{$year}-01-01'AND date < '{$year}-01-01' + INTERVAL 1 YEAR";
                        if($config['no_date'] AND !$config['news_future']){
                                $thisdate = date ( "Y-m-d H:i:s", $_TIME );
                                $where_date .= " AND date < '" . $thisdate . "'";
                        }
                        $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, SUBSTRING(p.full_story, 1, 15) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}approve" . $where_date . " ORDER BY rating DESC LIMIT " . $cstart . "," . $config['news_number'];
                        $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}approve" . $where_date;

Найти строку:

                            $cache_prefix = "_lastnews";

После нее вставить:

                       } elseif ($do == "topnews") {
                                $cache_prefix = "_topnews";
                                if($year) $cache_prefix .= "_{$year}";

Найти строку:

elseif ($do == 'lastnews') $nam_e = $lang['last_news'];

После нее вставить:

elseif ($do == 'topnews'){
        $nam_e = "Популярные новости";
        if($year) $nam_e .= " за {$year} год";
}

Готово!Теперь по адресу:

http://сайт.ru/2011/topnews/ — Будут выводиться самые популярные новости за 2011 год.

http://сайт.ru/topnews/ — Будут выводится самые популярные новости за весь период Вернуться назад