- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть простой ротатор банеров.
$banners = array ();
// Список ваших баннеров
$banners[] = ''
$banners[] = ''
$banners[] = ''
$banners[] = ''
echo $banners[array_rand ($banners)];
?>
Показ рандомный, хотя можно задавать приоритет, дублируя нужное количество раз нужный банер, но это очень неудобно... Как можно задавать приоритет иначе, например явно указав его (числове относительное значение)? Есть ли простая реализация подобного решения?
чтоб получилось приблизительно следующее
banner1 [5 х показов]
banners2 [10х показов]
$banners [2 х показов]
и тд.
Так и задавайте, в чём проблема-то.
Массив значений-приоритетов, далее "рандом от суммы" и поиск нужного.
10-20 строк. Если конечно у вас не хайлоад.
если бы знал как - не спрашивал бы))
$rand = rand(1,100);
if (($rand => 1) && ($rand <= 50)) {
include 'код баннера 1';
}
elseif (($rand => 51) && ($rand <= 80)) {
include 'код баннера 2';
}
else {
include 'код баннера 3';
}
50% - баннер 1, 30% - баннер 2, остальное (20%) - баннер 3.
Как выше не надо :)
Я добавил на всякий случай :)
http://govnokod.ru/16722
_SP_, Вы сначала бы написали как надо в таком случае, потом хаяли. :)
_SP_, Вы сначала бы написали как надо в таком случае, потом хаяли. :)
Второе сообщение почитайте.
Это в целом тоже внокод, но существенно лучше будет, в идеале добавить приоритет в уже имеющийся массив.
Второе сообщение почитайте.
Это в целом тоже внокод, но существенно лучше будет, в идеале добавить приоритет в уже имеющийся массив.
Третье сообщение почитайте. Мой говнокод работать будет, а Ваши рассказы о том, что Вы мегагуру - нет. :)
if (($rand => 1) && ($rand <= 50))
наверное ошибка , не "=> " а ">=".
Так работает, а эдак - нет:)
но все равно - не гибко..Если нужно добавить скажем четвертый банер? то надо весь код править, расставять новые приоритеты, если же диапазон чисел расширить ( 1,100) то сущствующие приоритеты изменятся..
Вот если бы вес напрямую както задавать,чтото типа:
баннер(1)
баннер(5)
баннер(10)
баннер(10)
баннер(0)
Мой говнокод. Приоритет считается попадание в интервалы между баннерами. Чем интервал выше тем приоритет больше.
$banners[] = array('banner1', 1);
$banners[] = array('banner2', 10);
$banners[] = array('banner3', 20);
$banners[] = array('banner4', 80);
$rand = rand(1, 100);
foreach($banners as $banner){
if($rand <= $banner[1]){
echo $banner[0];
break;
}
}
А если $rand от 80 до 100? (видимо ничего, т.е. пустое место)
Как я понял, например, при таком раскладе вес у всех банеров равный
$banners[] = array('banner1', 25);
$banners[] = array('banner2', 50);
$banners[] = array('banner3', 75);
$banners[] = array('banner4', 100);
$rand = rand(1, 100);
foreach($banners as $banner){
if($rand <= $banner[1]){
echo $banner[0];
break;
}
} ?>
Спасибо! (но все равно гибкость страдает, по быстрому не добавишь сразу пару банеров или не удалишь парочку, так как фрагменты кода взаимозависимы, нужно учитывать это, править весь код....нет бы сразу накидать с готовыми весами без привязки друг к другу и к диапазону $rand..эх, мечты-мечты)))