Реклама между новостями, материалами контент модулейИногда возникает необходимость вставить информационные или рекламные блоки между материалами в модулях или на форуме.
Здесь рассмотрим разные способы, применимые именно для модулей. Все способы, кроме первого НЕ работают при включенной функции: «Использовать аякс для переключателей страниц». Информационный блок (или блоки) можно добавить между материалов несколькими принципиальными методами: 1. При помощи условных системных операторов юКоз. 2. При помощи JavaScript. 3. Комбинированный - и то и другое. Рассмотрим все варианты по порядку, и примеры использования. Способ первый: При помощи условных системных операторов юКоз. А именно: при помощи оператора $ID$ - выводит номер равный ID материалу и арифметического оператора % выводящий целочисленный остаток от деления на число (результат всегда целочисленный). Пример кода: Code <?if($ID$%6='0')?> <div class="advBox"> ...моя реклама... </div> <?endif?> Код вставляется в шаблон Вид материалов и выводится если ID материала кратно 6 - то бишь остаток от деления на шесть == 0. Делитель - цифра шесть - естественно, можно изменить на свою. Примеры исчислений: Истинно ли данное условие: $ID$%6='0' При: ID == 6; 6/6=1,0 - после запятой ноль - остаток == 0. Равенство верно. --- При: ID == 36; 36/6==6,0 - после запятой ноль - остаток == 0. Равенство верно. --- При: ID == 32; 32/6≈5,3 - после запятой НЕ ноль - остаток ≠ 0. Равенство НЕ верно. При 32 остаток == 2. Почему? вспоминаем... Потому что, максимальное целое кратное шести число из 32 - это 30 (6*5==30) остаток будет == 2 (32-30==2). Вот и весь принцип. Если у вас материалы идут более-менее подряд, блок будет выводится каждый шестой материал. Число можно ставить любое целое. Так же, можно использовать информер случайных данных или ротатор банеров: Пример кода: Code <?if($ID$%6='0')?> <div class="advBox"> <script type="text/javascript" src="http://ваш_сайт.ру/informer/2-1"></script> </div> <?endif?> С этим способом, думаю, все понятно ) Способ второй (2-0): При помощи JavaScript. Простейший вариант: Пример кода: Code <div id="advBox" style="display:none;"> ...моя реклама #1... </div> <script type="text/javascript"> $('#allEntries table.eBlock:eq(1)').after($('#advBox').css('display','block')); </script> Где: <div id="advBox" style="display:none;"> - Информационный блок скрываем при помощи стилей, и скриптом его добавляем после второго материала. table.eBlock:eq(1) - порядковый номер таблицы с классом eBlock, отсчет с нуля. Естественно, номер можно изменить. Код добавляется в шаблон, в котором должен выводиться, после оператора $BODY$. Важно: Класс таблицы - eBlock - может, и скорее всего будет, не совпадать с классом вашей таблицы. Так что, скрипт редактируем под себя, а именно, открываем шаблон Вид материалов данного модуля, где будем применять, и ищем первый блок или таблицу с классом, если нет просто добавляем. Корректируем скрипт. Например: Для каталога файлов, стандартный код вот такой: Code <table border="0" cellpadding="0" cellspacing="0" width="100%" class="eBlock"><tr><td style="padding:3px;"> <?if($MODER_PANEL$)?> ...и т.д... </div></td> </tr></table><br /> - с этим кодом все нормально, работать будет, так как есть таблица с классом eBlock А вот для шаблона Game Crusade, для того же каталога, код вот такой: Code <div style="float:left; width:100%;"> <h4><b>[ </b><?if($CATEGORY_NAME$)?> <A href="$CATEGORY_URL$">$CATEGORY_NAME$</A><?endif?><b> ]</b> <i>»</i><span> <A href="$ENTRY_URL$">$TITLE$</A></span></h4> ...и т.д... <div class="sep1"></div> </div> - здесь работать не будет, так как нет ни таблицы, ни класса. Что бы работало, нужно дополнить, а именно: Прописать класс верхнему блоку, и отредактировать скрипт. Вот так - добавляем класс: Code <div class="eBlock" style="float:left; width:100%;"> <h4><b>[ </b><?if($CATEGORY_NAME$)?> <A href="$CATEGORY_URL$">$CATEGORY_NAME$</A><?endif?><b> ]</b> <i>»</i><span> <A href="$ENTRY_URL$">$TITLE$</A></span></h4> ...и т.д... <div class="sep1"></div> </div> Редактируем скрипт: Code <script type="text/javascript"> $('#allEntries div.eBlock:eq(1)').after($('#advBox').css('display','block')); </script> Вот теперь, будет работать. Способ второй (2-1): При помощи JavaScript. Вариант чуть посложнее, со случайной выборкой. Пример кода: Code <div id="advBox" style="display:none;"> <div class="advCont">...моя реклама #1...</div> <div class="advCont">...моя реклама #2...</div> <div class="advCont">...моя реклама #3...</div> <div class="advCont">...моя реклама #4...</div> <div class="advCont">...моя реклама #5...</div> </div> <script type="text/javascript"> $('#allEntries table.eBlock:eq(1)').after($('#advBox div.advCont:eq('+Math.floor(Math.random()*5)+')').css('display','block')); </script> Где: $('#advBox div.advCont:eq('+Math.floor(Math.random()*5)+')') - случайная выборка из общего количества рекламных блоков. $('#allEntries table.eBlock:eq(1)') - после какого блока добавляем. Все остальное - то же, что и в примере выше. Скрипт выводит случайный блок рекламы после второго материала. Добавляется, так же, в шаблон, после оператора $BODY$. Способ второй (2-2): При помощи JavaScript. Вариант с использованием информеров. Для вывода информации или рекламы, можно использовать информеры, например информер случайных данных, или любые другие. Например: Code <script type="text/javascript"> $.get('http://ваш_сайт.ру/informer/2-1',function(d){ $('#allEntries table.eBlock:eq(1)').after($('<div id="advBox"/>').html(d.substring(16,d.length-3))); }); </script> Где: $.get('http://ваш_сайт.ру/informer/2-1',function(d){}); - ссылка на ваш информер. Обычно имеет вид: http://ваш_сайт.ру/informer/2-1. Так же, добавляется в шаблон, после оператора $BODY$ Важно! Информеры можно использовать только свои, то бишь, со своего домена. Способ второй (2-3): При помощи JavaScript. Случайная выборка из блоков с рекламой на отдельной странице, или из файла. Для блоков с рекламной можно использовать отдельную страницу. Со станицы удобнее, потому что проще редактировать и добавлять информацию. Для этого создается отдельная страница (в ПУ - редактор страниц) и в контент, через стандартную форму добавления, помещаются блоки с заданным классом (или id). Данную страницу (с блоками) желательно закрыть от индексации, делается это добавлением в хеад страницы (между тегами <head> и </head>) метатега robots или через файл robots.txt. Метатег добавляется через условие: Code <title>$SITE_NAME$ - $MODULE_NAME$</title> <?if($URI_ID$='page4')?> <meta name="robots" content="noindex,nofollow" /> <?endif?> Где: <?if($URI_ID$='page4')?> - ID вашей страницы - можно узнать по адресу: http://ваш_сайт.ру/index/0-4 - последняя цифра после тире и есть ID страницы (для модуля index - страницы сайта). Структура информационных блоков такая: Code <div class="advCont">...моя реклама #1...</div> <div class="advCont">...моя реклама #2...</div> <div class="advCont">...моя реклама #3...</div> <div class="advCont">...моя реклама #4...</div> <div class="advCont">...моя реклама #5...</div> Ну и сам скрипт: Code <script type="text/javascript"> $.get('http://ваш_сайт.ру/index/0-8',function(d){ var o=$('div.advCont',d),i=Math.floor(Math.random()*o.length); $('#allEntries table.eBlock:eq(1)').after($('<div id="advBox"/>').html(o.eq(i))); }); </script> Где: $.get('http://ваш_сайт.ру/index/0-8',function(d){..}); - ссылка на вашу страницу, обычно имеет вид: http://ваш_сайт.ру/index/0- 8. Где «8» - ID страницы. $('#allEntries table.eBlock:eq(1)') - после какого блока, от нуля, добавляется блок. i=Math.floor(Math.random()*o.length); - определяем случайное число, от общего количества блоков. o.eq(i) - делаем выборку блока по его индексу от случайного числа. Добавляется, так же, в шаблон, после оператора $BODY$..) Способ третий: комбинированный - и то и другое. Ну а комбинировать можно как угодна, заменяя различный JS-функции операторами. Например, использовать системный оператор: Code <?rnd(N)?> - Возвращает случайное число от 0 до N-1, включительно. Где: N - целое число, от 0 до ... много. А использовать можно так: Code <script type="text/javascript"> $.get('http://ваш_сайт.ру/index/0-8',function(d){ var o=$('div.advCont',d),i=Math.floor(Math.random()*o.length); $('#allEntries table.eBlock:eq(<?rnd(11)?>)').after($('<div id="advBox"/>').html(o.eq(i))); }); </script> Где: $('#allEntries table.eBlock:eq(<?rnd(11)?>)') - количество материалов на странице + единица. Случайный блок с рекламой выведется после случайного блока новостей. Конечно, это далеко не все способы, но принцип рассмотрен - дальше уже ваша фантазия .. © По мотивам материала: Реклама между новостями, постами P.S. В прикреплении примеры и исходники, на всякий случай. Прикреплённый файл: 455_ads_news_posts_.rar (3.5 Kb)
|