Делюсь своим решением.
Иногда возникает необходимость прорекламировать определенные релизы. Это может быть, например, как показ самых закачиваемых релизов, так и наоборот.
В своем примере я покажу как показывать в целях рекламы n случайных постеров. (в моем случае это 10)
Клик по картинке переносит нас на соответствующую раздачу
Как это выглядит смотрим ЗДЕСЬ (смотрите на центральный блок в самом верху )
Далее описываю все подробно (для тех кто заинтересовался)
для начала качаем необходимые файлы ОТСЮДА
1.Содержимое архива (там папка "banner") копируем в каталог в котором живет ваш сайт (у меня это http://мой_сайт/forum)
2.Если у вас сервер отличный от Windows устанавливаем CHMOD 666 на файл images.xml внутри папки
3.Создаем в папке portal/block файл images.php и заполняем его следующим кодом
Код: Выделить всё
<?php
$imgtxt = '';
//Создаем запрос в базу на предмет выбора из нее прикрепленных файлов которые в имени содержат слово POSTER и расширением НЕ torrent
$query=$db->sql_query("SELECT
a.attach_id, a.post_msg_id, a.extension, a.real_filename, p.post_subject, a.physical_filename, p.topic_id, p.forum_id
FROM
".ATTACHMENTS_TABLE." a
INNER JOIN ".POSTS_TABLE." p ON a.post_msg_id = p.post_id
WHERE
a.extension <> 'torrent' AND a.real_filename LIKE '%poster%'
ORDER BY
RAND()
LIMIT
0, 10");
//Файлы выбираются случайным образом а их количество регулируется последней циферкой в запросе
//Определяем массив нужных нам файлов чтобы потом профильтровать результаты отбора
$image_ext=array('gif', 'jpeg', 'jpg', 'png');
$imgtxt .= '<images>';
while($row=$db->sql_fetchrow($query))
{
if(in_array($row['extension'], $image_ext))
{
// Не забываем менять =ваш-сайт= на свое значение
$imgsrc = append_sid("http://ваш_сайт/forum/download/file.$phpEx", 'id=' . $row['attach_id']);
$topicsrc = append_sid('http://ваш_сайт/forum/viewtopic.' . $phpEx . '?t=' . $row['topic_id'] . '&f=' . $row['forum_id']);
$imgtxt .= '<image url = "'.$imgsrc.'" link = "'.$topicsrc.'" target="_blank" title = "'.$row['post_subject'].'"></image>';
}
}
$imgtxt .= '</images>';
$db->sql_freeresult($query);
$erase=fopen($phpbb_root_path."banner/images.xml",'w+');
#Открываем файл с ключём "w+" - это значит, что данные файла обнуляются и на их место мы записываем новые данные
flock($erase,2);
#Запираем файл для записи
fputs($erase,$imgtxt);
#Записываем в файл данные
flock($erase,3);
fclose($erase);
?>
находим
Код: Выделить всё
if ($load_center)
{
Код: Выделить всё
include($phpbb_root_path . 'portal/block/images.' . $phpEx);
должно получиться так
Код: Выделить всё
<script type="text/javascript" src="http://posrednik.dkm.dp.ua/forum/banner/swfobject.js"></script>
<script type="text/javascript">
var flashvars = {};
flashvars.settingsXML = "http://ваш_сайт/forum/banner/settings.xml";
var params = {};
params.scale = "noscale";
params.salign = "tl";
params.wmode = "transparent";
var attributes = {};
swfobject.embedSWF("http://ваш_сайт/forum/banner/coverflow.swf", "CoverFlowDiv", "600", "200", "9.0.0", false, flashvars, params, attributes);
</script>
</head>
Код: Выделить всё
<!-- [+] center block area -->
<td valign="top">
Код: Выделить всё
<div id="CoverFlowDiv" align="center">
<a href="http://www.adobe.com/go/getflashplayer">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
</a>
</div>
Сохраняем все измененные файлы. В админке обновляем шаблоны измененной темы
Открываем свой портал и все должно работать.
Вы спросите: Почему код не достаточно оптимизирован? Отвечу: сделано все на коленке за 15 минут. Если кто оптимизирует код я буду только признателен.
Далее. Есть еще одна интересность. Если зайти через броузер по адресу http://ваш_сайт/forum/banner вы увидите на отдельной страничке работающий блок с последними отобранными данными. Следовательно это можно использовать как рекламу своих раздач на сторонних сайтах например в подписях к форуму.
P.S. В решении данного примера использован Свободно Распространяемый Flash компонент от сайта FlashXML.net. Об этом свидетельствует их логотип в верхнем левом уголке блока. Чтобы от него избавиться - нужно купить платную версию