토픽 페이지 우측 사이드바에서 폴드 위에 300x250 Adsense 광고를 플로팅 스티키로 표시하는 방법?

결론적으로, 제가 원하는 것은 아래 사이트와 매우 유사한 것입니다.
Quora의 토픽 페이지 우측 사이드바에 있는 300x250 광고를 주목해 보세요.

저도 유사한 Discourse 포럼 토픽 레이아웃을 가지고 있으며, 각 토픽에는 많은 게시글이 있습니다. 사용자가 300x250 고정/떠다니는 배너 광고를 볼 수 있도록 하고, 이는 스티키(sticky) 상태여야 합니다. 즉, 사용자가 토픽 페이지에서 더 많은 게시글을 읽기 위해 아래로 스크롤할 때, 이 우측 사이드바 광고는 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>
<!-- 토픽 사이드바 타임라인 -->
<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 content DiscoTOC - automatic table of contents 도 사용 중이므로, 광고는 현재 TOC(목차) 아래에도 표시되어야 합니다. 현재 TOC가 나타날 때 토픽 타임라인이 사라지는 것을 확인했습니다.

이 스티키 광고가 제 사용자에게 더 잘 노출되어 CPM이 개선될 수 있도록 이 문제를 해결하는 데 도움을 주실 수 있을까요?
@ladydanger @neil 도와주실 수 있나요?

미리 감사합니다.

떠다니는 광고는 AdSense 이용약관에 위배될 수 있으니 주의하세요.

마지막으로 확인했을 때, 그들도 그랬습니다.

아니요, 애드센스 정책에 위반되는 것이 아닙니다. 저는 이미 구글 인증 파트너 자격으로 수년간 사이트를 운영해 왔고, 구글 측에서 직접 이 플로팅 광고를 추가했습니다. Quora도 같은 방식으로 진행하고 있습니다.

질문자님의 게시물에서도 동일한 방법을 사용하셨죠. 그런데 애드센스 태그의 iframe 버전을 어떻게 받을 수 있을까요?

내 플로팅 광고는 AdSense의 것이 아니라 내 것입니다.

많은 주요 뉴스 사이트는 사용자가 페이지 왼쪽에서 뉴스를 읽으며 아래로 스크롤할 때, 오른쪽 사이드바에 고정된 광고를 표시합니다.

포브스, 허핑턴포스트, 쿼라, 9gag, BBC 등이 해당됩니다.

ember js 코드 블록 안에 AdSense 코드를 렌더링하는 방법에 대해 도움을 주실 수 있나요? 구문 오류가 발생하고 있습니다.

담당자가 귀하의 계정에 추가한 고정형(스티키) AdSense 광고 유닛에 대한 허용 사항이 있습니까? 귀하가 언급한 퍼블리셔들과 우리도 이를 허용하고 있지만, 해당 퍼블리셔들과 프리미엄 퍼블리셔 계약(Premium Publisher Contract)을 맺고 있어야 합니다.

그렇지 않다면, 이는 계정이 정지되는 가장 빠른 방법 중 하나입니다. 그냥 말씀드리는 것이지만, 이 방법을 시도하고자 하는 다른 분들의 관심사도 될 수 있을 것 같아서요.

@Terrapop 네, 저는 Google의 프리미엄 퍼블리셔 파트너입니다. 제 문제를 해결해 주실 수 있을까요? 하루 종일 작동하도록 하려고 애를 쓰고 있습니다.

저는 Google Ad Exchange의 프리미엄 파트너이기도 합니다.

또한 다른 광고 네트워크도 사용 중이라, 그 코드도 스티키(고정 영역)에 넣을 수 있습니다. 하지만 모두 HTML 코드에 삽입되는 JS 기반 태그입니다. 그런데 위 토픽 게시물처럼 Ember.js 코드 안에 JS 태그를 삽입하면 문법 오류가 발생합니다.

타임라인 컨테이너 위에 ID가 있는 div를 하나 추가하고, DFP를 통해 해당 위치에 광고를 배치하는 것은 어떨까요? 특히 그 위치에는 반응형 Adsense 유닛이 아닌 고정 크기의 유닛을 표시하고 싶기 때문입니다. 광고 컨테이너에 JS가 전혀 필요 없습니다. 우리는 Discourse에서 헤더 비딩을 포함한 모든 광고를 prebid.js를 통해 이렇게 처리하고 있습니다. 그렇지 않다면, 플러그인을 개발해야 할 것 같습니다. 템플릿 컴포넌트를 통해 원시 스크립트 태그를 어딘가에 배치하는 것이 가능한지 확신할 수 없기 때문입니다. 저는 불가능하다고 생각하지만, 다른 분들께서 더 좋은 답변을 주실 수도 있습니다.

제안해 주셔서 정말 감사합니다. 사실 저는 DFP를 사용해 본 적이 없지만, DFP 계정倒是 가지고 있습니다.
타임라인 컨테이너 위에 ID가 있는 div를 배치하고 DFP를 통해 타겟팅/트래픽을 설정하는 방법에 대한 코드 예시를 제공해 주실 수 있을까요?

Discourse 설정과 DFP 계정에서 어떤 변경 사항이 필요한지, 스크린샷과 코드 샘플을 함께 제공해 주시면 매우 도움이 될 것입니다.

죄송하지만, 주제 페이지 레이아웃 커스터마이징이나 Discourse 전반에 대해 경험이 많지 않습니다. 지금까지는 기본 설정 그대로 사용해 왔습니다. 도움을 주신다면 정말 좋겠습니다.

프리미엄 AdX 파트너인데 DFP를 한 번도 안 써봤다고요? 어떻게 가능한 거죠? 네… :roll_eyes:

메타에서 컴포넌트를 구축하는 방법에 대한 가이드는 plenty 있습니다. 그리고 저희 DFP 구현 코드를 공유할 수는 없어요. 헤더 비딩도 함께 구현해 두어서, 여러분이 필요로 하는 것보다 훨씬 복잡하기 때문에 오히려 혼란만 줄 거예요. 하지만 구글에는 간단한 설정에 대한 매우 상세한 문서가 있으며, 꽤 기본적인 JS 작업입니다.

제 광고 네트워크가 항상 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 어디에 넣어야 하나요? after head 부분에 넣는다면, site head에 넣을 때 JS나 구문 오류가 없도록 코드를 업데이트해 주세요.
그리고 이 코드가 완전히 실행되려면 다른 어떤 의존성이나 스크립트가 필요한가요?

아니요, 이대로는 어디에도 적용할 수 없습니다. 앞서 말했듯이 더 많은 작업이 필요하며, DFP, Discourse, JavaScript에 대한 기본적인 기술적 이해가 없으므로 Marketplace 채널에서 도움을 줄 수 있는 사람을 고용하는 것이 좋습니다.