Модуль вывод рандомной картинки из новостей DLE

вот набросал вроде работает небольшой модуль для ДЛЕ
в index.php в корне сайта после

1
$tpl->set ( '{calendar}', $tpl->result['calendar'] );

прописываем

1
2
require_once ROOT_DIR.'/engine/modules/randimg.php'; 
$tpl->set ( '{randimg}', $randimg );

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php 
/* 
 Файл: randimg.php 
----------------------------------------------------- 
 Назначение: рандомный вывод картинок из новостей 
===================================================== 
*/ 
 
if( ! defined( 'DATALIFEENGINE' ) ) { 
    die( "Hacking attempt!" ); 
} 
 
$randimg = dle_cache( "randimg", $config['skin'] ); 
 
if( ! $randimg ) { 
 
    $db->query( "SELECT id, short_story, title, date, alt_name, category, flag FROM " . PREFIX . "_post WHERE approve='1' ORDER BY RAND() LIMIT 1" ); 
 
    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( strlen( $row['title'] ) > 55 ) $title = substr( $row['title'], 0, 55 ) . " ..."; 
        else $title = $row['title'];  
 
        $short = stripslashes($row['short_story']); 
 
        preg_match('/src=\"(.*?)\"/',$short,$image); 
        $img=trim($image[1]); 
 
        if($img!=''){$imag="<img align=\"left\" style = \" width: auto; height: 120px; margin-right:5px;\" src=\"".$img."\"/>";}else {$imag="<img align=\"left\" style = \" width: auto; height: 120px; margin-right:5px;\" src=\"uploads/noimage.jpg\"/>";} 
    $randimg .= "<div><a href=\"" . $full_link . "\">".$imag."</a></div><br>"; 
 
    } 
 
    $db->free(); 
    create_cache( "randimg", $randimg, $config['skin'] ); 
} 
?>

код кидаем в файл .php и кладем его в папку engine/modules
в main.tpl в нужное место вставляем {randimg} вроде все
размеры настраиваются в самом файле randimg.php

16 Responses
  1. Bloom:

    На 9.2 не робит.

  2. Bloom:

    ошибка строка 13

  3. делал именно на 9.2 так-что просто вы чтото не так сделали или тупо решили пофлудить тут

  4. sergey:

    А как сделать что бы только с 1 или 2 категорий брали новости? А то не найду строчки…

  5. $db->query( "SELECT id, short_story, title, date, alt_name, category, flag FROM " . PREFIX . "_post WHERE approve='1' ORDER BY RAND() LIMIT 1" );
    в этом запросе править сделайте так
    $db->query( "SELECT id, short_story, title, date, alt_name, category, flag FROM " . PREFIX . "_post WHERE approve='1' AND category='1' ORDER BY RAND() LIMIT 1" );

  6. sergey:

    Спасибо огромное, вечный скрипт :) лучше чем topnews_mod.php, он не всегда идет и нельзя его размножить, а из Вашего можно 3 таких сделать и разные, как хочу, большой респект Вам :)

  7. На здоровье :)

  8. Rs:

    zalex суперские у вас хаки для вывода картинок с новостей, для похожих в полной уже поставил — прям неналюбуюсь :), а где в этом прописать даты определенные для рандомной картинки, просто у меня на сайте до осени 2010 на фотохостингах хранились все изображения) после уже на своем сервере :) c фотохостингов половина битые, не хочу чтоб они попадались, поэтому как прописать рандом с осени до настоящего времени.

  9. замените запрос

     $db->query( "SELECT id, short_story, title, date, alt_name, category, flag FROM " . PREFIX . "_post WHERE approve='1' ORDER BY RAND() LIMIT 1" );

    на этот код

    $start = '2010-10-01 00:00:00'; //ваша дата с котрой начать показывать
    $db->query( "SELECT id, short_story, title, date, alt_name, category, flag FROM " . PREFIX . "_post WHERE approve='1' AND date > '$start' ORDER BY RAND() LIMIT 1" );

    смысл думаю понятен :)

  10. Dalong:

    Спасибо за модуль, хороший! Но как сделать так что бы картинки менялись при каждом обновлении станицы? А в приведенном модуле они кэшируются и при обновлении страницы не меняются. Обновление происходит только после очистки кэша в админке.

  11. Dalong:

    Кажется разобрался, в файле randimg.php, после
    if( ! defined( ‘DATALIFEENGINE’ ) ) {
    die( «Hacking attempt!» );
    }
    вставить clear_cache();

    Но не уверен, что данный метод верен, так как он очищает кэш после каждого обращения к функции, а т.е. после каждой перезагрузки страницы. С таким успехом можно просто отключить кэширование. Может подскажите как быть в этом случае?

  12. Dalong:

    Приношу извинения за спам, но кажется допер, полазив по исходникам самого движка. может кому тоже будет полезно узнать, для очистки кэша, только в пределах данного модуля нужно как я писал выше добавить туже строку, только немного модифицированную — clear_cache(‘randimg_’); И все, остальной кэш останется нетронутым, а картинки будут обновляться при каждом обновлении страницы.

  13. Fantom_v:

    А как сделать чтоб картинки брались с доп. поля?

  14. Satir:

    Мен, спасибо огромное за скрипт! Подписался на блог, надеюсь и дальше будешь радовать полезными постами.

  15. CrazyMakc:

    Алексей, подскажи, пожалуйста, почему в fullstory модуль {randimg} не работает?
    И как сделать чтобы заработал?

  16. а ты его в fullstory вставляешь чтоли он там работать не будет точнее можно сделать конечно но надо кувырять showfull.php

Leave a Reply

You must be logged in to post a comment.