Ротатор постеров на Flash

 • Просмотры: 3006
ma
manual
Поблагодарили: 2 раза
Сообщения: 46
Зарегистрирован: 25 май 2009, 11:09
Сообщение

Ротатор постеров на Flash

25 янв 2010, 12:12

Привет всем!

Делюсь своим решением.

Иногда возникает необходимость прорекламировать определенные релизы. Это может быть, например, как показ самых закачиваемых релизов, так и наоборот.
В своем примере я покажу как показывать в целях рекламы 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);
 
 
?>
4. Теперь нам нужно заставить систему отрабатывать этот файлик. Для этого открываем на редактирование файл portal.php
находим

Код: Выделить всё

if ($load_center)
{
и после скобки вставляем

Код: Выделить всё

include($phpbb_root_path . 'portal/block/images.' . $phpEx);
5. Теперь нужно отобразить блок на сайте. Для начала открываем на редактирование файл overall_header.html вашей любимой темы оформления и добавляем следующий код непосредственно перед тегом </ head >
должно получиться так

Код: Выделить всё

 
   <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>
6. Потом открываем на редактирование файл portal_body.html и после

Код: Выделить всё

<!-- [+] 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. Об этом свидетельствует их логотип в верхнем левом уголке блока. Чтобы от него избавиться - нужно купить платную версию :)
ma
manual
Поблагодарили: 2 раза
Сообщения: 46
Зарегистрирован: 25 май 2009, 11:09
Сообщение

Ротатор постеров на Flash

25 янв 2010, 12:24

если тема не в том разделе прошу модераторов перенести в правильный.

Жду отзывов от тех кто попробовал и протестировал :)
Аватара пользователя
serrrios
Благодарил (а): 11 раз
Поблагодарили: 119 раз
Сообщения: 1532
Зарегистрирован: 29 май 2009, 20:22
Сообщение

Ротатор постеров на Flash

25 янв 2010, 14:24

Прикрепить это дело к хеадеру, чтоб на форуме тоже отображалось =)
http://aniproject.ru - перспектива... велком епта..
http://www.ppkbb3cker.ru/viewtopic.php?f=35&t=1042 - мои платные услуги по трекеру.
ma
manual
Поблагодарили: 2 раза
Сообщения: 46
Зарегистрирован: 25 май 2009, 11:09
Сообщение

Ротатор постеров на Flash

25 янв 2010, 14:39

не вопрос
для этого в нужное место вставляем

Код: Выделить всё

<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>
Аватара пользователя
serrrios
Благодарил (а): 11 раз
Поблагодарили: 119 раз
Сообщения: 1532
Зарегистрирован: 29 май 2009, 20:22
Сообщение

Ротатор постеров на Flash

25 янв 2010, 16:23

Хых, попробуем =)
http://aniproject.ru - перспектива... велком епта..
http://www.ppkbb3cker.ru/viewtopic.php?f=35&t=1042 - мои платные услуги по трекеру.
so
sonneandsky
Благодарил (а): 1 раз
Поблагодарили: 3 раза
Сообщения: 178
Зарегистрирован: 05 июн 2009, 16:03
Сообщение

Ротатор постеров на Flash

25 янв 2010, 18:39

manual писал(а):Далее описываю все подробно (для тех кто заинтересовался)
Каким образом поставить нужные (определенные релизы)???
ma
manual
Поблагодарили: 2 раза
Сообщения: 46
Зарегистрирован: 25 май 2009, 11:09
Сообщение

Ротатор постеров на Flash

25 янв 2010, 19:36

тоже можно сделать.
в архиве есть файлик images.xml. Его мы динамически формируем на основании запроса. Если отказаться от динамического формирования и заполнить его руками - то получим определенный набор ссылок с картинками.
Количество тегов <image> в нем тоже отрегулируйте по надобности. Каждый такой тег - это одна картинка.

Вроде все просто
so
sonneandsky
Благодарил (а): 1 раз
Поблагодарили: 3 раза
Сообщения: 178
Зарегистрирован: 05 июн 2009, 16:03
Сообщение

Ротатор постеров на Flash

25 янв 2010, 20:00

manual писал(а):Вроде все просто
Может я не так выразился ;) , но не могу понять что нужно сделать кроме url в этом коде

Код: Выделить всё

<?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);


?>
 
Простите если задаю глупые вопросы
ma
manual
Поблагодарили: 2 раза
Сообщения: 46
Зарегистрирован: 25 май 2009, 11:09
Сообщение

Ротатор постеров на Flash

25 янв 2010, 21:27

sonneandsky, сложного и действительно ничего нет....

это код, который нужно разместить внутри файла images.php, и там действительно кроме URL своего сайта менять ничего не нужно. С помощью этого файла формируется images.xml который заполняется списком подлежащих отображению картинок
ma
manual
Поблагодарили: 2 раза
Сообщения: 46
Зарегистрирован: 25 май 2009, 11:09
Сообщение

Ротатор постеров на Flash

03 фев 2010, 15:09

здесь я привел подобное решение но на JAVA
viewtopic.php?f=14&t=936

Вернуться в «Вопросы, ответы и примеры решений»