Модуль вывод рандомной картинки из новостей 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'] ); } ?> |
код кидаем в файл randimg.php и кладем его в папку engine/modules
в main.tpl в нужное место вставляем {randimg} вроде все
размеры картинки настраиваются в самом файле randimg.php
На 9.2 не робит.
ошибка строка 13
делал именно на 9.2 так-что просто вы чтото не так сделали или тупо решили пофлудить тут
А как сделать что бы только с 1 или 2 категорий брали новости? А то не найду строчки…
$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" );
Спасибо огромное, вечный скрипт
лучше чем topnews_mod.php, он не всегда идет и нельзя его размножить, а из Вашего можно 3 таких сделать и разные, как хочу, большой респект Вам
На здоровье
zalex суперские у вас хаки для вывода картинок с новостей, для похожих в полной уже поставил — прям неналюбуюсь :), а где в этом прописать даты определенные для рандомной картинки, просто у меня на сайте до осени 2010 на фотохостингах хранились все изображения) после уже на своем сервере
c фотохостингов половина битые, не хочу чтоб они попадались, поэтому как прописать рандом с осени до настоящего времени.
замените запрос
на этот код
смысл думаю понятен
Спасибо за модуль, хороший! Но как сделать так что бы картинки менялись при каждом обновлении станицы? А в приведенном модуле они кэшируются и при обновлении страницы не меняются. Обновление происходит только после очистки кэша в админке.
Кажется разобрался, в файле randimg.php, после
if( ! defined( ‘DATALIFEENGINE’ ) ) {
die( «Hacking attempt!» );
}
вставить clear_cache();
Но не уверен, что данный метод верен, так как он очищает кэш после каждого обращения к функции, а т.е. после каждой перезагрузки страницы. С таким успехом можно просто отключить кэширование. Может подскажите как быть в этом случае?
Приношу извинения за спам, но кажется допер, полазив по исходникам самого движка. может кому тоже будет полезно узнать, для очистки кэша, только в пределах данного модуля нужно как я писал выше добавить туже строку, только немного модифицированную — clear_cache(‘randimg_’); И все, остальной кэш останется нетронутым, а картинки будут обновляться при каждом обновлении страницы.
А как сделать чтоб картинки брались с доп. поля?
Мен, спасибо огромное за скрипт! Подписался на блог, надеюсь и дальше будешь радовать полезными постами.
Алексей, подскажи, пожалуйста, почему в fullstory модуль {randimg} не работает?
И как сделать чтобы заработал?
а ты его в fullstory вставляешь чтоли он там работать не будет точнее можно сделать конечно но надо кувырять showfull.php