• Страница 1 из 1
  • 1
Модератор форума: likbezz  
Скрипты и коды для юкоз - Форум аццкого кодера » Как сделать? Информация для вновь прибывших » Инструкции, подробные описания и тпт. » Реклама между новостями, постами. Re-Pack (По мотивам: Реклама между новостями, постами)
Реклама между новостями, постами. Re-Pack
Дата: Суббота, 06.10.2012, 08:53 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


Наверное, стоит еще раз напомнить, что:

Quote (class=alert)
На хостинге юКоз, по умолчанию, используется библиотека jQuery, и подключается она автоматически, то бишь, ничего дополнительно прописывать не нужно.




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


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

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

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

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

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

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


Код вставляется в шаблон Вид материалов и выводится если ID материала кратно 6 - то бишь остаток от деления на шесть == 0. Делитель - цифра шесть - естественно, можно изменить на свою.

Примеры исчислений:
Quote (Info)
Истинно ли данное условие: $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('/_ext/2012/ads_news_posts/2-0.html',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)?>)') - количество материалов на странице + единица.
Случайный блок с рекламой выведется после случайного блока новостей.



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

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


 
Дата: Суббота, 06.10.2012, 10:09 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


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

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

Пример:
Реклама между новостями, постами. Пример 2-2 То же самое, но с информером


 
Дата: Суббота, 06.10.2012, 15:49 |
bandjuk
Генерал-майор
Группа: Пользователи
Сообщений: 290
Награды: 1
Репутация: 22
Статус: Offline


likbezz, у тебя там раза 4 написано способ второй , напиши так 2.1, 2.2, 2.3.
И немного не понятно

добавляем после второго материала.

порядковый номер таблицы с классом eBlock

т.е. реклама будет идти через один материал или только после второго поста, или как? wacko

Добавлено (06.10.2012, 15:41)
---------------------------------------------
И примеры лучше вылаживать не в конце, а после каждого способа соответствующий пример smile

Добавлено (06.10.2012, 15:48)
---------------------------------------------

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

опечатка

Добавлено (06.10.2012, 15:49)
---------------------------------------------

делается это добавлением в хеад страницы

Лучше напиши между <head> и </head> для особо одарённых )))


 
Дата: Суббота, 06.10.2012, 15:56 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


bandjuk,
т.е. реклама будет идти через один материал или только после второго поста, или как?

Только после второго, так как порядковый номер в дереве элементов таблиц идет как обычно, с нуля до последней) и второй материал встречается лишь однажды ) на страницу..
И примеры лучше вылаживать не в конце, а после каждого способа соответствующий пример

Да это я вообще переписывал, на юкоз примеры низя.. конечно запихаю куда надо, на скорую руку делал - уходить уже надо было..

опечатка

Ok)

Лучше напиши между <head> и </head> для особо одарённых )))

Ну, это да.

Ща поправлю )


 
Дата: Суббота, 06.10.2012, 16:11 |
bandjuk
Генерал-майор
Группа: Пользователи
Сообщений: 290
Награды: 1
Репутация: 22
Статус: Offline


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

нужно это как-то особо отметить, чтобы не было ни вопросов ни догадок! Так тупо и напиши - выводит только после второго материала. И опять же мне не понятно, а если материала с ИД 2 нет, или ИД роли не играет? wacko

Добавлено (06.10.2012, 16:11)
---------------------------------------------
А вообще привязки к ИД нет, что-то я протупил, идёт отсчёт таблиц с данным классом, верно?

Сообщение отредактировал bandjuk - Суббота, 06.10.2012, 16:03
 
Дата: Суббота, 06.10.2012, 16:12 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


bandjuk,
нужно это как-то особо отметить

Ну как это отметить?)

Так тупо и напиши - выводит только после второго

А там как написано?

И опять же мне не понятно, а если материала с ИД 2 нет, или ИД роли не играет?

??
Quote (Info)
Истинно ли данное условие: $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).


Истинно ли данное условие: $ID$%6='0' при ID == 2 ? и чему будет == остаток, если не равно?
.. пошевелишь?

Все остальные способы к ID отношения не имеют, и нигде не написано обратное - там берется индекс элемента - порядковый номер в дереве.. Ну это просто. Зачем это уточнять?
Карт в колоде сколько? - 36 или 52. Всегда есть и первая и вторая, их не не может не быть. И ими может быть быть любая ) - как ляжет ) - Первая верхняя, вторая - та что под ней ) даже если всего карт будет две) значит вторая будет одновременно и второй и последней)

отсчёт таблиц с данным классом, верно?

Верно, по индексу.
Первая таблица сверху будет иметь индекс - 0, вторая - единицу ... и тд. последняя будет иметь индекс == общее кол-во - 1 (так как отсчет с нуля)


 
Дата: Суббота, 06.10.2012, 16:16 |
bandjuk
Генерал-майор
Группа: Пользователи
Сообщений: 290
Награды: 1
Репутация: 22
Статус: Offline


likbezz, та я уже понял и даже написал это:
А вообще привязки к ИД нет, что-то я протупил, идёт отсчёт таблиц с данным классом, верно?

smile
Где: <div id="advBox" style="display:none;"> - Информационный блок скрываем при помощи стилей, и скриптом его добавляем после второго материала.

тут бы я дописал. Реклама выведется после второго материала. tongue


 
Дата: Суббота, 06.10.2012, 16:22 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


bandjuk,
тут бы я дописал. Реклама выведется после второго материала.

Ну, блин .. если добавляем после второго) - то где она должна вылезти? - после третьего что ли?)
Уговорил, дописал)


 
Дата: Суббота, 06.10.2012, 16:26 |
bandjuk
Генерал-майор
Группа: Пользователи
Сообщений: 290
Награды: 1
Репутация: 22
Статус: Offline


Ну, блин .. если добавляем после второго)

не понятно написано, по крайней мере мне smile
Уговорил, дописал)

ну хуже то от этого точно не будет smile

Добавлено (06.10.2012, 16:26)
---------------------------------------------

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

вот тут понятно, а там как-то не очень было


 
Дата: Пятница, 11.01.2013, 04:41 |
Генерал-майор
Группа: Проверенные
Сообщений: 408
Награды: 2
Репутация: 8
Статус: Offline


Код
<?if(substr($NUMBER$,-5,1) = 1)?>содержимое<?else?><?endif?>


я организовал по номеру поста = 1

с увеличением регистров числа нужно и количество символов увеличить

пример в пост 21 ---
Код
<?if(substr($NUMBER$,-5,2) = 21)?>содержимое<?else?><?endif?>


Сообщение отредактировал true - Пятница, 11.01.2013, 05:12
 
Дата: Пятница, 11.01.2013, 09:50 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


true,
Цитата (true, Пт, 11.01.2013, 04:41:51)
с увеличением регистров числа нужно и количество символов увеличить
пример в пост 21 ---

Это ты про форум? про посты? Не проще ли взять номер поста и вычислить какой он по счету, исходя из кол-ва постов на странице?
Это что ж, мне в 10-страничной теме где постов за 200 прописывать столько условий?) Да ты что) Или тогда уж скриптом...


 
Дата: Суббота, 12.01.2013, 01:20 |
Генерал-майор
Группа: Проверенные
Сообщений: 408
Награды: 2
Репутация: 8
Статус: Offline


Цитата
Это ты про форум? про посты? Не проще ли взять номер поста и вычислить какой он по счету, исходя из кол-ва постов на странице?
Это что ж, мне в 10-страничной теме где постов за 200 прописывать столько условий?) Да ты что) Или тогда уж скриптом...


я ожидал этой реакции ))) вот смотри,дана базовая формула <?if(substr($NUMBER$,-5,1) = 1)?> так же мы знаем ,что материалы в пределах сайта считаются глобально (то есть в одной теме порядковые номера постов ,которые друг за другом привязаны только к дате добавления относительно всего сайта к примеру пост 1 поставленный год назад имеет номер 9567 ,а пост 2 идущий за ним и выставленный сегодня имеет номер 11578, а в пределах страницы это всего лишь посты 1 и 2,числа меньше=считать легче)

так же мы знаем ,что порядковый номер материала (глобальный,стоит в имени ссылки) и сколько постов выводит движок на странице, получается,что наиболее эффективный код (скрипт) лучше сделать из этой конструкции (это же всего лишь живой пример с моего сайта,чисто под него)

то есть скриптом брать порядковые номера постов в пределах темы и привязывать вывод рекламы формулой считающей относительно вывода постов на странице
числа будут всегда кратные одному числу

к примеру вывожу 3 блока рекламы в посте 1 - 3 -5 и так на всех страницах

это сама идея,реализаций множество,я выбрал системный скрипт только из-за специфики сайта,,,хотя ничего не утверждаю однозначно )))

Добавлено (12.01.2013, 01:20)
---------------------------------------------
так же выбрал подобное решение,потому-что мне нужно было,чтобы 1 пост был уникальным с выводом эмулятора,а в последующие юзеры уже смогли добавлять свои комментарии,я меняю всю форму вида матералов

 
Дата: Суббота, 12.01.2013, 13:54 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


true,
Цитата (true, Сб, 12.01.2013, 01:20:12)
к примеру вывожу 3 блока рекламы в посте 1 - 3 -5 и так на всех страницах

Ну, если выводишь - тогда нет вопросов)


 
Скрипты и коды для юкоз - Форум аццкого кодера » Как сделать? Информация для вновь прибывших » Инструкции, подробные описания и тпт. » Реклама между новостями, постами. Re-Pack (По мотивам: Реклама между новостями, постами)
  • Страница 1 из 1
  • 1
Поиск:


Мобильная версия