03 июн 2013
Вывод популярных новостей на отдельной странице
tonik Категория: DATALIFE ENGINE » Модули
У нас вы можете скачать бесплатно Вывод популярных новостей на отдельной странице

Данный материал предоставлен сайтом Skripter.info исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Вывод популярных новостей на отдельной странице

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

Открыть файл .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['https_home_url'] . "{$year}/topnews";
                $user_query = "do=topnews&year={$year}";
            }else{
                $url_page = $config['https_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} год";
}




Готово!
Теперь по адресу:
https://сайт.ru/2011/topnews/ - Будут выводиться самые популярные новости за 2011 год.
https://сайт.ru/topnews/ - Будут выводится самые популярные новости за весь период









Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.