Последовательная смена баннеров в BannerY

Здравствуйте. Подскажите пожалуйста, не «догоняю» как нормально сделать последовательную (не случайную) смену банера после перезагрузки страницы.
Если использовать такой код
[[!BannerY? &position=`3` &limit=`1` &sortby=`RAND()`]]

то банеры меняются в случайном порядке, а нужно последовательно:
перезагрузили страницу — баннер 1,
перезагрузили страницу — баннер 2,
перезагрузили страницу — баннер 1,
перезагрузили страницу — баннер 2,

Если последнее посещение страницы или сайта в целом было закончено на баннер 1, то следующий появится баннер 2
Как я понимаю из коробки этого нет. А при реализации нужна привязка к чему-то для определения какой банер был последним.
Есть HitsPage, думаю можно проверять просмотры на четные нечетные, но в какую сторону копать для реализации или есть более оптимальное решение? Кто сталкивался?
Борис И
04 января 2016, 13:57
modx.pro
2
1 422
0

Комментарии: 2

Максим Кузнецов
04 января 2016, 17:17
1
+1
Написать свой сниппет, который будет записывать данные в сессию и исходя из этого формировать результат для сниппета. Допустим:

В чанке (баннера) вызываем сниппет, который будет записывать в сессию idx баннера:
[[!getBannerPosition? &mode=`write` &idx=`[[+idx]]`]]
<?php
	if ($mode == 'write') {
		$_SESSION['lastviewed'] = $idx;
	}
	else {
		$offset = $_SESSION['lastviewed'];
		if (empty($offset)) {
			return '0';
		}
		else {
			return $offset;
		}
	}

А в вызове BannerY допишем параметр &offset=`[[!getBannerPosition]]`, чтобы отображать еще не просмотренный баннер.

Можно также расширить сниппет, чтобы при $_SESSION['lastviewed'] == [[+banner.total]] — сбрасывать значение сессии, но, думаю, с этим уже проблем не возникнет.
    Борис И
    04 января 2016, 18:40
    0
    Спасибо, пошел разбираться.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2