2.06.13, 22:14
0 комментарий
  DLE Хаки

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

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

Открыть файл .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/ - Будут выводится самые популярные новости за весь период

Реклама

Напишите своё мнение

  • acuteaggressiveair_kissangel
    badbbbeachbeee
    biggrinbig_bossblumblush
    boastbombboredombye
    clappingcraycrazycurtsey
    dancedashdeclarediablo
    diroldon-t_mentiondownloaddrinks
    first_moveflirtfocusfool
    friendsgive_heartgive_rosegood
    hangheartheathelp
    hihunterhystericireful
    kingkisslaughlazy
    lolmail1mambaman_in_love
    mdamega_shokmoilmosking
    musicneanegativenew_russian
    okon_the_quietpardonparting
    partypilotpioneerpleasantry
    popcormpranksterprevedpunish
    roflrtfmrussiansad
    sarcasticscarescratchsearch
    secretsensoredshokshout
    slowsmilesmokesoldier
    soldier_girlsorryspitefulspruce_up
    stinkersuicidesunsuperstition
    swoonteasetenderthanks
    thisto_pick_ones_noseto_take_umbragetreaten
    umnikunknwvampirevava
    victorywackowhistlewink
    wizardyahooyesyu
    e101e102e103e104
    e105e106e107e108
    e109e110e111e112
    e113e114e115e116
    e117e118e119e120
    e121e122e123e124
    e125e126e127e128
    e129e130e131e132
    e133e134e135e136
    e137e138e139e140
    e141e142e143e144
    e145e146e147e148
    e149e150e151e152
    e153e154e155e156
    e157e158e159e160
    e161e162e163e164
    e165e166e167e168
    e169e170e171e172
    e173e174e175e176
    e177e178e179e180
    e181e182e183e184
    e185e186e187e188
    e189e190e191e192
    e193e194e195e196
    e197e198e199e200
    e201e202e203e204