Мы не довольны ни одной из поддерживаемых Discourse рекламных сетей, но мы нашли одну, которая отлично работает на нашем блоге, и хотели бы внедрить её и на нашем форуме. Однако для этого нам нужно скопировать код и вставить его в HTML нашего сайта. Где именно это нужно сделать и будет ли это работать?
Просто используйте компоненты темы для этого
Спасибо, но я не разработчик. Мои знания ограничиваются настройкой Discord (на что у меня ушла неделя) и изменением настроек сайта.
Тогда вы можете начать отсюда
Ваша цель — создать компонент темы, добавить тег <script> с рекламой во вкладку /head и активировать этот компонент темы в вашей основной теме.
После активации компонента темы вам нужно добавить URL вашего скрипта в белый список, следуя этой инструкции:
Добро пожаловать в клуб, мы в одной лодке. Но сразу предупреждаю: это не сработает с компонентами темы, поэтому предложенный ответ не поможет. Мы уже проходили этот путь, как и другие (см. наши темы по этому вопросу). С компонентами темы скрипт рекламы не отображается в теле страницы там, где он должен быть. Комментарий, предлагающий использовать скрипт в разделе /head, возможно, исходит от человека, который не знаком с тем, как на самом деле должны реализовываться рекламные скрипты. Мы пробовали использовать компоненты темы, но не смогли этого сделать из-за ограничений, накладываемых на них.
В конечном итоге вам понадобится плагин, чтобы реализовать отображение от других рекламных сетей. К сожалению, такого плагина пока не существует. Единственная надежда — что в плагин Ads будет добавлен универсальный рекламный скрипт для поддержки сторонних рекламных скриптов, которые необходимо внедрять в область размещения рекламы. В данный момент вы можете использовать в основном только Google DFP, но если вы используете другого рекламодателя, вы в тупике и не сможете монетизировать форум. Это прискорбно, поскольку существует множество других хороших рекламных сетей (например, Adbutler, Openx и др.), и вас не должны заставлять использовать Google DFP для показа рекламы.
Остаётся надеяться, что в плагин Ads будет добавлен универсальный рекламный скрипт. Я не вижу особых причин, почему это должно быть сложно, но честно говоря, я не разбираюсь в программировании на Ruby и Ember, поэтому не знаю, как это сделать. Теоретически им нужно лишь добавить текстовое поле в плагин, которое будет принимать теги script, а затем внедрять их в те области рекламы, которые плагин уже определяет. Наличие универсального поля для скриптов, в отличие от поля, принимающего только чистый HTML, покроет практически все рекламные сети без необходимости писать специфический код для каждой из них.
Калеб, из интереса, какой сервис вы используете в своём блоге?
Без контекста довольно сложно ответить на ваши пункты. Было бы очень полезно, если бы вы привели более конкретную информацию о том, о какой рекламной сети идёт речь и почему именно она не сработала для вас.
Это не совсем так, и всё зависит от рекламной сети, которую вы пытаетесь использовать. Если жёсткое требование состоит в том, что скрипт рекламной сети должен быть размещён рядом с тегом </body> — что маловероятно — то проблема действительно на стороне рекламной сети, предъявляющей такие жёсткие и необоснованные требования.
Скрипты, добавленные в тему, извлекаются в файл theme.js, который затем внедряется в тег <head> документа.
Это даёт нам определённый уровень контроля и позволяет реализовать полезные функции, например, предотвращение падения всего сайта из-за нерабочей темы.
Это тоже верно лишь отчасти. Темы могут изменять что угодно на стороне клиента. Это означает, что всё, что написано на JavaScript в Discourse, доступно для тем.
Фактически, весь официальный плагин для рекламы можно преобразовать в компонент темы, и он будет работать. Единственное, чего не будет, — это возможность добавить файл ads.txt, так как для этого требуется доступ к бэкенду. Мы не сделали этого, потому что плагин является более чистым решением для этой цели, особенно когда речь идёт о поддержке нескольких провайдеров. Да, у тем есть ограничения, но это не главная суть здесь.
Здесь есть очень важное замечание: Discourse — это одностраничное приложение (SPA). Это означает, что после первоначальной загрузки приложения при первом просмотре страницы вся дальнейшая навигация обрабатывается самим Discourse, а не браузером.
Это важно, потому что рекламная сеть должна предоставлять необходимые механизмы (хуки) для одностраничных приложений, чтобы обновлять информацию на странице и показывать новую рекламу. Я мало знаю о Adbutler или Openx, но не смог найти никакой документации о поддержке одностраничных приложений со стороны этих провайдеров.
Так что, если рекламная сеть не предоставляет необходимых хуков, действительно ли это вина Discourse, что она не поддерживается?
Вас на самом деле не заставляют использовать DFP. Это лишь один из шести вариантов, доступных в официальном плагине для рекламы, и я приведу их здесь для справки:
- DFP
- AdSense
- Google ads
- Amazon advertising
- Codefund
- Carbon Ads
Опять же, поскольку Discourse — это одностраничное приложение, «универсальный» подход просто не сработает.
Конечно, вы можете загрузить любые рекламные скрипты в тему, но они будут срабатывать только при первоначальной загрузке страницы. Всё, что происходит после этого, будет пропущено скриптом рекламной сети — если только сама сеть не предоставит необходимые хуки.
Вот как выглядит такая интеграция с рекламной сетью, поддерживающей одностраничные приложения:
На самом деле для каждой рекламной сети действительно требуется отдельная реализация кода.
Кроме того, я думаю, что вы путаете внутреннюю рекламу (house ads) с рекламой от рекламных сетей. Поле принимает только HTML, потому что оно предназначено для создания собственной внутренней рекламы. Это очень простое решение, которое уже реализовано в плагине, чтобы вам не пришлось возиться с хуками для одностраничных приложений, если вы хотите показывать только свою собственную рекламу.
Более того, если вы действительно хотите, чтобы другая рекламная сеть была добавлена в плагин, то есть прецедент добавления новых сетей на основе вкладов сообщества.
Последний пример — интеграция с Carbon Ads:
Однако ответственность за правильную настройку всего лежит на вас.
Если вам кажется, что такая реализация слишком сложна, то таковы дела. Я отлично умею менять шины или масло в машине, но если нужно обслуживать трансмиссию, я просто нахожу человека, который знает больше меня, и плачу ему за работу.
Суть в следующем: если вы действительно хотите использовать другую рекламную сеть, но не можете справиться с этим самостоятельно, я предлагаю создать тему в канале Marketplace. Уверен, вы привлечёте внимание разработчика, если у вас есть соответствующий бюджет.
Спасибо за ваш подробный ответ и помощь. Здесь много информации для осмысления.
Однако, я думаю, здесь возникло недопонимание. AdButler — это тип сервера рекламы, аналогичный Google DFP. Такие провайдеры помогают вам управлять собственными рекламными кампаниями с рекламодателями. В то же время такие сервисы, как Adsense (и, судя по всему, Carbon), являются рекламными сетями. Рекламные сети работают несколько иначе, чем серверы рекламы. Наша проблема касается именно серверов рекламы, а не рекламных сетей. Приношу извинения за путаницу.
Нам необходимо зарабатывать на нашем сайте, чтобы продолжать работу, и для этого нам нужен сервер рекламы для управления рекламодателями. Мы используем AdButler для этих целей. Функциональность «Внутренняя реклама» даже близко не соответствует нашим требованиям. Единственный сервер рекламы, поддерживаемый плагином для рекламы от Discourse, насколько я понимаю, — это Google DFP. На мой взгляд, Google DFP — это отстой по разным причинам, которые не имеют отношения к этому обсуждению. Конечно, если мы будем вынуждены использовать Google DFP, потому что другой сервер рекламы не поддерживается плагином для рекламы, то мы будем вынуждены это сделать, поскольку у Discourse есть так много других преимуществ, что это как бы перевешивает чистое раздражение от использования Google DFP.
Я полностью понимаю, что разработка плагина для другого сервера рекламы, кроме Google DFP, ложится на нас, и что Discourse не может удовлетворить каждую отдельную потребность, особенно учитывая, что он уже предлагает так много превосходных функций «из коробки».
Мы отправили этот запрос на маркетплейс, и некоторые опытные разработчики, работающие с Discourse, сообщили нам, что это невозможно без плагина, а работа оказалась довольно дорогой и трудоемкой по сравнению с тем, что кажется простой проблемой.
Вы правы в том, что я пока не разбираюсь в том, как работает Discourse, поскольку мы только начинаем с ним работать и изучаем Ruby и Ember. Однако, например, в WordPress мы просто вставляем рекламный скрипт от AdButler в виджет, и он сразу начинает работать. Ничего программировать не нужно. Поэтому я был несколько удивлен, что настройка AdButler для работы с Discourse оказалась такой сложной задачей. Я понимаю, что Discourse, очевидно, сильно отличается от WordPress и гораздо сложнее, но я все еще не понимаю, почему такая простая вещь требует столь интенсивного программирования.
В заключение, мы продолжим попытки и обратимся напрямую к AdButler, чтобы узнать, смогут ли они помочь. Это, безусловно, будет в их интересах, поскольку они могут получить множество клиентов благодаря этому (как только вы начнете использовать AdButler, вы никогда не вернетесь к DFP). Мы также изучим интеграцию с Carbon Ads и постараемся понять, как она работает, возможно, мы сможем адаптировать её под свои нужды.
Спасибо еще раз.
Короткое продолжение: я изучил код для Carbon Ads в плагине Ad и теперь понимаю концепцию его работы, так что, надеюсь, это послужит хорошей отправной точкой для внедрения Ad Butler. Спасибо за предупреждение насчёт Carbon Ads.
Привет @sfoster, есть какие-то новости по интеграции с AdButler?
Нет. Мы связались с несколькими программистами, но пока никто не предоставил нам твердую оценку стоимости и сроков. В WordPress мы просто вставляем код в виджет, и всё готово. Нас удивило, насколько сложным оказывается программирование в Discourse. В любом случае, мы ещё немного поищем, поэтому я буду держать вас в курсе. Однако мы склоняемся к переходу на DFP, который поддерживается в основном плагине, даже если нам совсем не нравится необходимость делать это.