Discourse 사이트 https://howtodiscuss.com에서 광고를 실행하는 데 여러 가지 문제가 있습니다.
- 많은 수의 미처리된 DOM 예외 오류가 발생합니다. 인코그니토 모드로 아무 주제 페이지나 방문하면 이를 확인할 수 있습니다: https://howtodiscuss.com/t/profit/7022
-
또 다른 오류는 오래된 주제 페이지에서 새로운 주제로 이동할 때 콘솔에 경고가 표시되는 것입니다. Google Vignette 광고가 표시되지만 이 경고로 인해 광고가 사라지고 페이지가 이동하므로, 사용자가 페이지 로드/이동 사이에 나타나는 Google Vignette 인터스티셜 광고를 클릭할 기회가 전혀 없습니다.
Deprecation notice: Removing all event listeners at once is deprecated, please remove each listener individually. How many ounces is a 1 4 cup - How To Discuss
- 또한 아래 코드를 사용하여 단일 주제 페이지의 오른쪽 사이드바에 고정된 스티키 Google 광고를 표시하려고 하고 있습니다.
주제 사이드바에 고정된 스티키 광고를 삽입하기 위한 자바스크립트 코드, ToC(목차)와 함께 작동하도록 만들어야 함
<!-- 고정 광고를 표시하기 위한 플러그인 코드-->
<script type = "text/discourse-plugin"
version = "0.8" >
var friends_retries = 0;
var friends_timeout;
api.decorateWidget('topic-timeline-container:before', helper => {
return helper.h('div.side-block', [
helper.rawHtml('<div id="friends"></div>'),
]);
});
api.onPageChange(() => {
if (window.location.href.indexOf("/t/") > -1) {
console.log('page changed - topic');
friends_retries = 0;
window.setTimeout(loadFriends, 100);
} else {
//console.log( 'page changed - not topic');
}
});
function loadFriends() {
if (!document.getElementById('friends')) {
//var timer;
friends_retries++;
if (friends_retries < 10) {
//console.log('timeout rescheduled, try ' + friends_retries);
window.setTimeout(loadFriends, 100);
} else {
clearTimeout(friends_timeout);
// window.clearTimeout(loadFriends);
console.log('timeout cleared, gave up');
// loadFriends();
}
} else {
var bHTML = ' <!-- Topic side bar timeline HTD --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7087907313091932" data-ad-slot="5067761793" data-ad-format="auto" data-full-width-responsive="true"></ins>';
// var bHTML = '<img src="https://via.placeholder.com/300x250?text=300x250+MPU" alt="Girl in a jacket">';
$("#friends").html(bHTML);
}
}
</script>
<!-- 고정 광고를 표시하기 위한 플러그인 코드-->
그리고 그 CSS 코드는 다음과 같습니다:
/* 고정 광고용 */
/* 타임라인 레이아웃 수정 2.6.0.beta5 */
@media screen and (min-width: 925px) {
.container.posts .topic-navigation {
margin-left: 7em;
}
}
#friends {
display:block;
//width:300px;
height:150px;
margin-left:-90px;
margin-top:-25px;
margin-bottom:90px;
}
/* 고정 광고용 */
이 코드는 때때로 작동하지만, ToC가 표시되는 페이지에서는 작동하지 않습니다. 예를 들어 How Many Grams In A Quarter Ounce? - How To Discuss 에서 작동하지 않습니다.
ToC 페이지에서도 광고가 표시되도록 제 코드에 있는 실수를 수정해 주실 수 있나요?
-
또한 제 코드와 전체 Discourse 광고 플러그인 코드에서 또 다른 버그를 발견했습니다. 한 페이지에서 다른 페이지로 이동할 때 제 AdSense 광고 코드가 새로고침되거나 다시 로드되지 않아 광고 노출이 발생하지 않습니다. 이는 Discourse가 이동 시 전체 페이지를 완전히 다시 로드하지 않기 때문일 수 있습니다. 링크 이동 시 광고가 새로고침되고 전체 페이지가 다시 로드되도록 하려면 어떻게 수정해야 하나요?
-
제 사이트에서 이러한 frame-src 오류가 많이 발생하고 있습니다. https://howtodiscuss.com/t/how-mouthwash-rinse-become-a-necessary-step-in-oral-hygiene/30631
Refused to frame 'https://pagead2.googlesyndication.com/' because it violates the following Content Security Policy directive: "frame-src cm.g.doubleclick.net googleads.g.doubleclick.net www.google.com accounts.google.com pagead2.googlesyndication.com/pagead/s/cookie_push.html gmsg: https://tpc.googlesyndication.com/sadbundle/$csp=er3$/1522577804659956528/index.html".
제 CSP 설정은 다음과 같습니다.
하지만 Google 광고 iframe 요청을 화이트리스트에 추가하는 방법을 모릅니다. 또한 다음 코드를 시도해 보았지만 제대로 작동하지 않으며, 여전히 위의 frame-src 오류가 표시됩니다.
meta 태그의 frame-src 뒤에 값을 추가하면 meta 태그에서 frame-src를 사용할 수 없다는 오류가 발생합니다.
<!--<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' http://* 'unsafe-inline'; frame-src ; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'" />-->
제 문제를 해결해 주신다면 큰 도움이 될 것입니다.
홈페이지에서도 이러한 오류가 발생합니다. https://howtodiscuss.com/ (오류를 재현하려면 인코그니토 모드로 페이지를 열거나, VPN을 사용하거나, 몇 번 새로고침하거나 다른 페이지로 이동해 보세요. 그러면 JS 콘솔에서 오류를 발견할 수 있으며, 사용자가 광고를 클릭할 기회조차 주지 않고 Google vignette이 닫히는 것을 볼 수 있습니다)
누군가 도와주기를 바랍니다.
제 사이트는 Cloudflare에 있으며, 최신 Discourse 버전 2.6.0.beta6을 사용하고 있습니다. 모든 것을 업데이트했고, 모든 플러그인도 업데이트했으며, 방금 Docker를 다시 빌드했습니다. 여전히 이러한 오류가 보입니다.


















