基本的には、以下のサイトと非常に似たものを求めています。
Quora のトピックページの右サイドバーにある 300x250 の広告に注目してください。
私は、各トピックに多数の投稿がある、Quora と似た Discourse フォーラムのトピックレイアウトを持っています。ユーザーがトピックページをスクロールしてより多くの投稿を読む際、右サイドバーの広告が固定(スティッキー)で表示され、Discourse の現在のトピックナビゲーションスライダー(トピックタイムライン)の直下に留まるようにしたいのです。
これは、https://www.quora.com/What-are-the-lessons-people-most-often-learn-too-late-in-life で見られる動作と同じです。
これをどのように実現できますか?私はすでに GitHub - discourse/discourse-adplugin: Official Discourse Advertising Plugin. Install & Start Serving Ads on Your Discourse Forum · GitHub を使用していますが、その広告プラグインにはそのようなオプションは見つかりませんでした。
How to show advertising in timeline of the topic page? という情報を見つけましたが、ここに Google AdSense の広告コードをどう挿入すればよいか確信が持てません。コードは以下のようになっていますが、Ember JS の HTML にこれをどう挿入すればよいか分かりません。スクリプトタグが既に存在するため、スクリプトと閉じられていない div のエラーが発生します。既存の Discourse Ember JS スクリプト内に Google JS スクリプトをどのように読み込めばよいのでしょうか?
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Topic side bar timeline -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-708790731309"
data-ad-slot="5067761793"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
これを実行しようとすると、以下のエラーが発生します。
私のコードは以下の通りです。
<script type="text/discourse-plugin" version="0.8">
api.decorateWidget('topic-timeline-container:before', helper => {
return helper.h('div.side-block', [
helper.rawHtml('<div id="friends"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-708790731302" data-ad-slot="5067761793" data-ad-format="auto" data-full-width-responsive="true"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({});</script></div>'),
])
});
</script>
また、Discourse の目次(Table of Contents)機能(https://meta.discourse.org/t/discotoc-automatic-table-of-contents/111143)も使用しているため、広告も現在の目次の下に表示される必要があります。現在、目次が表示されるとトピックタイムラインが消えてしまうことに気づきました。
どなたかこれを達成する方法を教えてください。このスティッキー広告はユーザーによりよく表示されるため、CPM を向上させることができます。
@ladydanger @neil 手伝っていただけますか?
よろしくお願いいたします。
bartv
(Bart )
2020 年 9 月 11 日午後 8:29
2
フローティング広告はAdsenseの利用規約に違反する可能性があると思いますので、ご注意ください。
いいえ、AdSenseのポリシーに違反しているわけではありません。私はすでに数年間、Google認定パートナーと連携してサイトを運営しており、彼ら自身がこのフローティング広告を追加しました。Quoraも同じことをしています。
あなたの投稿でも同様に行われています。しかし、AdSenseタグのiframeバージョンをどのように取得すればよいのでしょうか?
bartv
(Bart )
2020 年 9 月 11 日午後 8:32
5
私のフローティング広告は、AdSenseのものではなく、私自身のものです。
多くの主要ニュースサイトでは、ユーザーがページの左側にあるニュースを読みながらスクロールする際、右サイドバーに固定広告を表示しています。
Forbes、Huffington Post、Quora、9gag、BBC などにも含まれます。
Ember.js のコードブロック内で AdSense コードをレンダリングする方法をご教示ください。構文エラーが発生しています。
担当者があなたのアカウントに設置したステッキーなアドセンス広告ユニットの許可はありますか?私が言っているのは、あなたが挙げたパブリッシャーと、私たちも同様ですが、彼らとの間でプレミアムパブリッシャー契約を結んでいる必要があるということです。
もしそうでなければ、アカウントが停止される最も早い方法の一つです。念のためお伝えします。また、この道を進みたい他の人々にとっても参考になるかもしれません。
@Terrapop はい、私は Google のプレミアムパブリッシャーパートナーです。問題の解決にご協力いただけますか?一日中対応を試みましたが、うまくいきません。
また、Google Ad Exchange のプレミアムパートナーでもあります。
他にも広告ネットワークを利用しており、それらのコードを sticky にも配置できますが、それらはすべて HTML コードに埋め込まれる JS ベースのタグです。しかし、上記のトピック投稿のように JS タグを Ember.js のコード内に挿入すると、構文エラーが発生します。
なぜ、タイムラインコンテナの上に ID を持つ div を配置して、DFP 経由でターゲティングやトラフィックを制御しないのでしょうか。特に、その場所にレスポンシブな Adsense ユニットではなく、固定サイズのユニットを表示したい場合です。広告コンテナには JS は一切不要です。Discourse 上のすべての広告(prebid.js を通じたヘッダー入札を含む)も、このように実装しています。そうでない場合、おそらくプラグインの開発が必要になるでしょう。テンプレートコンポーネントで生スクリプトタグをどこかに配置できるかどうかは私にはわかりません。おそらく不可能だと思われますが、他の人がより良い答えを持っているかもしれません。
Terrapop:
タイムラインの上に ID を配置
ご提案いただき、誠にありがとうございます。私は実際に DFP を使ったことはありませんが、DFP のアカウントは持っています。
DFP を通して、タイムラインコンテナの上に ID が付いた div を配置し、ターゲティングやトラフィックを設定する方法のコード例をご提供いただけますでしょうか?
Discourse の設定と DFP アカウントでどのような変更が必要か、スクリーンショットとコードサンプルを併せてご提示いただければ、大変助かります。
恐れ入りますが、トピックページのレイアウトのカスタマイズや Discourse 全般に詳しくなく、デフォルト設定のまま利用していました。お手伝いいただければ、大変嬉しく思います。
Premium AdX パートナーでありながら、DFP を一度も使ったことがないなんて、どうしてそんなことが?まあ、仕方ないですね…
メタサイトには、コンポーネントの構築方法に関するガイドが多数あります。ただし、DFP の実装コードは共有できません。それにはヘッダービッディングも組み込まれており、あなたが求めるものよりもはるかに複雑なため、混乱を招くだけです。しかし、Google はシンプルなセットアップのための詳細なドキュメントを提供しており、基本的な JavaScript の知識で十分です。
私の広告ネットワークは常にDFPを代わりに処理してくれていますので、私は直接扱っていません。
あなたの個人コードを共有するのではなく、シンプルなコードベースの例を示していただければよかったのです。「自分のコードをあなたの代わりに挿入してください」と伝えていただければ十分です。動画チュートリアルやコード例(秘密のDFPコードは削除して構いません)があれば、それを参考にしたいのですが、やり方を理解したいのです。どうすればよいでしょうか?
広告ネットワークがクライアント向けに DFP を処理するとは聞いたことがありません。代理店はありますが、広告ネットワークは?
以下のような感じです(これは完全に動作するコードではなく、さらに多くの要素が必要ですが、イメージをお伝えするために記載しています)
<div id="adunit_sidebar"></div>
var adunit_sidebar = googletag.defineSlot('/XXXXXXX/SIDEBAR', [300,250], 'adunit_sidebar').addService(googletag.pubads());
googletag.pubads().disableInitialLoad();
googletag.enableServices();
googletag.display([adunit_sidebar]);
googletag.pubads().refresh([adunit_sidebar]);
もしこのコードが全く理解できない場合は、ご契約中の「広告ネットワーク」または代理店に設定を依頼してください。
試してみます。Discourse のどこにこのコードを配置すればよいでしょうか?head の後に配置する場合、site head に配置しても JavaScript や構文エラーが発生しないようにコードを更新してください。また、これを完全に動作させるために必要な他の依存関係やスクリプトは何ですか?
いいえ、これをそのままどこかに置くことはできません。前述の通り、さらに多くのことが必要です。また、DFP、Discourse、JavaScriptのいずれについても基本的な技術的理解がないようですので、#marketplaceなどで支援できる人を探して依頼してください。