Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Код для показа баннеров на другом сайте

00 голосов
8
Идет планомерный переезд с самописного движка на Битрикс. Приходится выкручиваться по страшному, что бы создавалась иллюзие единого сайта. И тут столкнулся с одной проблемкой.
Надо полноценно и на все 100% использовать баннерную систему Битрикса. Пока не было таргетинга и тонких настроек показа - все было нормально, баннеры показывались через iframe. Но теперь это уже не проходит, надо настроить показ определенных баннеров в определенных местах + для определенных регионов.
Iframe уже не прокатывает, так как он не умеет схлопываться, если баннера нет. Да и не воспринимает так система адрес текущей страницы.
Вопрос: может есть код, наподобии того, что предоставляет тот же адривер? Беру код и вставляю в сайт работающий на любом движке, а у себя в Битриксе уже спокойно настраиваю показы как мне надо.
спросил 02 Май, 13 от Claid (200 баллов)

8 Ответы

00 голосов
Так они на одном сервере?

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

Если да, то есть решение.
ответил 02 Май, 13 от Arn4 (2,140 баллов)
00 голосов
Есть куча нюансов, когда такой переезд невозможен.
А так, отвечу на вопрос, оба движка не то что на одном сервере, они и под одним доменным именем сейчас. Единсвенно, что они берут инфу из разных баз данных. По причине того, что старый сайт в кодировке win, а новые блоки в кодировке UTF.
В общем нюансов слишком много.

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

Дело в том, что планируется создание сети разных сайтов (одно направление фирмы - один сайт) и для уменьшения нагрузки, увеличения надежности и т.д., они будут держаться на разных серверах. А хочется, что бы некоторые модули были сквозными. Если с регистрацией все понятно, как это реализовать, собственно все инструкции есть, а вот как поступить с той же баннерной сетью в даном случае?
ответил 03 Май, 13 от Claid (200 баллов)
00 голосов
Цитата
Павел Веселков пишет:
А так, отвечу на вопрос, оба движка не то что на одном сервере, они и под одним доменным именем сейчас.

Тогда я бы сделал так.
На старом сайте в месте показа баннера (-ов) поставил бы обычный инклуд:
include('..../banner.php');

banner.php:
Код
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

if (CModule::IncludeModule("advertising"))
{
   $APPLICATION->ShowBanner("TYPE");
}

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");
?>


То есть и старый функционирует сайт и в инклуде мы Битрикс вызываем. Такая обертка не выводит ничего из Битрикса, но позволяет пользоваться его API.
Может быть что-то придется еще добавить, но думаю такого хватит.

Цитата
Павел Веселков пишет:
Дело в том, что планируется создание сети разных сайтов (одно направление фирмы - один сайт) и для уменьшения нагрузки, увеличения надежности и т.д., они будут держаться на разных серверах. А хочется, что бы некоторые модули были сквозными. Если с регистрацией все понятно, как это реализовать, собственно все инструкции есть, а вот как поступить с той же баннерной сетью в даном случае?

Чисто теоретически такое возможно. Но есть много нюансов. Решение не на пару строк и не совсем бесплатное :)
Если кратко, то принцип GA - дергаем JavaScript с сайта Битрикса, а тот смотрит откуда вызвано, какая страница и прочие прелести. Для большего шика можно передавать в гете для скрипта доп.параметры.
Если вам это интересно, то составьте ТЗ и киньте заявку. Думаю найдутся ребята, кто сделают это как коммерческий продукт.
ответил 04 Июль, 13 от Arn4 (2,140 баллов)
00 голосов
Цитата
Павел Веселков пишет:
По причине того, что старый сайт в кодировке win, а новые блоки в кодировке UTF.

Да, может придется буферизировать контент, отдаваемый ShowBanner и перекодировать его. Нюансов и правда много, но идею я вам дал.
ответил 08 Окт, 13 от Arn4 (2,140 баллов)
00 голосов
Цитата
Антон Долганин пишет:
Тогда я бы сделал так.На старом сайте в месте показа баннера (-ов) поставил бы обычный инклуд:include('..../banner.php');


Пройденный этап. Самое удивительное это то, что пару конфликтов старого движка и Битрикса я удалил, но только не этот. При такой вставке на странице показывается !только! баннер =)

Цитата
Антон Долганин пишет:
Да, может придется буферизировать контент, отдаваемый ShowBanner и перекодировать его. Нюансов и правда много, но идею я вам дал.


С этим уже проблем нет. +)
ответил 08 Янв, 14 от Claid (200 баллов)
00 голосов
Цитата
Павел Веселков пишет:
Пройденный этап. Самое удивительное это то, что пару конфликтов старого движка и Битрикса я удалил, но только не этот. При такой вставке на странице показывается !только! баннер =)

Тогда только дергать баннеры с помощью API, считать показы и прочее. Занятие не из приятных :)
ответил 25 Апр, 14 от Arn4 (2,140 баллов)
00 голосов
Цитата
Павел Веселков пишет:
При такой вставке на странице показывается !только! баннер =)

Попробуйте убрать подключение epilog_after.php.
ответил 20 Авг, 14 от Ixie (540 баллов)
00 голосов
Цитата
Vadim Dumbravanu пишет:
Попробуйте убрать подключение epilog_after.php.


Тогда не подключается сам модуль рекламы.

Я нашел решение для варианта, когда оба движка на одном хосте и под одним доменным именем. но для корректного показа необходимо, что бы абсолютно все записи были в одной кодировке. Надо не вставлять баннер, а забирать его html код.
ответил 26 Дек, 14 от Claid (200 баллов)

Похожие вопросы

0 голосов
1 ответ
спросил 01 Апр, 14 от Kania (5,180 баллов)
0 голосов
3 ответов
0 голосов
1 ответ
0 голосов
4 ответов
спросил 12 Июль, 13 от asagava (680 баллов)