Помощь Популярные новости с картинкой(выводит только одну)

Тема в разделе "DLE", создана пользователем yavasilek, 8 июн 2011.

Информация :
Актуальная версия DataLife Engine 11.3
( Final Release v.11.3 | Скачать DataLife Engine | Скачать 11.3 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.2 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.178
    Симпатии:
    423
    Здравствуйте.
    Решил допилить для себя мод для вывода топовых новостей с картинкой.
    Проблема с кешированием, а именно убирая его - выводит как надо 5ть. Если добавляю кеширование, то кеширует только одну новость.
    Код:
    <?php
    if( ! defined( 'DATALIFEENGINE' ) ) {
    	die( "Hacking attempt!" );
    }
    $topnews_mod = dle_cache( "topnews_mod", $config['skin'] );
    if( !$topnews_mod) {
    	$this_month = date( 'Y-m-d H:i:s', $_TIME );
    	$db->query( "SELECT id, title, date, alt_name, category, short_story, flag FROM " . PREFIX . "_post WHERE approve='1' 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,5" );
    	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, 40 ) . "...";$short_story = substr( strip_tags($row['short_story']), 0, 0 )."...";
    		$shortnews = $row['short_story'];
    		preg_match_all( '#<img[^>]*\\ssrc=(\'|")(.*?)\\1.*?>#i',$shortnews,$total);
    		foreach( $total[2] as $image )
    		$topnews_mod=('<a href="'.$full_link.'"><table border="0" cellpadding="0" cellspacing="0">
    		<tbody><tr>
    		<td width="18" background="{THEME}/images/ram/tl.png" height="18">
    		</td>
    		<td background="{THEME}/images/ram/tm.png" height="18">
    		</td>
    		<td width="18" background="{THEME}/images/ram/tr.png" height="18">
    		</td>
    		</tr>
    		<tr>
    		<td width="18" background="{THEME}/images/ram/ml.png">
    		</td>
    		<td><img align="center" src="'.$image.'" width="235" height="360"></td>
    		<td width="18" background="{THEME}/images/ram/mr.png">
    		</td>
    		</tr>
    		<tr>
    		<td width="18" background="{THEME}/images/ram/bl.png" height="18">
    		</td>
    		<td background="{THEME}/images/ram/bm.png" height="18">
    		</td>
    		<td width="18" background="{THEME}/images/ram/br.png" height="18">
    		</td>
    		</tr>
    		</tbody></table>'.$title.'</a>');
    		echo $topnews_mod;
    		$db->free();
    		create_cache( "topnews_mod", $topnews_mod, $config['skin']);
    	}
    }
    else {
    	echo $topnews_mod;
    }
    ?>
    :nezn:
     
  2. killoff

    killoff CD тихо, и не DVD меня ;)

    Moderator
    Регистр.:
    13 май 2008
    Сообщения:
    2.167
    Симпатии:
    796
    версия дле какая? Как то проверял подобное на 9,0 - работало нормально... на версиях выше не пробовал.
     
  3. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.178
    Симпатии:
    423
    9.2 пишет в кеш походу только последнюю популярную, а остальные затирает ...
     
  4. killoff

    killoff CD тихо, и не DVD меня ;)

    Moderator
    Регистр.:
    13 май 2008
    Сообщения:
    2.167
    Симпатии:
    796
    попробуй сделать по аналогии со стандартными топами, изменив только вывод самих новостей:
    PHP:
    <?php
    if( ! defined'DATALIFEENGINE' ) ) {
        die( 
    "Hacking attempt!" );
    }
    $topnews_mod dle_cache"topnews_mod"$config['skin'] );
    if( !
    $topnews_mod === false ) {
        
    $this_month date'Y-m-d H:i:s'$_TIME );
        
    $db->query"SELECT id, title, date, alt_name, category, short_story, flag FROM " PREFIX "_post WHERE approve='1' 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,5" );
        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'] == ) {
                        
    $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'], 040 ) . "...";$short_story substrstrip_tags($row['short_story']), 0)."...";
            
    $shortnews $row['short_story'];
            
    preg_match_all'#<img[^>]*\\ssrc=(\'|")(.*?)\\1.*?>#i',$shortnews,$total);
            foreach( 
    $total[2] as $image )
            
    $topnews_mod=('<a href="'.$full_link.'"><table border="0" cellpadding="0" cellspacing="0">
            <tbody><tr>
            <td width="18" background="{THEME}/images/ram/tl.png" height="18">
            </td>
            <td background="{THEME}/images/ram/tm.png" height="18">
            </td>
            <td width="18" background="{THEME}/images/ram/tr.png" height="18">
            </td>
            </tr>
            <tr>
            <td width="18" background="{THEME}/images/ram/ml.png">
            </td>
            <td><img align="center" src="'
    .$image.'" width="235" height="360"></td>
            <td width="18" background="{THEME}/images/ram/mr.png">
            </td>
            </tr>
            <tr>
            <td width="18" background="{THEME}/images/ram/bl.png" height="18">
            </td>
            <td background="{THEME}/images/ram/bm.png" height="18">
            </td>
            <td width="18" background="{THEME}/images/ram/br.png" height="18">
            </td>
            </tr>
            </tbody></table>'
    .$title.'</a>');
            echo 
    $topnews_mod;
            
    $db->free();
            
    create_cache"topnews_mod"$topnews_mod$config['skin']);
        }
    }
    ?>
    Ещё можешь попробовать удалить в конце этого варианта кода строку
    PHP:
    echo $topnews_mod;
    сам не пробовал, если сработает - напиши :)
     
  5. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.178
    Симпатии:
    423
    неее. так вообще нифига нет ))
    а если у меня потирать echo $topnews_mod; то тогда как выводить инфу? у меня ведь без шаблона.
     
  6. killoff

    killoff CD тихо, и не DVD меня ;)

    Moderator
    Регистр.:
    13 май 2008
    Сообщения:
    2.167
    Симпатии:
    796
    тогда попробуй использовать http://www.4dle.ru/sel_mods/1147156881-top10-novostejj-v2.0.html
    бесплатно можно в гугле нарыть этот мод...
     
  7. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.178
    Симпатии:
    423
    этот вариант не подходит, т.к. необходимо модифицировать файлы движки, а я от этого отказался.
    Вопрос все еще открыт. Гуру!! Хелп ми:nezn:
     
  8. yavasilek

    yavasilek vasilek_gorbunok

    Регистр.:
    5 окт 2008
    Сообщения:
    1.178
    Симпатии:
    423
    готовое решение

    вот доделал до конца. Сохраняем в файл и инклудим в шаблон
    Код:
    <?php
    if( ! defined( 'DATALIFEENGINE' ) ) {
    	die( "Hacking attempt!" );
    }
    $topnews_mod_new = dle_cache( "topnews_mod_new", $config['skin'] );
    if( $topnews_mod_new === FALSE ) {
    	$this_month = date( 'Y-m-d H:i:s', $_TIME );
    	$db->query( "SELECT id, title, date, alt_name, category, short_story, flag FROM " . PREFIX . "_post WHERE approve='1' 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,5" );
    	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, 40 ) . "...";$short_story = substr( strip_tags($row['short_story']), 0, 0 )."...";
    		$shortnews = $row['short_story'];
    		preg_match_all( '#<img[^>]*\\ssrc=(\'|")(.*?)\\1.*?>#i',$shortnews,$total);
    		foreach( $total[2] as $image )
    		$topnews_mod=('<a href="'.$full_link.'"><table border="0" cellpadding="0" cellspacing="0">
    		<tbody><tr>
    		<td width="18" background="{THEME}/images/ram/tl.png" height="18">
    		</td>
    		<td background="{THEME}/images/ram/tm.png" height="18">
    		</td>
    		<td width="18" background="{THEME}/images/ram/tr.png" height="18">
    		</td>
    		</tr>
    		<tr>
    		<td width="18" background="{THEME}/images/ram/ml.png">
    		</td>
    		<td><img align="center" src="'.$image.'" width="235" height="360"></td>
    		<td width="18" background="{THEME}/images/ram/mr.png">
    		</td>
    		</tr>
    		<tr>
    		<td width="18" background="{THEME}/images/ram/bl.png" height="18">
    		</td>
    		<td background="{THEME}/images/ram/bm.png" height="18">
    		</td>
    		<td width="18" background="{THEME}/images/ram/br.png" height="18">
    		</td>
    		</tr>
    		</tbody></table>'.$title.'</a>');
    		$topnews_mod_new .= $topnews_mod;
    	}
    	$db->free();
    	create_cache( "topnews_mod_new", $topnews_mod_new, $config['skin']);
    	echo $topnews_mod_new;
    }
    else {
    	echo $topnews_mod_new;
    }
    ?>
     
Статус темы:
Закрыта.