Дублирование новостей в Top News (dle)

S
На сайте с 18.10.2013
Offline
1
912

Добрый вечер!

Установил на сайт с движком DLE 10 шаблончик MultiFun и сразу столкнулся с проблемой совместимости. оказалось шаблончик писан под DLE 9.4 и скрипт topnews.php не работает должным образом.

Скрипт переписал (адаптировал под десятку) но появилась дубликация новостей...

Самое интересное, что дулируются только те новости, в которых есть миниатюра (картинка).

Вот оригинал topnews.php:

<?php $sql_result = $db->query( "SELECT id, title, date, alt_name, category, short_story, flag FROM " . PREFIX . "_post WHERE approve='1' ORDER BY rating DESC LIMIT 0,20" );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'];}$title = substr( $row['title'], 0, 20 ) . "...";$short_story = substr( strip_tags($row['short_story']), 0, 40 )."...";echo('<dl><dt><a href="'.$full_link.'"><span></span></a></dt><dd><a href="'.$full_link.'" class="toplink">'.$title.'</a><p>'.$short_story.'</p></dd></dl>');$shortnews = $row['short_story'];preg_match_all( '#<img[^>]*\\ssrc=(\'|")(.*?)\\1.*?>#i',$shortnews,$total);foreach( $total[2] as $image )echo('<dl><dt><a href="'.$full_link.'"><span><img src="'.$image.'" /></span></a></dt><dd><a href="'.$full_link.'" class="toplink">'.$title.'</a><p>'.$short_story.'</p></dd></dl>');} ?>

Вот адаптированный:

<?php $sql_result = $db->query( "SELECT p.id, p.date, p.short_story, p.xfields, p.title, p.category, p.alt_name FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE p.approve=1 ORDER BY news_read DESC, comm_num DESC, rating DESC, date DESC LIMIT 0,10" ); while ( $row = $db->get_row()){$row['date'] = strtotime( $row['date'] );$row['category'] = intval( $row['category'] );if( $config['allow_alt_url'] == "yes"){if( $config['seo_type'] == 1 OR $config['seo_type'] == 2 ) {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'];}$title = substr( $row['title'], 0, 20 ) . "...";$short_story = substr( strip_tags($row['short_story']), 0, 40 )."...";echo('<dl><dt><a href="'.$full_link.'"><span></span></a></dt><dd><a href="'.$full_link.'" class="toplink">'.$title.'</a><p>'.$short_story.'</p></dd></dl>');$shortnews = $row['short_story'];preg_match_all( '#<img[^>]*\\ssrc=(\'|")(.*?)\\1.*?>#i',$shortnews,$total);foreach( $total[2] as $image )echo('<dl><dt><a href="'.$full_link.'"><span><img src="'.$image.'" /></span></a></dt><dd><a href="'.$full_link.'" class="toplink">'.$title.'</a><p>'.$short_story.'</p></dd></dl>');} ?>

Ну и скрин:

S
На сайте с 18.10.2013
Offline
1
#1

Ну неужели нет знатаков?

дани мапов
На сайте с 06.09.2012
Offline
204
#2

В стандартном шаблоне тоже дублируется?

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
S
На сайте с 18.10.2013
Offline
1
#3
В стандартном шаблоне тоже дублируется?

На удивление и вопреки настройкам, выводится только 1 новость...

---------- Добавлено 19.10.2013 в 21:21 ----------

Ну тут скорее всего все нормально, так как популярность этого поста в том, что я его последним редактировал.

---------- Добавлено 19.10.2013 в 21:41 ----------

Вот решение:

<?php $sql_result = $db->query( "SELECT p.id, p.date, p.short_story, p.xfields, p.title, p.category, p.alt_name FROM " . PREFIX . "_post p WHERE p.approve=1 ORDER BY date DESC LIMIT 0,10" );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'];}$title = substr( $row['title'], 0, 50 ) . "...";$short_story = substr( strip_tags($row['short_story']), 0, 40 )."...";
$shortnews = $row['short_story'];
preg_match_all( '#<img[^>]*\\ssrc=(\'|")(.*?)\\1.*?>#i',$shortnews,$total);
echo('<dl><dt><a href="'.$full_link.'"><span>');
foreach( $total[2] as $image ) {
echo('<img src="'.$image.'"');
list($width, $height)=getimagesize($image);
$size=25;
if($width>$height) {
echo(' height="'.$size.'" />');
}
if($height>$width) {
echo(' width="'.$size.'" />');
}
if($height==$width) {
echo(' height="'.$size.'" width="'.$size.'" />');
}
}echo('</span></a></dt><dd><a href="'.$full_link.'" class="toplink">'.$title.'</a><p><a href="'.$full_link.'">'.$short_story.'</a></p></dd></dl>')
;}
// 3.0
?>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий