Без контекста довольно сложно ответить на ваши пункты. Было бы очень полезно, если бы вы привели более конкретную информацию о том, о какой рекламной сети идёт речь и почему именно она не сработала для вас.
Это не совсем так, и всё зависит от рекламной сети, которую вы пытаетесь использовать. Если жёсткое требование состоит в том, что скрипт рекламной сети должен быть размещён рядом с тегом </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. Уверен, вы привлечёте внимание разработчика, если у вас есть соответствующий бюджет.