Перейти к публикации

Топ новостей за период и определённой категории


Рекомендованные сообщения

сайта в сетевой локации

лицензия http://dle-news.ru/user/mr.8pa4/

есть модуль вывода популярных новостей из определённой категории ... сам работает отлично ... только вот одно но

вставляю дополнительное поле (в нём картинка) путь к ней пишется но каряво

вставляет " как это исправить ? ... заранее спасибо.

<img src=""http://сайт.b...4581_419633.jpg"" border=""0"" width=""120"" height=""170"" tooltip=""{title}"">

УСТАНОВКА:

1.) Открываем файл /engine/cache/.htaccess и заменяем две написанных там строчки на:

Order Deny,Allow

#Deny from all

<Files *.tmp>

Deny from all

</Files>

<Files ".(jpg|gif|png)$">

Allow from all

</Files>

2.) Создаём файл films_top.php записываем в него ниже написанное и загружаем engine/modules на сервер .

МОДУЛЬ:

<?php
if ( ! defined('DATALIFEENGINE') ) {
die( "Hacking attempt!" );
}
------------------------------------------*/
/****************** НАСТРОЙКИ МОДУЛЯ *************************/
//----------------------------------------//
//!!!!!ОБЯЗАТЕЛЬНАЯ ПЕРЕМЕННАЯ УКАЗЫВАЕМАЯ В СТРОКЕ ПОДКЛЮЧЕНИЯ!!!!(для кеширования каждого блока в отдельности) &block_num=1 - число или текст, особой разницы нет, главное что бы было уникально для каждого блока, из значения этой же переменной будет составляться id блока с новостями.
//----------------------------------------//
if(!is_numeric($day)) $day = 7; //Временной период для отбора новостей (дни). Например если нужно вывести новости за неделю - укажите 7.
if(!is_string($top_cat)) $top_cat = "14"; //Категории, из которых брать новости.(перечислять через чёрточку).
if(!is_numeric($news_num)) $news_num = 30; //Сколько будем брать новостей для топа.
if(!is_string($top_field)) $top_field = "mini_poster"; //Указываем тут имя дополнительного поля, из которого будет выводиться ссылка на картинку (или ещё чтонибудь).
if(!is_string($showcomments)) $showcomments = ""; //Показывать количество комментариев к новости.
if(!is_numeric($title_length)) $title_length = 300; //Кол-во символов в заголовке
if(!is_numeric($story_length)) $story_length = 0; //Кол-во символов в описании
if(!is_string($img_show)) $img_show = ""; //Если поставить yes - будет брать картинку из новости. Если не нужна оставить пустым.
if(!is_numeric($t_img_w)) $t_img_w = 120; //Ширина картинки
if(!is_numeric($t_img_h)) $t_img_h = 170; //Высота картинки

//Строка подключения модуля может выглядить примерно вот так ... где &block_num=1 это уникальное значение для переменной block_num, цифры или буквы, разницы нет. {include file="engine/modules/films_top.php?&block_num=1"}

/*************Дальше не нужно ничего трогать *****************/
$config['allow_cache'] = "yes";
$adv_top = dle_cache("adv_top_".$block_num, $config['skin']);
if( !$adv_top ) {
//начало кода модуля
$tooday = date ('Y-m-d H:i:s', $_TIME); //Определяем сегодняшний день
$news_day = " AND date <= '$tooday'"; //Запрет вывода новости на не наступившую дату.
if ($day) $news_day .= "AND date > '$tooday' - INTERVAL {$day} DAY"; //Если задан параметр $day - берём новости за указанный промежуток


$top_categ = str_replace('-', '|', $top_cat); //заменяем чёрточки на палочки :-)
$show_cat = ""; //По умолчанию выводим все категории
if ($top_cat) $show_cat = "AND category regexp '[[:<:]]($top_categ)[[:>:]]'"; //Если задан параметр $top_cat - берём новости только из определённых категорий
$tb = $db->query("SELECT id, category, title, short_story, xfields, comm_num, date, flag, alt_name FROM ".PREFIX."_post WHERE approve {$show_cat} {$news_day} ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,".$news_num);
while ($row = $db->get_row($tb)) {
$t_comm_num =""; //по умолчанию не выводим информацию о количестве комментариев
if ($showcomments) {$t_comm_num = '('.$row['comm_num'].')';} //Если задан параметр $showcomments - показываем в скобках кол-во комментариев к новости
//обработка допполей ->

$xf_t_val = "";
if ($top_field){
$xfieldsdata = xfieldsdataload( $row['xfields'] );
$xf_t_val = $xfieldsdata[''.$top_field.''];
}
// <- обработка допполей

$t_title = stripslashes($row['title']);
$full_title = $t_title;
if( strlen( $t_title ) > $title_length ) $t_title = substr( $t_title, 0, $title_length ) . " ..."; //--обрезка заголовка
$t_story = strip_tags(str_replace(array('<br>','<br />')," ",$row['short_story'])); //-- замена переносов на пробелы
if( strlen( $t_story ) > $story_length ) $t_story = substr( $t_story, 0, $story_length ) . " ..."; //--обрезка содержания
//формирование ссылки на новость ->

$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 ) {
$t_link = $config['http_home_url'] . get_url( $row['category'] ) . "/" . $row['id'] . "-" . $row['alt_name'] . ".html";
} else {
$t_link = $config['http_home_url'] . $row['id'] . "-" . $row['alt_name'] . ".html";
}
} else {
$t_link = $config['http_home_url'] . date( 'Y/m/d/', $row['date'] ) . $row['alt_name'] . ".html";
}
} else {
$t_link = $config['http_home_url'] . "index.php?newsid=" . $row['id'];
}
// < - формирование ссылки на новость
$image = ""; //по умолчанию не выводим картинку
if ($img_show) { //Если задан параметр $img_show - будет браться первая картинка из shortstory и обрезаться через crop до заданных размеров
preg_match("#<img.+?src=['\"](.+?)[']#is", $row['short_story'], $match);

if($match[1]){
$dir = ROOT_DIR . '/engine/cache/';
$file_name = strtolower ( basename ( $match[1] ));
$file_name = $t_img_w."x".$t_img_h."_".$file_name;
if (!file_exists($dir.$file_name)) {
require_once ENGINE_DIR . '/classes/thumb.class.php';
$thumb = new thumbnail( $match[1] );
$thumb->crop( $t_img_w, $t_img_h );
$thumb->save( $dir . $file_name );
}
$image = '<div class="t_image"><img src="'.$config['http_home_url']."engine/cache/".$file_name.'" alt="'.$ttl.'" /></div>';
}else $image = '<div class="t_image"><img src="{THEME}/images/nothumb.gif" alt="'.$ttl.'" width="'.$t_img_w.'" height="'.$t_img_h.'" /></div>'; //Если в новости нет картинки - будет выводиться "заглушка"
}

$top_adv .= $image.'<div class="t_news"><h5><a href="'.$t_link.'" title="'.$full_title.'">'.$t_title.'</a> '.$t_comm_num.'</h5><div class="t_story">'.$t_story.'</div>'.$xf_t_val.'</div>';
};
if ($top_adv == "") {
$adv_top = '<div id="top_block_'.$block_num.'">По указанному критерию материалов нет</div>'; //Если по заданным критериям нет ни одной новости - будет выведено это сообщение.
}
else {
$adv_top = '<div id="top_block_'.$block_num.'">'.$top_adv.'</div>';
}
create_cache("adv_top_".$block_num, $adv_top, $config['skin'] );
}
echo $adv_top;
?>[/php]

Изменено пользователем mr.8pa4
Ссылка на сообщение
Поделиться на других сайтах

тема закрыта

нашел проблему и теперь всё работает

если кого то интересует ... данный модуль ... пишите расскажу и помогу

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...
  • 6 месяцев спустя...


//обработка допполей ->

$xf_t_val = "";

  if ($top_field){

$xfieldsdata = xfieldsdataload( $row['xfields'] );

$xf_t_val = $xfieldsdata[''.$top_field.''];

}

// <- обработка допполей



//обработка допполей ->


$xf_t_val = "";

if ($top_field) {

    $xfieldsdata = xfieldsdataload($row['xfields']);

    $xf_t_val = str_replace('\"', '', $xfieldsdata[$top_field]); //$xf_t_val - это переменная, возвращающая значение дополнительного поля

}

// <- обработка допполей

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...