Вставить рекламный блок после тега "name="cat" в статье
Задался вопросом вставки рекламного блока AdSense посреди поста. Вот после строк кода в теле статьи:
<a name="cut"></a> Возможно найдутся добрые люди, которые подскажут как это реализовать? |
denka977,
а как вы обычно добавляите? |
Цитата:
на текущем движке там все условия сводят в потребности привязки на js. мне желательно хотя бы объяснить, как можно: чтобы добавлялся текст после строк "<a name="cut"></a>" в коде страницы. ИЛИ чтобы добавлялся текст после первого закрывающегося тега p в теле статьи (</p>) |
<script>
function insertAfter(elem, refElem) {
return refElem.parentNode.insertBefore(elem, refElem.nextSibling);
}
window.onload = function(){
var a = document.getElementById('test');
var text = document.createTextNode('Текст после ссылки');
insertAfter(text,a);
}
</script>
<a href="#" id="test">Ссылка</a>
|
|
Цитата:
http://javascript.ru/tutorial/dom/se...elementsbyname Но пока не выходит его привести в работоспособность. |
denka977,
нет кода нет совета |
Цитата:
<script>
function insertAfter(elem, refElem) {
return refElem.parentNode.insertBefore(elem, refElem.nextSibling);
}
window.onload = function(){
var a = document.getElementByName('test');
var text = document.createTextNode('Текст после ссылки');
insertAfter(text,a);
}
</script>
<a name="test"></a>
однако, неработает |
denka977,
a это массив, чтобы выбрать элемент массива нужен индекс insertAfter(text,a[0]); |
Цитата:
|
denka977,
потому что s пропущено |
Цитата:
<script>
function insertAfter(elem, refElem) {
return refElem.parentNode.insertBefore(elem, refElem.nextSibling);
}
window.onload = function(){
var a = document.getElementsByName('test');
var text = document.createTextNode('Текст после ссылки');
insertAfter(text,a[0]);
}
</script>
<a name="test"></a>
Заработало! Еще раз спасибо! Теперь относительно AdSense.. Пробую вывести рекламный блок так:
<script>
function insertAfter(elem, refElem) {
return refElem.parentNode.insertBefore(elem, refElem.nextSibling);
}
window.onload = function(){
var a = document.getElementsByName('cut')[0].innerHTML += '<ins class="adsbygoogle"\n\
style="display:inline-block;width:728px;height:90px"\n\
data-ad-client="ca-pub-------------------"\n\
data-ad-slot="---------"></ins>\n\
<script>(adsbygoogle = window.adsbygoogle || []).push({});</scr'+'ipt>';
insertAfter(text,a[0]);
}
</script>
но вместо баннера отображается желтый фон. Причем баннер я беру активный, который уже используется, значит он должен отображаться сразу (это относительно логики AdSense) В чем причина? |
var a = document.getElementsByName('cut')[0]
У вас в a уже хранится один элемент, а не массив, зачем a[0] передавать в insertAfter? |
Цитата:
Я в этом деле профан, так что.. что-то в коде выходит не так, ибо баннер AdSense судя по конечному коду не погружается до конца |
denka977,
скрипт текстом не сработает |
Цитата:
|
denka977,
создать тег sript ему добавить type вставить на страницу и src прописать |
Цитата:
<script>
function insertAfter(elem, refElem) {
return refElem.parentNode.insertBefore(elem, refElem.nextSibling);
}
window.onload = function(){
var a = document.getElementsByName('cut')[0].innerHTML = '<script type="text/javascript" src="http://site.com/adsense.html"></scr'+'ipt>';
insertAfter(text,a);
}
</script>
так? тогда не понимаю, как код баннера вставить в файл, чтобы он отображался. Не получается |
denka977,
http://javascript.ru/forum/misc/2368...v-skripte.html http://javascript.ru/forum/misc/1041...et-skript.html и ещё куча подобного на форуме |
Задача решена
Что я сделал: (если это дикий костыль - поправьте меня). Основной код в шаблоне стал таким:
<script>
function insertAfter(elem, refElem) {
return refElem.parentNode.insertBefore(elem, refElem.nextSibling);
}
var script = document.createElement('script');
script.src = 'http://site.com/adsense.js';
window.onload = function(){
var a = document.getElementsByName('cut')[0].appendChild(script);
var a = document.getElementsByName('cut')[0].innerHTML = '<ins class="adsbygoogle"\n\
style="display:inline-block;width:468px;height:60px"\n\
data-ad-client="ca-pub-00000000000000000"\n\
data-ad-slot="000000000"></ins>';
insertAfter(text,a);
}
</script>
В файл adsense.js прописал:
(adsbygoogle = window.adsbygoogle || []).push({});
|
Опишите логику своих действий. Вы передаете в insertAfter переменную text, однако она у вас нигде не инициализирована.
|
Цитата:
Я так понял в коде немножко лишнего имеется.. потому что я скопипастил первый опубликованый пример в топике и на его основе химичил. Сейчас проанализировал весь код, удалил пару ненужных (имхо) строк и конечный результат вышел таков:
<script>
var script = document.createElement('script');
script.src = 'http://site.com/adsense.js';
window.onload = function(){
var a = document.getElementsByName('cut')[0].appendChild(script);
var a = document.getElementsByName('cut')[0].innerHTML = '<div class="ad123"><ins class="adsbygoogle"\n\
style="display:inline-block;width:728px;height:90px"\n\
data-ad-client="ca-pub-000000000000000000"\n\
data-ad-slot="000000000"></ins></div>';
}
</script>
верно? |
Чтобы было совсем гуд
<script>
var script = document.createElement('script');
script.src = 'http://site.com/adsense.js';
window.onload = function(){
var a = document.getElementsByName('cut')[0];
a.appendChild(script);
a.innerHTML = '<div class="ad123"><ins class="adsbygoogle"\n\
style="display:inline-block;width:728px;height:90px"\n\
data-ad-client="ca-pub-000000000000000000"\n\
data-ad-slot="000000000"></ins></div>';
}
</script>
|
| Часовой пояс GMT +3, время: 14:26. |