Меню
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Вебмастеру » JavaScript, Flash и прочие технологии » Реклама между новостями, постами
Реклама между новостями, постами
SHARA-STYLEДата: Воскресенье, 15.07.2018, 22:04 | Сообщение # 1
Kemper
Группа: Команда SHARA-STYLE
Сообщений: 54
Репутация: 1
Статус: Оффлайн

Иногда возникает необходимость вставить информационные или рекламные блоки между материалами в модулях. 
Здесь рассмотрим разные способы, применимые именно для модулей. 



Все способы, кроме первого НЕ работают при включенной функции: 
«Использовать аякс для переключателей страниц»
 

Информационный блок (или блоки) можно добавить между материалов несколькими принципиальными методами: 

1. При помощи условных системных операторов юКоз. 
2. При помощи JavaScript. 
3. Комбинированный - и то и другое. 

Рассмотрим все варианты по порядку, и примеры использования.



Способ первый: При помощи условных системных операторов юКоз. 
А именно: при помощи оператора $ID$ - выводит номер равный ID материалу и арифметического оператора % выводящий целочисленный остаток от деления на число (результат всегда целочисленный)

Пример кода: 
<?if($ID$%6='0')?> 
<div class="advBox"> 
...моя реклама... 
</div> 
<?endif?>1
2
3
4
5

Код вставляется в шаблон Вид материалов и выводится если 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)

Вот и весь принцип. 

Если у вас материалы идут более-менее подряд, блок будет выводится каждый шестой материал. 
Число можно ставить любое целое. 

Так же, можно использовать информер случайных данных или ротатор банеров: 

Пример кода: 
<?if($ID$%6='0')?> 
<div class="advBox"> 
<script type="text/javascript" src="http://ваш_сайт.ру/informer/2-1"></script> 
</div> 
<?endif?>1
2
3
4
5

С этим способом, думаю, все понятно ) 




Способ второй (2-0): При помощи JavaScript. Простейший вариант: 

Пример кода: 
<div id="advBox" style="display:none;"> 
...моя реклама #1... 
</div> 
<script type="text/javascript"> 
$('#allEntries table.eBlock:eq(1)').after($('#advBox').css('display','block')); 
</script>1
2
3
4
5
6
Где: 
<div id="advBox" style="display:none;"> - Информационный блок скрываем при помощи стилей, и скриптом его добавляем после второго материала. 
table.eBlock:eq(1) - порядковый номер таблицы с классом eBlock, отсчет с нуля. Естественно, номер можно изменить. 

Код добавляется в шаблон, в котором должен выводиться, после оператора $BODY$

Важно: 

Класс таблицы - eBlock - может, и скорее всего будет, не совпадать с классом вашей таблицы. Так что, скрипт редактируем под себя, а именно, открываем шаблон Вид материалов данного модуля, где будем применять, и ищем первый блок или таблицу с классом, если нет просто добавляем. Корректируем скрипт. 

Например: 
Для каталога файлов, стандартный код вот такой: 
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="eBlock"><tr><td style="padding:3px;"> 
<?if($MODER_PANEL$)?> 
...и т.д... 
</div></td> 
</tr></table>1
2
3
4
5
6
- с этим кодом все нормально, работать будет, так как есть таблица с классом eBlock 

А вот для шаблона Game Crusade, для того же каталога, код вот такой: 
<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>1
2
3
4
5
6
- здесь работать не будет, так как нет ни таблицы, ни класса. 

Что бы работало, нужно дополнить, а именно: 
Прописать класс верхнему блоку, и отредактировать скрипт. 

Вот так - добавляем класс: 
<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>1
2
3
4
5
6

Редактируем скрипт: 
<script type="text/javascript"> 
$('#allEntries div.eBlock:eq(1)').after($('#advBox').css('display','block')); 
</script>1
2
3

Вот теперь, будет работать. 


Способ второй (2-1): При помощи JavaScript. Вариант чуть посложнее, со случайной выборкой. 

Пример кода: 
<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>1
2
3
4
5
6
7
8
9
10
11
Где: 
$('#advBox div.advCont:eq('+Math.floor(Math.random()*5)+')') - случайная выборка из общего количества рекламных блоков. 
$('#allEntries table.eBlock:eq(1)') - после какого блока добавляем. 

Все остальное - то же, что и в примере выше. 

Скрипт выводит случайный блок рекламы после второго материала. Добавляется, так же, в шаблон, после оператора $BODY$


Способ второй (2-2): При помощи JavaScript. Вариант с использованием информеров. 
Для вывода информации или рекламы, можно использовать информеры, например информер случайных данных, или любые другие. 

Например: 
<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>1
2
3
4
5
6
Где: 
$.get('http://ваш_сайт.ру/informer/2-1',function(d){};); - ссылка на ваш информер. Обычно имеет вид: http://ваш_сайт.ру/informer/2-1

Так же, добавляется в шаблон, после оператора $BODY$ 

Важно! 
Информеры можно использовать только свои, то бишь, со своего домена. 


Способ второй (2-3): При помощи JavaScript. Случайная выборка из блоков с рекламой на отдельной странице, или из файла. 

Для блоков с рекламной можно использовать отдельную страницу. Со станицы удобнее, потому что проще редактировать и добавлять информацию. 

Для этого создается отдельная страница (в ПУ - редактор страниц) и в контент, через стандартную форму добавления, помещаются блоки с заданным классом (или id)
Данную страницу (с блоками) желательно закрыть от индексации, делается это добавлением в хеад страницы (между тегами и ) метатега robots или через файл robots.txt

Метатег добавляется через условие: 
<title>$SITE_NAME$ - $MODULE_NAME$</title> 
<?if($URI_ID$='page4')?> 
<meta name="robots" content="noindex,nofollow" /> 
<?endif?>1
2
3
4
Где: 
4')?> - ID вашей страницы - можно узнать по адресу: http://ваш_сайт.ру/index/0-4 - последняя цифра после тире и есть ID страницы (для модуля index - страницы сайта)

Структура информационных блоков такая: 
<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>1
2
3
4
5

Ну и сам скрипт
<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>1
2
3
4
5
6
Где: 
$.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-функции операторами. 
Например, использовать системный оператор: 
<?rnd(N)?>1

- Возвращает случайное число от 0 до N-1, включительно. 
Где: 
N - целое число, от 0 до ... много. 

А использовать можно так: 
<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>1
2
3
4
5
6
7

Где: 
$('#allEntries table.eBlock:eq(11)?>)') - количество материалов на странице + единица. 
Случайный блок с рекламой выведется после случайного блока новостей. 


Конечно, это далеко не все способы, но принцип рассмотрен - дальше уже ваша фантазия .. 

© По мотивам материала: Реклама между новостями, постами


 
Форум » Вебмастеру » JavaScript, Flash и прочие технологии » Реклама между новостями, постами
  • Страница 1 из 1
  • 1
Поиск: