Сервис по формированию блоков объявлений для описываемого здесь ротатора баннеров.
Последние годы поисковики при ранжировании сайтов придают всё большее значение скорости загрузки страниц. По этой причине среди веб-разработчиков существенно возрос интерес к генераторам статических сайтов. Ротатор баннеров с предварительным кэшированием баннерных блоков для высокой скорости и малой нагрузки на сервер использует ту же технологию, что и генераторы статических сайтов, - подгружает готовые блоки объявлений из заранее сформированных файлов (каждый блок из своего отдельного файла) в зависимости от определённых событий, например от текущего времени. Таким образом ротатор состоит из двух частей - набора файлов, содержащих блоки объявлений, и программного кода на странице для подгрузки информации с этих файлов.
Блоки формируются из объявлений с учётом заданной вероятности показа для каждого объявления. Если объявлений в блоке несколько, Соблюдается "справедливость" показа объявлений на определённых позициях в блоке, т.е. в разных файлах одни и те же объявления находятся на разных позициях. Эти задачи данный сервис при формировании файлов выполняет автоматически. Нужно лишь загрузить список объявлений с указанной для каждого объявления вероятностью появления на странице. В результате программа выдаёт итоговые файлы, помещённые в архив. По умолчанию файлы блоков объявлений имеют расширение .html, которое при необходимости можно поменять в поле "Задать расширение файлов блоков объявлений".
Объявления представляют собой любой текст в кодировке utf-8. Это может быть html-код, ссылки на картинки, сами картинки, встроенные в текст при помощи Base64-кодирования, скрипты, и т.д.
Количество файлов с блоками объявлений - 100
Вероятность появления объявления на странице можно указывать от 1% до 100% с шагом 1%
Максимальное количество объявлений в блоке - 100
Список объявлений, из которых формируются блоки, следует поместить в текстовый файл. Каждое объявление записывается один раз с указанием вероятности его появления на странице. Также в этот файл со списком объявлений можно добавить две записи - заголовок блока, который выводится в начале каждого блока и подвал, выводящийся в конце блока. В заголовке можно, например, задать стили объявлений, открыть тег <div>, обрамляющий весь блок объявлений. В подвале можно, например, закрыть тег </div>, если он открыт в заголовке.
{header} Заголовок всего блока объявлений {/header} {ad} {content} Содержимое объявления {/content} {chance} Шанс (вероятность) показа объявления {/chance} {/ad} ... {footer} Подвал всего блока объявлений {/footer}
Разметка списка объявлений производится с помощью тегов, подобно html-разметке. Но вместо угловых скобок используются фигурные, чтобы они не мешали применению в тексте объявлений обычных html-тегов.
Каждое объявление помещается между тегами {ad}{/ad}. Содержимое объявления помещается между тегами {content}{/content}, а вероятность (шанс) показа этого объявления записывается между тегами{chance}{/chance} - просто натуральное число, без знака процента %.
Вне тегов можно помещать любой текст - будет считаться комментариями.
{header} <style> .ad_block { padding: 0 .4rem; border: 1px solid #ccc; border-radius: .22rem; } .ad { padding: .4rem 0; } .ad p { line-height: 1.2; font-family: Arial, sans-serif; } </style> <div class="ad_block"> {/header} {ad} {content} <div class="ad"> <p>Первое объявление</p> </div> {/content} {chance} 70 {/chance} {/ad} {ad} {content} <div class="ad"> <p>Второе объявление</p> </div> {/content} {chance} 50 {/chance} {/ad} {ad} {content} <div class="ad"> <p>Третье объявление</p> </div> {/content} {chance} 30 {/chance} {/ad} {footer} </div> {/footer}
<style>
.ad_block {
padding: 0 .4rem;
border: 1px solid #ccc;
border-radius: .22rem;
}
.ad {
padding: .4rem 0;
}
.ad p {
line-height: 1.2;
font-family: Arial, sans-serif;
}
</style>
<div class="ad_block">
<div class="ad">
<p>Первое объявление</p>
</div>
<div class="ad">
<p>Третье объявление</p>
</div>
</div>
Файл 0.html
<style>
.ad_block {
padding: 0 .4rem;
border: 1px solid #ccc;
border-radius: .22rem;
}
.ad {
padding: .4rem 0;
}
.ad p {
line-height: 1.2;
font-family: Arial, sans-serif;
}
</style>
<div class="ad_block">
<div class="ad">
<p>Второе объявление</p>
</div>
<div class="ad">
<p>Первое объявление</p>
</div>
</div>
Файл 1.html
<script> var adsFilesPath = "ad_file_path/"; var elementId = "ad_block"; var fileId = (new Date().getTime()) % 100; var adAddr = adsFilesPath + fileId + ".html"; function showAsyncRequest(){ var req = new XMLHttpRequest(); req.onreadystatechange = function() { if (req.readyState == 4) { if (req.status == 200) { document.getElementById(elementId).innerHTML = req.responseText; } } } req.open("POST", adAddr, true); req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.send(null); } window.onload = showAsyncRequest(); </script>
Этот скрипт следует поместить в самый конец html-страницы перед закрывающим тегом </body>
Вместо ad_file_path/ в коде скрипта следует вписать путь к директории, в которой находятся файлы блоков объявлений 0.html, 1.html ... 99.html. Директория с файлами блоков объявлений может быть на том же сервере, что и сам сайт, на котором будут показываться объявления. При желании путь может вести и на другой домен при использовании веб-протокола, но в этом случае на том стороннем веб-сервере должно быть настроено разрешение на отдачу информации по ajax-технологии.
В то место, где должен располагаться блок объявлений, следует поместить пустой блок <div id="ad_block"></div>. Имя идентификатора "ad_block" можно заменить на другое, но при этом следует на такое же заменить и значение переменной elementId в скрипте.
<script> var period = 15000; var totalFiles = 100; var fileId = 0; var adsFilesPath = "ad_file_path/"; var adAddr = ""; var elementId = "ad_block"; var req = new XMLHttpRequest(); function showAsyncRequest(){ adAddr = adsFilesPath + fileId + ".html"; req.onreadystatechange = function () { if (req.readyState == 4) { if (req.status == 200) { document.getElementById(elementId).innerHTML = req.responseText; } } } req.open("POST", adAddr, true); req.send(null); if(fileId < (totalFiles - 1)){ fileId++; } else { fileId = 0; } } window.onload = function() { showAsyncRequest(); setInterval("showAsyncRequest()", period); } </script>
Этот скрипт следует поместить в самый конец html-страницы перед закрывающим тегом </body>
В переменную period следует поместить период смены набора объявлений, выраженный в миллисекундах. В данном примере period = 15000 мс, т.е. 15 секунд.
Вместо ad_file_path/ в коде скрипта следует вписать путь к директории, в которой находятся файлы блоков объявлений 0.html, 1.html ... 99.html. Директория с файлами блоков объявлений может быть на том же сервере, что и сам сайт, на котором будут показываться объявления. При желании путь может вести и на другой домен при использовании веб-протокола, но в этом случае на том стороннем веб-сервере должно быть настроено разрешение на отдачу информации по ajax-технологии.
В то место, где должен располагаться блок объявлений, следует поместить пустой блок <div id="ad_block"></div>. Имя идентификатора "ad_block" можно заменить на другое, но при этом следует на такое же заменить и значение переменной elementId в скрипте.