Não estamos satisfeitos com nenhuma das redes de anúncios suportadas pelo Discourse, mas encontramos uma que funciona perfeitamente em nosso blog e gostaríamos de implementá-la também em nosso fórum. No entanto, ela exige que copiemos um código e o coloquemos no HTML do nosso site. Onde exatamente devemos fazer isso e isso funcionaria?
Basta usar componentes de tema para fazer isso
Obrigado, mas não sou desenvolvedor. Meu conhecimento não vai além de configurar um Discord (o que me levou uma semana) e alterar as configurações do site.
Então você pode começar a partir daqui
Seu objetivo é criar um componente de tema, adicionar o <script> de anúncio na aba /head e ativar o componente de tema no seu tema principal.
Quando seu componente de tema for ativado, você precisará permitir a URL do seu script seguindo este guia:
Bem-vindo ao clube, estamos no mesmo barco. Mas, um aviso rápido: isso não funcionará com componentes de tema, então a resposta sugerida não funcionará. Nós já seguimos por esse caminho, assim como outros (veja nossos tópicos sobre isso). Com componentes de tema, o script do anúncio não aparecerá no corpo onde deveria. O comentarista que sugeriu usar o script no /head pode não estar familiarizado com a forma como os scripts de anúncio precisam ser realmente implementados. Tentamos usar componentes de tema, mas não conseguimos, pois há limitações sobre o que é possível fazer com eles.
No final das contas, você precisará de um plugin para fazer o que é necessário para exibir de outras redes de anúncios. Infelizmente, ainda não existe um plugin para isso. A única esperança é que o Discourse adicione um script de anúncio genérico no plugin de Anúncios para suportar scripts de anúncios de terceiros que precisam ser injetados na área do anúncio. Atualmente, você basicamente só pode usar o Google DFP, mas se usar outro provedor de anúncios, está ferrado e não consegue monetizar o fórum. Isso é lamentável, pois existem muitas outras boas redes de anúncios (por exemplo, Adbutler, Openx etc.), e você não deveria ser forçado a usar o Google DFP para veicular anúncios.
Bem, vamos torcer para que o Discourse adicione um script de anúncio genérico ao plugin de anúncios. Não vejo por que isso seria difícil de fazer, mas, honestamente, não tenho ideia de como programar em Ruby e Ember, então não sei como fazer isso. Em teoria, tudo o que precisam é de uma área de texto no plugin que aceite tags de script e depois as injete nas áreas de anúncio que o plugin já designa. Ter uma caixa de script genérica, em vez de uma caixa que aceite apenas HTML puro, resolverá praticamente todas as redes de anúncios, sem a necessidade de implementar código específico para cada uma delas.
Caleb, por curiosidade, qual serviço você está usando no seu blog?
É um pouco difícil abordar seus pontos sem contexto. Seria muito útil se você pudesse incluir mais detalhes sobre qual rede de anúncios você está se referindo e exatamente como ela não funcionou para você.
Isso não é totalmente verdade e depende realmente da rede de anúncios que você está tentando usar. Se for um requisito estrito que o script da rede de anúncios seja colocado ao lado da tag </body> — o que é improvável —, então a culpa é realmente da rede de anúncios por ter um requisito tão estrito e irrazoável.
Scripts adicionados em um tema são carregados em um arquivo theme.js, que é então injetado na tag <head> do documento.
Isso nos dá algum nível de controle e permite implementar recursos úteis, como impedir que temas quebrados derrubem todo o site, por exemplo.
Isso também é apenas parcialmente verdadeiro. Temas podem modificar qualquer coisa no lado do cliente. Isso significa que tudo o que é escrito em JavaScript no Discourse está acessível pelos temas.
Na verdade, todo o plugin oficial de anúncios pode ser convertido em um componente de tema e funcionaria. A única coisa que faltaria seria a capacidade de adicionar um arquivo ads.txt, pois isso exigiria acesso ao back-end. A razão pela qual não fizemos isso é porque um plugin é uma implementação mais limpa para esse propósito — principalmente porque inclui mais de um provedor. Então, sim, temas têm limitações, mas isso não é realmente o ponto principal aqui.
Há uma observação muito importante aqui: o Discourse é um aplicativo de página única (SPA). Isso significa que, uma vez que você carrega o aplicativo na visualização inicial da página, toda a navegação que ocorre depois disso é gerenciada pelo Discourse e não pelo seu navegador.
Isso é importante porque uma rede de anúncios precisa fornecer os ganchos necessários para que aplicativos de página única atualizem as informações da página e veiculem novos anúncios. Não sei muito sobre Adbutler ou Openx, mas não consegui encontrar nenhuma documentação sobre suporte a aplicativos de página única de nenhum desses provedores.
Então, se a rede de anúncios não fornecer os ganchos necessários, é realmente culpa do Discourse que ela não seja suportada?
Você não está realmente obrigado a usar o DFP. Ele é apenas uma das seis opções disponíveis no plugin oficial de anúncios, e vou listá-las aqui para referência:
- DFP
- AdSense
- Google Ads
- Amazon Advertising
- Codefund
- Carbon Ads
Novamente, porque o Discourse é um aplicativo de página única, “genérico” simplesmente não funcionará.
Claro, você pode carregar qualquer script de anúncio que quiser em um tema, mas eles só serão acionados na visualização inicial da página. Qualquer coisa que venha depois disso será ignorada pelo script da rede de anúncios — a menos que a rede forneça os ganchos necessários.
Veja como uma integração assim se parece em uma rede de anúncios que suporta aplicativos de página única.
Na verdade, você precisa ter implementações de código específicas para cada rede de anúncios.
Além disso, acho que você está confundindo anúncios internos com anúncios de redes de anúncios. A razão pela qual a caixa aceita apenas HTML é porque ela deve ser usada para criar seus próprios anúncios internos. É uma implementação muito direta que já foi configurada no plugin, para que você não precise se preocupar com ganchos de página única se quiser veicular apenas seus próprios anúncios.
Além disso, se você realmente quiser que outra rede de anúncios seja incluída no plugin de anúncios, há precedentes de adicionarmos novas redes com base em contribuições da comunidade.
O exemplo mais recente disso é a integração com o Carbon Ads:
No entanto, a responsabilidade de configurar tudo corretamente recai sobre você.
Se você achar essa implementação muito complicada, então é isso. Sou muito competente em trocar os pneus ou o óleo do meu carro, mas se preciso fazer a manutenção da transmissão, simplesmente procuro alguém que saiba mais do que eu e pago para que faça isso por mim.
O que quero dizer é que, se você realmente quiser usar outra rede de anúncios e não conseguir fazer isso sozinho, sugiro criar um tópico em Marketplace e tenho certeza de que você chamará a atenção de algum desenvolvedor se tiver o orçamento adequado.
Obrigado pela sua resposta detalhada e ajuda. Há muito aqui para assimilar.
No entanto, acredito que houve um mal-entendido. O AdButler é um tipo de Ad Server, semelhante ao Google DFP. Esses provedores ajudam você a gerenciar seus próprios anúncios com anunciantes. Já coisas como o Adsense (e o Carbon, aparentemente) são Ad Networks. As Ad Networks funcionam de maneira um pouco diferente dos Ad Servers. Nosso problema é com Ad Servers, e não com Ad Networks. Peço desculpas pela confusão.
Precisamos ser capazes de gerar receita com nosso site para continuar operando, e para isso precisamos usar um Ad Server para gerenciar anunciantes. Usamos o Ad Butler para isso. A funcionalidade de Anúncios Internos não chega nem perto do necessário. Pelo que pude perceber, o único Ad Server suportado pelo Plugin de Anúncios do Discourse é o Google DFP. Na minha opinião, o Google DFP é péssimo, por vários motivos que não são relevantes para esta discussão. Claro, se formos forçados a usar o Google DFP, porque não há outro servidor de anúncios suportado pelo Plugin de Anúncios, faremos isso, pois o Discourse oferece tantos outros benefícios que isso acaba superando a mera irritação de usar o Google DFP.
Entendo perfeitamente que cabe a nós desenvolver um plugin para outro Ad Server que não seja o Google DFP, e que o Discourse não pode atender a todas as necessidades, especialmente porque já oferece tanto fora da caixa, de forma simplesmente impressionante. Nós submetemos isso ao marketplace e alguns desenvolvedores experientes em Discourse nos disseram que não seria possível fazer isso sem um plugin, e que o trabalho seria bastante caro e demandaria muito tempo, em relação a algo que parece ser um problema simples.
Você tem razão ao dizer que ainda não tenho ideia de como o Discourse funciona, pois estamos apenas começando a usá-lo e aprendendo Ruby e Ember. No entanto, com o WordPress, por exemplo, basta inserir o script de anúncio do Ad Butler em uma caixa de widget, e ele funciona. Não há nada para programar. Por isso, fiquei um pouco surpreso ao descobrir que fazer algo como o Ad Butler funcionar com o Discourse fosse tão complicado. Entendo que o Discourse é obviamente muito diferente do WordPress e muito mais complexo, mas ainda não compreendo por que algo assim exige tanta codificação.
Em resumo, continuaremos tentando e entraremos em contato com o próprio Ad Butler para ver se eles podem ajudar. Com certeza será do interesse deles desenvolver algo para o Discourse, pois podem conseguir muitos clientes com isso (uma vez que você usa o Ad Butler, nunca mais volta para o DFP). Também daremos uma olhada na integração do Carbon Ads e tentaremos entender como funciona, para ver se podemos adaptá-la às nossas necessidades.
Obrigado novamente.
Um rápido acompanhamento: analisei o código dos Carbon Ads no plugin de anúncios e já tenho uma compreensão conceitual de como isso foi feito. Assim, espero que possamos usar isso como ponto de partida para implementar o Ad Butler. Obrigado pela informação sobre os Carbon Ads.
Oi @sfoster, há alguma novidade sobre a integração do AdButler?
Não. Entramos em contato com alguns programadores, mas ninguém nos deu um orçamento e um cronograma definitivos ainda. No WordPress, basta inserir o código em um widget e pronto. Ficamos surpresos com a complexidade de parte da programação no Discourse. De qualquer forma, vamos dar uma olhada mais a fundo, então eu te mantenho informado. Mas estamos inclinando-nos a migrar diretamente para o DFP, que é suportado pelo plugin principal, mesmo que não estejamos muito satisfeitos em ter que fazer isso.