Вставить рекламный блок после тега "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, время: 19:23. |