if($called_position == 'before_display_content' && $addon_info->load_admin = 'N')
{
    
    $swc = false;
    $dmt = Context::get('oDocument');
    $cmt = Context::get('oComment');

// 문서 내용에 금지 단어가 있다면 애드센스를 삭제
if($addon_info->denied_content == 'Y'){
        $block_words = explode(',',$addon_info->denied_word_content);
        $count_block_words = count($block_words);
        foreach($block_words as $value) {
            if(strpos($dmt->variables['content'],$value) !== false) {
                $swc = true;
                return;
            } else if(strpos($dmt->variables['title'],$value) !== false) {
                $swc = true;
                return;
            } else if(strpos($cmt->variables['content'],$value) !== false) {
                $swc = true;
                return;
            }
// 문서 내용에 금지 단어가 없다면 애드센스를 출력
} if($swc == false) {
$footer = sprintf('<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>');
Context::addHtmlFooter($footer);
return;
}
}
}

 

 

이런식으로 작성을 했습니다.

 

게시글 제목과 내용에 필터단어가 있으면 출력이 안되는걸 확인했는데

댓글 내용은 필터단어가 들어가도 출력이 되더라구요, 댓글 내용을 불러오는건 어떤건지 알 수 있을까요?

검색을 해도 제가 원하는 정보가 나오질 않아서 여기다가 질문을 남겨봅니다.

  • profile
    제 생각에는 굉장히 많은 구조변경을 해야 구현이 될 것 같다는 생각이 듭니다. 우선 해결책이 아니라 죄송하구요.


    지금 문서정보를 가지고 올 수 있는건
    출력하려는 곳의 화면에 뿌려지는 것은 문서번호로 특정하여 해당 문서와 제목을 가지고 올 수 있습니다.

    그런데 댓글은 상황이 다릅니다.
    댓글은 댓글 하나를 따로 출력하는 페이지가 아니기 때문에..

    댓글을 출력하는 스킨에 보시면 각 개별 댓글의 정보는 말씀 하신
    oComment 에서 다루는게 맞으나..

    여러개의 다른 댓글을 특정해서 정보를 가져오는 건 반복문을 통해 각각 개별 댓글의 정보를 가져오는 것입니다.

    따라서 지금 애드온에서도 문서출력할때 댓글을 출력하는 것과 같은 방식으로 반복문을 돌려서 해당 문서가 가지는 댓글마다 가지는 내용값을 배열에 담은 후,

    그 배열에 담긴 값을 다시 금칙어가 포함인지 비교하는 코드가 필요합니다.
  • profile

    한가지 대안으로 아이디어를 드리자면 이게 실제 구현이 되는지는 잘은 모르겠습니다.
    서버단에서 처리하지 않고 스크립트로 클라이언트 단에서 처리하는 것도 나빠 보이지 않네요.


    https://xetown.com/tips/1211963#comment_1212288

    제가 올린 위 팁의 경우 금칙어를 비교하는 부분이 있습니다.

    우선 애드센스 넣으신 코드에서 <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>' 이부분은 모두 제거를 합니다.


    그리고 스크립트로(문서열람페이지에 삽입)

    글 제목,본문,댓글 영역을 class 등으로 특정하여 각각 내용을 html을 제외한 텍스트로 가져옵니다.

    그리고 각 영역을 금칙어와 비교해서 금칙어가 없다면

    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>'
    을 푸시로 밀어주는 스크립트로 하면 될 것 같습니다.


    이게 아이디어라.. 코드를 직접 만들어드리진 못했네요.

    이렇게 하면 장점은 댓글이 여러페이지가 있다면 댓글의 페이지에 금칙어가 있다면 광고가 안나가고 없으면 나가는 댓글의 페이지별로 컨트롤이 가능합니다.
    애드온에서 html 출력전에 처리하려면 모든 댓글의 내용을 다 가지고 온 후 결정해야 해서 댓글 중에 하나라도 금칙어가 있다면 출력을 막아야 하는 구조이죠.

  • profile ?
    아하 감사합니다!!