Hi guys.
I have very strange problem that i cant managed fo few hours. This is realy hard to understand for me.
I work on website and i want it to have banners in few places. In admin i created structure: Banners > Banner Group > Banner 1, Banner2, Banner 3 etc. I want this banners to be loaded one by one rather than randomly. I created function that print baner and save its id to session variable like this:
function renderBannerBox($banner_group = false) { //takes banner group name as argument
$out = '';
if ($banner_group) {
$bgroup_url = '/banners/' . $banner_group . '/';
$bgroup = wire(pages)->get($bgroup_url);
if ($bgroup->id) {
$bgroup_id = $bgroup->id;
//for every banner group create separate session variable to store displayed banners
$session_name = $bgroup->name . '_array';
//get session variable with array of ids of displayed banners
$displayed_banners = wire(session)->$session_name;
$selector = "id!=";
$selector .= substr($displayed_banners, 0, -1);
$selector .= ", template=banner, parent=$bgroup_id";
$banners = wire(pages)->find("template=banner, parent=$bgroup_id");
$banner = $banners->get($selector);
//if no banner (first view or all banners from group displayed) get random banner and
if (! $banner->id) {
$displayed_banners = ''; // clear $displayed banners variable
$banner = $banners->findRandom(1)->first; //get random banner
}
//add current banner id to variable
$displayed_banners .= $banner->id . '|';
// save variable to $session
wire(session)->$session_name = $displayed_banners;
// code for html formating
}
}
Strange thing is that for every page refresh different number of banners ids are saved to my $session variable. One time is 1 id, second time 2 ids and so on.
You can see it here: http://demo.webego.pl/ginfo/ - above every banner i print current value of $session variable.
I tested it also in my main template file with independent test variable - it works the same way. It looks like page is sometimes 'double loaded'.
Please let me know if you have any idea what is going on.