• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь topnews из определённой категории (немного изменить код модуля)

Статус
В этой теме нельзя размещать новые ответы.

Damasc

Участник
Регистрация
5 Мар 2009
Сообщения
174
Реакции
6
Доброго дня уважаемые форумчане!

Нашёл модуль, который идеально подойдёт под мои запросы:

_http://my-dle.ru/1088-topnews-s-shablonom.html

Он выводит новости из topnews с использованием шаблона.

Помогите немного доработать этот модуль. Требуется вывод из определённых категорий (например категория 5,7,15), а не из всех как у него по умолчанию.

Код модуля:

PHP:
<?php
/*
=====================================================
 DataLife Engine - by SoftNews Media Group
 Mod by Олег Одоевский a.k.a Sander
 ICQ: 404-037-556
 http://nfhelp.ru/
-----------------------------------------------------
 http://dle-news.ru/
-----------------------------------------------------
 Copyright (c) 2004,2010 SoftNews Media Group
=====================================================
 Данный код защищен авторскими правами
=====================================================
 Файл: topnews.php
-----------------------------------------------------
 Назначение: вывод рейтинговых статей (улучшенная сортировка)
=====================================================
*/
if(!defined('DATALIFEENGINE')) die("Hacking attempt!");

################################# Настройки ############################################
$cut_titile=	0;			// На сколько символов обрезать заголовок. Поставить ноль, чтобы заголовок не обрезало
$last_days=	1;			// Выбирать новости не старше * дней
$count_news=	4;			// Сколько новостей выводить в блоке.

############################## Дальше не трогать! #######################################
$topnews=dle_cache("topnews",$config['skin']);
if(!$topnews){$this_month=date('Y-m-d H:i:s',$_TIME);
$last_days=intval($last_days);$last_days=($last_days)?$last_days:31;
$count_news=intval($count_news);$count_news=($count_news)?$count_news:10;
$db->query( "SELECT id, title, date, alt_name, category, flag, autor, news_read, comm_num, short_story FROM " . PREFIX . "_post WHERE approve AND date>='$this_month' - INTERVAL ".$last_days." DAY AND date<'$this_month' ORDER BY (rating+1)*news_read DESC, comm_num DESC, date DESC LIMIT 0,".$count_news );
while($row=$db->get_row()){
$row['date']=strtotime($row['date']);$row['category']=intval($row['category']);
if($config['allow_alt_url']=="yes"){
if($row['flag'] and $config['seo_type']){
if($row['category'] and $config['seo_type']== 2) $full_link=$config['http_home_url'].get_url($row['category'])."/".$row['id']."-".$row['alt_name'].".html";
else $full_link=$config['http_home_url'].$row['id']."-".$row['alt_name'].".html";
}else $full_link=$config['http_home_url'].date('Y/m/d/',$row['date']).$row['alt_name'].".html";
}else $full_link=$config['http_home_url']."index.php?newsid=".$row['id'];
if(date(Ymd,$row['date'])==date(Ymd,$_TIME)) $date=$lang['time_heute'].langdate(", H:i",$row['date']);
elseif(date(Ymd,$row['date'])==date(Ymd,($_TIME-86400))) $date=$lang['time_gestern'].langdate(",H:i",$row['date']);
else $date=langdate($config['timestamp_active'],$row['date']); $cut_titile=intval($cut_titile);
if($cut_titile AND strlen($row['title'])>$cut_titile) $title=stripslashes(substr($row['title'],0,$cut_titile)." ...");
else $title=stripslashes($row['title']);
$go_page=($config['ajax'])?"onclick=\"DlePage('newsid=".$row['id']."');return false;\"":"";
if($config['allow_comments_wysiwyg']=="yes") $go_page='';

$tpl->load_template('topnews.tpl');$tpl->set('{title}',$title);
$tpl->set('{author}',$row[autor]);
$tpl->set('{short-story}',$row[short_story]);
$tpl->set('{date}',$date);$tpl->set('{views}',intval($row['news_read']));
$tpl->set('{comments-num}',intval($row['comm_num']));
$tpl->set('[full-link]',"<a ".$go_page." href=\"" . $full_link . "\" title=\"".$title."\">");$tpl->set('[/full-link]',"</a>");
$tpl->compile('topnews');}$topnews = $tpl->result['topnews'];
$db->free();$tpl->clear();create_cache( "topnews", $topnews, $config['skin'] );}
?>

Я его немного поправил, теперь он выводит и текст из новости.

автор скрипта ответил вот как:

Sander (14:37:49 27/10/2010)
используя значение переменной $categroy_id
и regexp в mysql запросе



помогите, очень нужно!
 
Поставьте S-blocks и не мучайтесь...
 
пробуй в файле мода поправить строчку например так:
PHP:
	$db->query( "SELECT id, title, date, alt_name, category, short_story, flag FROM " . PREFIX . "_post WHERE approve='1' AND category='18' OR category='18,16,17' OR category='18,16' OR category='18,17' 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,21" );
точнее к запросам БД добавить выборку по каким именно категориям выводить новости, в данном случае (что я привел) - это category='18' OR category='18,16,17' (последнее - при использовании мультикатегорий...)
PS изменял так в стандартном модуле топ новостей, работало нормально :)
 
супер, работает! А возможно сделать этому блоку кеширование?
 
супер, работает! А возможно сделать этому блоку кеширование?
в пхп я не силен, но думаю по нижней строчки
PHP:
$db->free();$tpl->clear();create_cache( "topnews", $topnews, $config['skin'] );}
должно идти кэширование содержимого этого блока.
 
Должно, но не кешируется, ладно попробую разобраться сам, спасибо огромное!
 
Должно, но не кешируется, ладно попробую разобраться сам, спасибо огромное!
попробуй внизу удалить $tpl->clear();
В стандартом топе новостей внизу прописано:
PHP:
	$db->free();
	create_cache( "topnews", $topnews, $config['skin'] );
т.е. без $tpl->clear();
может быть из-за этого и не кэшируется...?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху