사이트에 애드센스를 운영 중입니다.
홈페이지 운영을 지속하게 하는 적지 않은 자극제가 되는 게 사실이라서요,
다만 간혹 특정 게시글이 애드센스 운영 정책에 맞지 않는다고 삭제하거나 광고를 빼라는 요구를 받을 때가 있습니다.
하지만 다들 아시다시피 대부분 광고 코드는 게시판 소스에 일괄적으로 넣거나 애드온 등을 이용하기 때문에 개별적인 특정 글에서만 광고를 지우기가 어렵습니다. 글을 지우기 싫은데도 어쩔 수 없이 글을 삭제하거나 감춰놓는 방식으로 대응하곤 합니다.
그래서 생각한 것이 애드온 등을 이용해 특정 글번호를 입력하면 해당 글에서는 광고가 사라지게 한다면 사이트 운영에 큰 도움이 될 것 같은데요.
대부분 광고 코드를 < div > 등으로 감싸니 이것만 display 등을 이용해 감춰버릴 수 있을 것 같아서요,
코드를 알지 못하는 입장이라 생각만 있을 뿐 구현은 꿈도 꾸지 못하네요. ㅠ.ㅜ
마래바
Lv. 4
소소한 홈페이지 운영자입니다. 항공여행
댓글 32
이걸 응용해서 시도해보시면 좋을 것 같습니다.
포인트모듈 관리자 설명 -> 게시판설정 관리자 설명
회원번호 -> 문서번호
이렇게 변수만 변경해서 응용하시면.
각 게시판마다 게시판설정의 관리자설명에 애드센스를 빼고 싶은 문서번호를 넣으면 됩니다.
한번 살펴봐야겠습니다.
감사합니다. ^^
광고를 애드온에 의해 출력하고 계신다면
문서번호를 넣을 input 을 애드온 설정에서 추가하신 다음
해당 문서번호로 출력을 제어할 코드를 애드온 php에 넣으시면 됩니다. 원리는 같습니다.
@라라펠님 설명
애드온 설정에 ,로 글번호를 입력해 출력하지 않게 할순 있습니다.
<?PHP
if($called_position == "before_display_content")
{
$exclude = explode(",", $addon_info->ex_document_srl);
if(array_search(Context::get("document_srl"), $exclude))
Context::set("ads_display", FALSE);
else
Context::set("ads_display", TRUE);
}
?>
<element class="ads" cond="$ads_display">
연구해서 방법을 찾아 보겠습니다.
이래 저래 연구해 보고 있는데 초보라 너무 모르는 것 같네요.
조언주신 코드를 적용해도 $ads_display 값을 받아오지 못하는지 반응이 없습니다.
<?PHP
if($called_position == "before_display_content")
{
$exclude = explode(",", $addon_info->ex_document_srl);
if(array_search(Context::get("document_srl"), $exclude))
Context::set("ads_display", FALSE);
else
Context::set("ads_display", TRUE);
}
?>
코드는 애드온 파일에 작성해 넣고,
<element class="ads" cond="$ads_display"> 을 본문에 넣었지만 광고가 전부 사라지네요.
그래서 혹시나 해서
대신 매뉴얼로 특정 주소를 직접 넣어 봤습니다. 아래처럼
<element class="ads" cond="$oDocument->document_srl != '1259607'">
광고 코드
</element>
이렇게 하면 해당 글만 광고가 사라지고 나머지 글은 전부 광고가 잘 나타납니다.
그럼 결론적으로 $ads_display 값을 읽지 못해 무조건 감추는 것 아닌가 싶네요.
혹시 뭐가 잘못된 것일까요?
감사합니다.
$addon_info->ex_document_srl
해당하는 input을 만들어주신건가요?
이렇게 넣었습니다만, 뭐가 잘못된 걸까요? ㅠ.ㅜ
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.1">
<title xml:lang="ko">특정 글에서 광고제거 애드온</title>
<description xml:lang="ko">
특정 글 번호 입력해 해당 글에서 광고를 제거합니다
</description>
<version>0.1</version>
<date>2018-02-23</date>
<author email_address="xxxx@gmail.com" link="http://xxxxx.kr/">
<name xml:lang="ko">unknown</name>
</author>
<extra_vars>
<var name="ex_document_srl">
<title xml:lang="ko">글 번호</title>
<description xml:lang="ko">광고를 표시하지 않을 글 번호 입력. 다수 번호 입력 시 ','로 구분해 주세요.</description>
</var>
</extra_vars>
</addon>
<addon version="0.2"> 버전은 이렇게 하셔야 합니다.
<var name="ex_document_srl">
type="textarea" 이 빠진거 같구요...
코드를 상단쯤으로 이동하거나 혹은 애드센스 출력하는 부분보다 위쪽에.. 작성하신다음..
if(Context::get('ads_display') == 'FALSE' ) return;
이렇게 하시면 되지 않을까요?
혹은 기존에 하신 방식대로..
<element class="ads" cond="Context::get('ads_display') == 'TRUE">
array_search( ... , ... , TRUE) 3번째 인자를 true로 설정해야 합니다. 빼먹었네요
이런 답변도 해주셨네요.
if(array_search(Context::get("document_srl"), $exclude, TRUE))
이렇게요..
그렇게 해도 처음과 같이 해당 구문과는 상관없이 광고 모두 사라지네요 ..
고수 분들이 일러 주셔도 제대로 이해를 못하고 있나 봅니다. ㅠ.ㅜ
$oDocument->document_srl
이게 된다고 하셨으니..
if(array_search($oDocument->document_srl, $exclude, TRUE)
이렇게 해보시면 어떨까요?
cond에 $ads_display 를 쓰셔도 되고 아니면 제가 말씀 드린 것으로 쓸지는 상관 없을 것 같습니다. $ads_display 를 쓰려면 상단에 코드를 적어야 하구요.
echo "<script>window.alert($ads_display);</script>";
를 넣어서 메시지 창을 표출해 봤습니다만, 빈 창만 나오는 걸 보면 $ads_display 에 아무런 데이타가 안들어간 것 같습니다.
Context::set('ads_display', 'FALSE');
이런식으로 고쳐보실래요?
그리고 {@ $ads_display = Context::get("ads_display") }
템플릿에서 작성해 주신건데
애드온 php에서 출력하려고 하면 출력이 되는게 맞나요?
출력을 해보시려면..
스킨에서...
{$ads_display}
해보셔야 하는거 아닌지...
결국 예상할 수 있는 건 어떤 이유에선지 애드온에서 $ads_display (글 번호) 데이터가 생성되지 않았다고 볼 수 밖에...
하아~~ 힘들군요
착각했습니다. 글번호가 아니라 true, false 등이 맞습니다.
레이아웃이나 보드스킨에 코드 작성하면 될 것 같은데요..
{@ $notallow_ad = explode(',', $module_info->description);}
광고 코드 div 엘리먼트에
cond="!in_array($oDocument->document_srl,$notallow_ad)"
추가
되려나요......
우와 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
대단하십니다..
게시판 설명 란에 글번호 넣고,
게시판 스킨에 말씀하신 코드 넣고, div element 넣었더니 해당 글만 광고가 안나오네요 ㅎㅎㅎ
그런데 글 한개만 되네요.. ㅠ.ㅜ
다른분께서 cond 조건으로 사용하게 in_array($oDocument->document_srl,$notallow_ad) 값을 변수로 설정하는 것을 알려주셨으면 좋겠습니다. 저는 코알못이라..
저는 한군데서 사용하니 그냥 썼는데요.
여러군데 광고에 사용하려면 한번만 비교해서 그 변수를 여러곳에서 쓰면 좋을 것 같아서요.
글번호 콤마로 넣으면 되어야 하는건데요.. 흠.......
모듈단위로 메모에서 불러오게 되어 있습니다. 각 게시판에 맞는 게시판 설정 페이지에 넣으셔야 해요.
제가 게시판 하나에만 설정하고 다른 게시판 글 번호를 넣었네요..
해당 게시판에서 몇 개의 글번호를 넣든 잘 되네요...
다시 한번 귀한 시간, 조언에 감사 드립니다.
타임라인 게시판에 대응하셔야 하니 타임라인게시판 메모에는 모든 글번호 다 넣으셔야 할 것 같아요.
원게시판 모듈 가져오는 코드를 쓰면 되지만 .... 그냥 타임라인 게시판 메모에도 넣어주시는게 좋을 것 같아요.
그리고 사이드에 넣으신 광고에도 같은 조건 걸어주시구요. 사이드뿐 아니라 모든 광고가 나오면 안되니 모든 광고에....
여러모로 늘 많이 배웁니다.