Вчера днем начал тестировать геотаргетинг по показу объявлений в шапке сайта Аудиоведа. Второй день у меня кипят мозги от того, что необходимо реализовать алгоритм выдачи банеров с ранжированием по URL, сортировочному весу, определнному географическом положению посетителя сайта и смысловому контексту страницы на которой он выводится. Я думаю надо решать вопрос фундаментально.
Дано:
- Посетитель с устновленным IP, а следовательно как минимум страной и городом
- URL страницы на которой он находится в настоящий момент
Условия, которые необходимо соблюсти при выдаче банера в шапку:
- банеры с указанным геотаргетингом имеют преимущество в выдаче перед «интернациональными», где он не указан. Это означает, что для москвичей в первую очередь следует показывать московский банер если такой есть и если нет — интернациональный.
- банеры с указанным местом — страницей размещения имеют преимущество при выводе перед «сквозными» банерами без указанной страницы. То есть нужно показывать на странице банер предназначенный для этой конкретной страницы, если такой есть. И если спецального для этой страницы нет — тогда случайный сквозной с геотаргетингом. И если нет таких — любой случайно из сквозных-интернациональных.
- показ баннеров считается в cookies на стороне клиента. Количество показов не должно превышать установленного для данного баннера количества показов одному посетителю в сутки, если такое было установлено для данного баннера. Как только баннер с известным ID будет показан посетителю дважды он более не показывается в этот день вообще.
- любой баннер может быть отмечен тегами и выводиться на странице тега в первую очередь ибо он имеет преимущества перед баннером у которого теги не прописаны. Также баннер отмеченный тегами выводится на страницах материалов отмеченных этими тегами.
- пользователь может нажать на крестик у баннера и он ему не будет показываться больше вообще в течении сегодняшнего дня. Это так же решается на стороне пользователя через cookies.
- банер может иметь ограничения по времени и дням недели для показа.
- банер может показывать только зарегистрированным или всем пользователям.
А также еще масса нюансов которые нужно учесть. И это вот просто одна из сотен задач по сайту, если вы собираетесь все делать фундаментально. И иногда мне кажется, что проще купить битрикс … Надо завтра показать Петру эту хрень. Надеюсь, у него есть готовое решение.