Данный материал предоставлен сайтом ProWebber.cc исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Скачать бесплатно topnews из определенной категории 4.
Скачать бесплатно topnews из определенной категории 4.
Для чего нужен хак:
Вывод рейтинговых новостей с описанием и картинкой.
Возможность вывода topnews из определённых категорий.
Изменения:
Переработана функция создания, тумбов.
Изменения нужно сделать в двух файлах:
В index.php перед:
$config['http_home_url'] = explode ( "index.php", strtolower ( $_SERVER['PHP_SELF'] ) );
Добавляем:
if ( stristr( $tpl->copy_template, "{topnews" ) ) {
$tpl->copy_template = preg_replace( "#\\{topnews category=['\"](.+?)['\"]\\}#ies", "topnews_print('\\1')", $tpl->copy_template );
}
В файле engine/modules/functions.php перед:
function langdate($format, $stamp) {
Добавляем функцию:
function topnews_print ($custom_category){
global $db;
$custom_category = $db->safesql(str_replace(',', '|', $custom_category));
if(!defined('DATALIFEENGINE'))
{
die("Hacking attempt!");
}
function get_img_basic($text){
preg_match('|<img(.*) src="([^"]*)"[^>]*>|is', $text, $out);
return $out[2];
}
$w = 64; // Ширина Картинки
$h = 64; // Высота Картинки
$topnews = dle_cache("topnews", $config['skin']);
if (!$topnews) {
$this_month = date ('Y-m-d', time()-(3600*24*27));
$db->query("SELECT id, title, short_story, date, alt_name FROM " . PREFIX . "_post WHERE approve='1' AND category regexp '[[:<:]]($custom_category)[[:>:]]' AND date >= '$this_month'AND date < '$this_month' + INTERVAL 1 MONTH ORDER BY rating DESC, comm_num DESC, news_read DESC, date DESC LIMIT 0,5");
while($row = $db->get_row()){
$row['date'] = strtotime($row['date']);
if (strlen($row['title']) > 55)
$title = substr ($row['title'], 0, 55)." ...";
else
$title = $row['title'];
$not_resized_image = get_img_basic($row['short_story']);
$resized_image = ROOT_DIR.'/uploads/topnews/'.basename($not_resized_image);
if (!file_exists( $resized_image )) { cropImage($w, $h, $not_resized_image, $resized_image);}
$img_t= str_replace('thumbs/','',$not_resized_image);
$images = '<img src="'.$config['http_home_url'].'/uploads/topnews/'.basename($not_resized_image).'" border="0" alt="'.$title.'">';
$go_page = ($config['ajax']) ? "onclick=\"DlePage('newsid=".$row['id']."'); return false;\" " : "";
if ($config['allow_alt_url'] == "yes")
$link = "<a {$go_page}href=\"". "/" .$row['id']."-".$row['alt_name'].".html\">".stripslashes($title)."</a>";
else
$link = "<a {$go_page}href= \"". "/" .date('Y/m/d/', $row['date']).$row['alt_name'].".html\">".stripslashes($title)."</a>";
$topnews .= "» ".$link."<br />";
$row['short_story'] = preg_replace("/\[attachment=[[:digit:]]*\]/si","",stripslashes($row['short_story']));
$row['short_story'] = preg_replace("/<!--*-->/si","",$row['short_story']);
$row['short_story'] = strip_tags($row['short_story']);
if( strlen( $row['short_story'] ) > 106 ) $row['short_story'] = substr( $row['short_story'], 0,106 ) . " ... <a {$go_page}href= \"". "/" .date('Y/m/d/', $row['date']).$row['alt_name'].".html\" style=\"font-size:12px\">Читать далее »</a>";
$topnews .= '<table width="98%" border="0" style="border-bottom: 1px dotted #E1E1E1;">
<td width="1" height=1" align="center" valign="top">'.$images.'</td>
<td width="98%" valign="top" style="padding-left: 1px; padding-bottom: 1px; font-size:13px">
'.stripslashes($row['short_story']).'</td>
</tr>
</table>';
}
$db->free();
create_cache ("topnews", $topnews, $config['skin']);
}
return $topnews;
}
function cropImage($nw, $nh, $source, $dest)
{
$size = getimagesize($source);
$w = $size[0];
$h = $size[1];
$stypeArr = explode( '.', $source );
$stype = strtolower( end($stypeArr) );
switch($stype)
{
case 'gif':
$simg = imagecreatefromgif($source);
break;
case 'jpeg':
$simg = imagecreatefromjpeg($source);
break;
case 'jpg':
$simg = imagecreatefromjpeg($source);
break;
case 'png':
$simg = imagecreatefrompng($source);
break;
}
$dimg = imagecreatetruecolor($nw, $nh);
$wm = $w/$nw;
$hm = $h/$nh;
$h_height = $nh/2;
$w_height = $nw/2;
if($w> $h)
{
$adjusted_width = $w / $hm;
$half_width = $adjusted_width / 2;
$int_width = $half_width - $w_height;
imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);
}
elseif( ($w <$h) || ($w == $h) )
{
$adjusted_height = $h / $wm;
$half_height = $adjusted_height / 2;
$int_height = $half_height - $h_height;
imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);
}
else
{
imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);
}
imagejpeg($dimg,$dest,85);
}
Создаём на сервере папку uploads/topnews/ и ставим на нее права 777
в папке uploads/topnews/ создаем файл .htaccess со следующим содержанием:
RewriteEngine Off
<FilesMatch ".*">
Order allow,deny
Deny from all
</FilesMatch>
<FilesMatch ".(gif|jpg|png|jpeg|bmp)$|^$">
Order deny,allow
Allow from all
</FilesMatch>
ErrorDocument 403 http://site.ru/uploads/topnews/blank.gif
ErrorDocument 404 http://site.ru/uploads/topnews/blank.gif
Ну и соответсвенно создаем blank.gif под свои требования - эта картинка нужна на тот случай, если самой картинки в новости нет.
Популярные новости выводим тегом:
{topnews category="ID категории"}
Пример:
{topnews category="1,2,3"}
Проверено на версии 8.3
Автор: zuluman
Сайт автора: _http://donbass.name/