реализация на joomla!!!
я решил сделать так:
1, подсчитываю количество файлов в папке
2, получаю случайно число (это для того чтоб выводить случайный банер из папки)
3, вывожу первый банер и заношу это значение в сесию
4, при обновлении страницы или при переходе на новую страницу я сравниваю полученную переменную случайным образом и переменную из сесии
4,1 если они равны то выводить другой банер
4,2 если не равны, то выводить банер
PS может это не правильный подход, то подскажите пожалуйста правильный. я так понял тут не делают, а обсужждают!
<?php defined( '_JEXEC' ) or die( 'Go Away' ); ?>
<?php
$doroga = $params->get( 'doroga');
$sPath = './images/banners/'.$doroga.'/'; // указываем путь к папке
$dDir = opendir($sPath);
$aFileList=array();
while ($sFileName=readdir($dDir))
{
if ($sFileName!='.' && $sFileName!='..')
{
$aFileList[]=$sFileName;
}
}
closedir ($dDir);
$iNumFiles=count($aFileList); // колич-во файлов в папке
//foreach($aFileList as $value) { echo "$value <br />"; } // вывод списка имен файлов
$i = rand(1,$iNumFiles); // получаю случайное цисло при начале работы скрипта
$j = $i-1;
echo "eto JJJ: ".$j;
echo "<br />";
echo $aFileList[$j];
echo "<br />";
$session =JFactory::getSession(); // стартую сесиию
$temp = $session->get('temp_baner');
if (empty($temp))
{
$temp = $j;
$session->set( 'temp_baner', $temp );
}
else
{
$temp = $session->get('temp_baner');
echo 'eto iz sessii - '.$temp;
if (($temp == 0) or ($temp == -1)) $temp = 1;
if ($temp == 1) $temp = 0;
$session->set( 'temp_baner', $temp );
$j = $temp;
}
?>
<div class="niz banneritem">
<?php // вывод кода для отображения банера
$content = <<<EOD
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" border="0" width="200" height="100">
<param name="movie" value="$sPath/$aFileList[$j]"/>
<param name="wmode" value="opaque"/>
<embed src="$sPath/$aFileList[$j]" allowScriptAccess="sameDomain" loop="true" pluginspage="http://www.macromedia.com/go/get/flashplayer" type="application/x-shockwave-flash" width="200" height="100"></embed>
</object>
EOD;
?>
<div class="clr"></div>
</div>
не понимаю, но не совсем работает... почему то сессия глючит...
я так понимаю, если я загнал переменную в сесию, то она там находится до конца. я ни где не удаляю эту переменную $temp
а на самом деле так происходит что она удаляется
Спустя 54 минуты, 38 секунд (26.10.2010 - 18:38) Stuff_f написал(а):
$SESSION_START();
Попробуй в конце flush() добавить
а вообще утебя в этом коде ощибка
хм как так получается,,??
брет какой-то(((
продумай по другому
flush();
сбрасывай сессии где работа с $this
Попробуй в конце flush() добавить
а вообще утебя в этом коде ощибка
хм как так получается,,??
$session =JFactory::getSession(); // стартую сесиию
$temp = $session->get('temp_baner'); <-----сдесь мы создаем сессию
if (empty($temp)) <---- проверяем сессию на значение
{
$temp = $j;
$session->set( 'temp_baner', $temp ); <--- считываем сессию или echo
}
else
{
$temp = $session->get('temp_baner'); Опять создаем сессию зачем,? она и будет пустая потому что ты создал ее только что
echo 'eto iz sessii - '.$temp; - и тут же ты ее пустую отоброжаешь
if (($temp == 0) or ($temp == -1)) $temp = 1;
if ($temp == 1) $temp = 0;
$session->set( 'temp_baner', $temp );
$j = $temp;
}
брет какой-то(((

flush();
сбрасывай сессии где работа с $this
Спустя 5 часов, 24 минуты, 49 секунд (27.10.2010 - 00:03) ilma55 написал(а):
$temp = $session->get('temp_baner');
кажись этой строкой я не создаю сессию, а получаю переменную из нее!!!
а вот SET устанавливает в сесиию переменную
кажись этой строкой я не создаю сессию, а получаю переменную из нее!!!
а вот SET устанавливает в сесиию переменную
Спустя 14 минут, 45 секунд (27.10.2010 - 00:17) Stuff_f написал(а):
Цитата (ilma55 @ 26.10.2010 - 21:03) |
$temp = $session->get('temp_baner'); кажись этой строкой я не создаю сессию, а получаю переменную из нее!!! а вот SET устанавливает в сесиию переменную |
а userdata что делает??)))) а точнее вот эта что строка делает? $this->session->userdata('temp_baner'); - получение данных из сессии
если ее попробывать в условие вставить?
Спустя 10 часов, 5 минут, 23 секунды (27.10.2010 - 10:23) ilma55 написал(а):
$this->session->userdata('temp_baner');
я не знаю что она делает =(
я даже не в курсе о такой записи!
куда ее вставить? что она делает? проверить не могу сейчас... я на работе... это я дома пишу собственный модуль для joomla, чтоб выводились банера из папки и чтоб они не повторялись
я не знаю что она делает =(
я даже не в курсе о такой записи!
куда ее вставить? что она делает? проверить не могу сейчас... я на работе... это я дома пишу собственный модуль для joomla, чтоб выводились банера из папки и чтоб они не повторялись
Спустя 10 минут, 23 секунды (27.10.2010 - 10:33) Stuff_f написал(а):
Цитата (ilma55 @ 27.10.2010 - 07:23) |
$this->session->userdata('temp_baner'); я не знаю что она делает =( я даже не в курсе о такой записи! куда ее вставить? что она делает? проверить не могу сейчас... я на работе... это я дома пишу собственный модуль для joomla, чтоб выводились банера из папки и чтоб они не повторялись |
я понял так что ты делаешь типа галереии или превьюшек если да то вот уже есть готовый yoo-gallery-1.5.4 для joomla
if (empty($temp)) <---- проверяем сессию на значение
{
$temp = $j;
print $session->set( 'temp_baner', $temp ); <--- считываем сессию или echo
}
else
{
$temp = $session->get('temp_baner'); Опять создаем сессию зачем,? она и будет пустая потому что ты создал ее только что
print 'eto iz sessii - '.$temp; - и тут же ты ее пустую отоброжаешь
if (($temp == 0) or ($temp == -1)) $temp = 1;
if ($temp == 1) $temp = 0;
$session->set( 'temp_baner', $temp );
$j = $temp;
}
Отпишишся
от Linker : Пилин, задрался править ваши посты, когда научимся по правилам оформлять свои посты, в частности когда научимся бользоваться bb-кодами?
Спустя 19 минут, 47 секунд (27.10.2010 - 10:53) ilma55 написал(а):
я делаю вывод банеров из папки, НО чтоб вывод банера не повторялся подряд
если выводился банер1 , то при перезагрузки страницы или при переходе на новую страницу нужно чтоб банер1 не выводился снова, а чтоб выводился банер2 или банер3
если выводился банер1 , то при перезагрузки страницы или при переходе на новую страницу нужно чтоб банер1 не выводился снова, а чтоб выводился банер2 или банер3
$session =JFactory::getSession(); // стартую сесиию
$temp = $session->get('temp_baner'); // присваиваю temp значение из сесии
if (empty($temp)) // если в сесии нет такой переменной (то есть temp пустая)
{
$temp = $j;
$session->set( 'temp_baner', $temp ); // то ми создаем в сесии переменную temp_baner
}
else // если же в сесиии есть переменная temp_baner
{
$temp = $session->get('temp_baner'); // то ми получаем ее значение
// и присваиваем новые значения, чтоб картинка не повторялась
if ($temp == 0) $temp = 1;
if ($temp == 1) $temp = 0;
$session->set( 'temp_baner', $temp ); // заносим значения в сессию
$j = $temp; // присваиваю J то значение новой картинки
}
Спустя 47 минут, 29 секунд (27.10.2010 - 11:40) Stuff_f написал(а):
тогда тебе нужно и чифры ьанеров с сессию писать и потом уже сравнивать на повторы
Спустя 3 минуты (27.10.2010 - 11:43) ilma55 написал(а):
проблема тут.
уже буду копать в этом направлении.
глупо так получилось. проглючило меня.
еcли temp = 0 , то присваиваем 1. и сразу же смотрим еcли temp = 1 то присваиваем 0
конечно оно все по кругу =)
if ($temp == 0) $temp = 1;
if ($temp == 1) $temp = 0;
уже буду копать в этом направлении.
глупо так получилось. проглючило меня.
еcли temp = 0 , то присваиваем 1. и сразу же смотрим еcли temp = 1 то присваиваем 0
конечно оно все по кругу =)
Спустя 24 минуты, 40 секунд (27.10.2010 - 12:08) Stuff_f написал(а):
Ну вот все решилось) а я все всегда усложняю
Спустя 51 секунда (27.10.2010 - 12:09) ilma55 написал(а):
спасибо! +1
_____________
Программист – это не деятельность, это иной образ жизни!