본문 바로가기
웹 코딩/티스토리

애드센스 인피드 광고 - 글 목록 내 배치 (Adsense / in-feed ad)

by 알릭2 2020. 10. 1.

본문 내부나 사이드바에 광고를 개시하는건 그닥 어렵지 않습니다. 그쵸?

 

그저 광고를 생성하고 (보통은 디스플레이 광고를 선택하겠죠?)

생성된 광고의 코드를 가져다 원하는 위치에 넣어주면 되니까요. 

 

심지어 본문 상/하단 광고 개시는 티스토리 플러그인로도 지원하고 있어서 매우 수월합니다. 

그래서 딱히 이와 관련해선 글을 쓸 필요도 없을 것 같습니다.

 

그러나 이 인피드 광고는 글 목록의 일부로 보여지게 하는게 목적인 광고라...

스킨의 어디에 넣어야 할지 살짝 난감할 수 있습니다. 게다가 어디에 넣을지 알게되어도 목록의 시작이나 끝이 아니라면 추가적인 처리가 적용되어야 원하는 순번에 나올 수 있게 됩니다.

그리고 목록에서 너무 튀지 않게 다른 글들과 유사한 스타일로 만들어 줄려면 광고 생성시에도 자잘하게 설정해줘야 하는 수고도 요합니다.

 

그래서 오늘은 다른 광고들 보단 적용이 살짝 까다로운 이 인피드 광고를 넣는 방법에 대해 설명을 해보겠습니다.

 

(스킨은 제가 사용중인 북클럽을 기준으로 합니다만, 원리만 파악하시면 다른 스킨도 결국엔 다 똑같습니다.)

 

잠깐만!

그런데 우선은 티스토리에 애드센스 광고 넣는 방법부터 개선해 보아요.

현재 페이지당 1개 이상의 광고를 배치하고 있고 각 위치에 코드를 아래 처럼 넣었다면

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Tistory side -->
<ins class="adsbygoogle"
     style="광고스타일"
     data-ad-client="계정아이디"
     data-ad-slot="광고아이디"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>

이제는 구글 제공 js 파일을 한번만 불러오게 첫줄 코드를 스킨 html 의 <head>...</head> 안으로 옮겨 주어요.

...
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
</head>
<body>
...

그리고 광고 코드를 넣을 때는 상시 위에서 옮겨준 줄을 제외하고 아래 예시처럼 넣어주시면 됩니다.

<!-- 광고코드는 요만큼만... 시작 -->
<ins class="adsbygoogle"
     style="광고스타일"
     data-ad-client="계정아이디"
     data-ad-slot="광고아이디"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<!-- 광고코드는 요만큼만... 끝 -->

이미 이렇게 사용하고 계신다면, 베리 나이스!

 

자, 이제 인피드 광고를 넣어봅니다.

 

0. 우선 어떤 목록에 광고를 넣을건지 정하세요

  • 저는 홈의 최신글인기글, 그리고 카테고리 글 목록 이렇게 3군데에 넣었습니다.
  • 인기글과 카테고리 글 목록은 모양이 똑같으니 글 목록용 1개, 최신글용 1개, 이렇게 총 2개의 광고 단위가 필요하네요
  • 원한다면 댓글 목록에도 추가 할 수 있습니다만... (전 싫어요..ㅡㅡ)

 

그럼, 일단 글 목록부터 해볼까요?

 

1. 광고 단위 생성

  • 애드센스 페이지에서 '인피드 광고'로 원하는 모양의 광고 단위를 생성합니다.
  • 자신의 사이트 주소를 넣고 데스크탑 환경으로 선택해서 진행하면 거의 자동화되어 있는 과정입니다.
  • 이 부분에 대해선 검색해 보면 기존에 올려진 글들도 많고 애드센스 페이지 툴이 깔끔하게 잘 만들어져 있는 부분이라 추가 설명은 생략하겠습니다. 이것 저것 가능한 옵션 만져 보시면서 원하는 모양을 만드시면 됩니다.
    (그래봤자 이미지 크기, 공백, 테두리, 글꼴, 글자색 정도 조정하는거라..)
  • 게다가 한번 만들면 땡이 아니라 상시 수정도 가능하니까 (수정후 코드의 '광고스타일'값을 업데이트 해줘야 하지만..) 암튼 만들자마자 좀 이상해도 괜찮습니다.

 

2. 스킨 html 수정

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>var gCnt1 = 0, gCnt2 = 0, gCnt3 = 0;</script>

아까 <head>...</head> 사이로 옮겨준 구글 제공 광고 js 파일 밑줄에 위처럼 기본값이 0인 변수 3개를 추가합니다.

앞서 말씀드렸듯이 인피드 광고를 노출할 위치가 총 3군데라서 3개가 필요한겁니다.

 

3. 광고 삽입 (스킨 html 수정)

  • 인기 글
<s_cover name='cover-thumbnail-2'>
  <div class="cover-thumbnail-2">
    <h2></h2>
    <ul>
      <s_cover_item>									
        <li>
          <a href="">
            <figure>
              <s_cover_item_thumbnail>
                  <img src="//i1.daumcdn.net/thumb/C126x166/?fname=" alt="">
              </s_cover_item_thumbnail>
            </figure>
            <span class="title"></span>
            <span class="excerpt"></span>
            <s_cover_item_article_info>
              <span class="meta">
                  <span class="date"></span>
              </span>
            </s_cover_item_article_info>
          </a>
        </li>
        <script>
          gCnt1++; 
          if (gCnt1 % 3 == 0 && gCnt1 < 7) {
         	 document.write('<li><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="광고레이아웃" data-ad-client="계정아이디" data-ad-slot="광고아이디"></ins></li>'); 
         	 (adsbygoogle = window.adsbygoogle || []).push({});
          }
        </script>											
      </s_cover_item>
    </ul>
  </div>
</s_cover>

제 인기글 목록은 북클럽 스킨의 '뉴스레터' 커버아이템을 사용하고 있습니다.

 

뉴스레터는 소스상 cover-thumbnail-2 이 이름인데요, 위에 하이라이트되어 있듯이 html 에서 해당 블럭을 찾아 그 안에서 반복될 <li> 태그의 끝에 스크립트로 광고를 넣어 줍니다.

 

넣어준 코드에 대해 더 설명 드리자면,

<script>
  gCnt1++;
  if (gCnt1 % 3 == 0 && gCnt1 < 7) {
    document.write('<li><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="광고레이아웃" data-ad-client="계정아이디" data-ad-slot="광고아이디"></ins></li>');
    (adsbygoogle = window.adsbygoogle || []).push({});
  }
</script>
  • document.write('...요기...'); 이 안에 내용들은 줄바꿈 없이 모두 한줄로 넣어 주셔야 하고 큰따옴표만 가능합니다.
  • 광고레이아웃/계정아이디/광고아이디 이 3부분은 앞서 애드센스에서 생성한 인피드 광고의 코드에서 해당 부분을 가져와 넣으세요
  • 목록의 다른 글처럼 <li>로 씌워서 광고를 출력할겁니다. 이러면 간격 스타일이 알아서 잘 맞게되죠.
  • gCnt1++; // gCnt1 카운터를 여기에 쓰겠습니다.
  • if (gCnt1 % 3 == 0 && gCnt1 < 7) //제가 스킨에서 설정한 이 목록에서 보여줄 글 수는 9개 인데요, 글 3개 마다 광고 하나 나와라, 대신 두번만 나와라!(즉, 7번글 위쪽일때만!) 를 지정해준겁니다.

    [ 글1/글2/글3/광고/글4/글5/글6/광고/글7/글8/글9 ] --> 이렇게요

    if (gCnt1 % 3 == 0) 이것만 넣으면 글9 뒤로도 (목록 끝에) 광고가 하나 더 나오게 되는거죠.

    그러나 반복 노출은 안할거고 대신 노출될 특정 순서를 지정하고 싶다면!!

    if (gCnt1 % 9 == 2) // 이렇게만 해주셔도 됩니다.
    9는 목록에 노출되는 총 글 수, 2는 글2 다음으로 광고 노출하는걸 의미합니다. (2대신 0을 넣으면 글목록 끝에!)

    [ 글1/글2/광고/글3/글4/글5/글6/글7/글8/글9 ] --> 이렇게요

    현재 구조상 일단 글을 하나 보여주고 그 뒤에 상황에 맞춰 추가로 광고를 보여주는거라 광고가 목록의 첫 아이템으로 나오는 건 안됩니다. (글보다 광고 먼저 보여주는거 전 좀 별로던데...)

    그래도 혹시 광고가 목록에서 제일 먼저 나오길 바란다면, 스크립트 추가 위치를
    </s_cover_item> 위가 아닌 <s_cover_item> 아래로 옮기고 여기저기 살짝 수정하면 되는데... 포스팅이 좀 길어지니 이건 필요하시면 따로 댓글 주세요.

 

 

자~ 다 저장하고 결과를 확인합니다.

 

다행히 잘 나오네요 ㅋ

 

이제 감이 좀 오시죠? :) 그럼 같은 방법과 코드로 글 목록도 추가해봅시다.

 

  • 카테고리 글 목록
<s_index_article_rep>
  <div class="post-item">
    <a href="/77">
      <span class="thum">
        <s_article_rep_thumbnail>
        	<img src="//i1.daumcdn.net/thumb/C230x300/?fname=https://blog.kakaocdn.net/dn/btcAaF/btqJ3iu88KZ/xO1S99jRkkV77Hkh3zjFhK/img.png" alt="">
        </s_article_rep_thumbnail>
      </span>
      <span class="title">애드센스 인피드 광고 - 글 목록 내 배치 (Adsense / in-feed ad)</span>
      <span class="excerpt">본문 내부나 사이드바에 광고를 개시하는건 그닥 어렵지 않습니다. 그쵸? 그저 광고를 생성하고 (보통은 디스플레이 광고를 선택하겠죠?), 생성된 광고의 코드를 가져다 원하는 위치에 넣어주면 되니까요. 심지어 본문 상/하단 광고 개시는 티스토리 플러그인로도 지원하고 있어서 매우 수월합니다. 그래서 딱히 이와 관련해선 글을 쓸 필요도 없을 것 같습니다. 그러나 이 인피드 광고는 글 목록의 일부로 보여지게 하는게 목적인 광고라... 스킨의 어디에 넣어야 할지 살짝 난감할 수 있습니다. 게다가 어디에 넣을지 알게되어도 목록의 시작이나 끝이 아니라면 추가적인 처리가 적용되어야 원하는 순번에 나올 수 있게 됩니다. 그리고 목록에서 너무 튀지 않게 다른 글들과 유사한 스타일로 만들어 줄려면 광고 생성시에도 자잘하게 설..</span>
      <span class="meta">
      	<span class="date">2020. 10. 1.</span>
      </span>
    </a>
  </div>
  <script>
    gCnt2++; 
    if (gCnt2 % 4 == 0 && gCnt2 < 13) {
   	 document.write('<div class="post-item"><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="광고레이아웃" data-ad-client="계정아이디" data-ad-slot="광고아이디"></ins></div>');
   	 (adsbygoogle = window.adsbygoogle || []).push({});
    }
  </script>									
</s_index_article_rep>

찾아보니 글 목록은 <div class="post-item"> 이 반복되서 나오고 있더군요.

 

그래서 해당 블럭을 스킨의 html 에서 찾아 위 처럼 광고 코드를 반복이 끝나는 </s_index_article_rep> 전에 넣어줬습니다.

 

이때, 광고레이아웃/계정아이디/광고아이디는 모두 앞서 삽입한 인기글과 동일하게 넣었습니다. 둘은 모양이 같기에 같은 광고를 사용해도 되니까요.

 

이번에 광고는 주변에 맞춰 <li> 가 아닌 <div class="post-item"> 로 감싸줬습니다.

 

if (gCnt2 % 4 == 0 && gCnt2 < 13) 요기도 위에서 설명했듯이 이 광고는 gCnt2 카운터 변수를 쓰고, 글4개 + 광고 패턴으로 반복하자, 대신 반복은 3번만 하자 (12까지만) 를 의미합니다. (목록당 총 글 수는 16으로 설정되어 있음)

 

[ 글1/글2/글3/글4/광고/글5/글6/글7/글8/광고/글9/글10/글11/글12/광고/글13/글14/글15/글16 ]

--> 이렇게요

 

이 부분은 자신의 상황에 맞게 바꾸시면 되겠습니다.

 

 

이제 최신 글 하나 남았나요?

 

  • 최신 글

방법은 이전과 거의 동일합니다.

 

다만 제 최신 글은 커버아이템 중 커버갤러리2 를 쓰고 있어서 앞서 사용한 광고와는 모양이 많이 다르니 인피드 광고를 하나 더 만들어야 겠습니다.

 

애드센스로 돌아가 원하는 모양의 광고를 하나 더 만들고 옵니다.

 

참고: 저처럼 커버갤러리2 용으로 만드시는거라면 광고 만들때 '전체옵션' 에서 우측 패딩을 25로 주시고 나머진 모두 0으로 해주세요.

그리고선 스킨 html 수정을 통해 방금 만든 광고를 넣어보아요.

<s_cover name='cover-thumbnail-4'>
  <div class="cover-thumbnail-4">
    <h2></h2>
    <ul>
      <s_cover_item>											
        <li>
          <a href="">
          <figure>
            <s_cover_item_thumbnail>
            	<img src="//i1.daumcdn.net/thumb/C230x140/?fname=" alt="">
            </s_cover_item_thumbnail>
          </figure>
          <!-- <span class="title"></span> -->
          <s_cover_item_article_info>
            <span class="title"></span>
            <span class="excerpt"></span>
            <span class="meta">
              <span class="comment">댓글 </span>
              <span class="date"></span>
            </span>
          </s_cover_item_article_info>
          </a>
        </li>
        <script>
          gCnt3++; 
          if (gCnt3 % 9 == 2) {
            document.write('<li style="padding: 0 !important"><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="광고레이아웃" data-ad-client="계정아이디" data-ad-slot="광고아이디"></ins></li>');
            (adsbygoogle = window.adsbygoogle || []).push({});
          }
        </script>											
      </s_cover_item>
    </ul>
  </div>
</s_cover>

커버갤러리2 는 소스상 cover-thumbnail-4 이 이름입니다.

이 블럭을 찾아 반복이 끝나는 지점 (</s_cover_item>) 위에 광고 코드를 넣어 줬습니다.

 

여태 쓰지 않은 gCnt3 를 카운터 변수로 사용했고 노출되게 설정된 총 글 수가 9개인 상황에서 그 중에 2번 글 뒤에 한번만 광고가 나오게 하고 싶어서 (gCnt3 % 9 == 2) 조건을 걸었습니다.

 

주변에 맞춰 <li> 로 광고를 감싸줬는데요, 광고 최소 넓이가 250인데 우리 커버갤러리2 는 넖이 255에서 25패딩이 빠지는 230 이라 에러가 나지 않도록 광고 생성시엔 패딩이 없게 <li style="padding: 0 !important"> 를 넣어 줬습니다.

 

다 저장하고 확인해보니 역시 잘 나옵니다.

 

 

광고 이미지와 광고 제목과 설명 사이 간격들은 몇번 애드센스 왔다갔다 하며 수정해주니 얼추 맞춰진 것 같습니다.

 

해놓고 보니 광고가 페이지에 자연스레 잘 스며든 것 같아 훨 보기 좋네요.

(물론 광고가 아예 없는게 제일 좋겠지만... 쿨럭....ㅡㅡ;)

 

암튼, 전체 과정을 요약해보면 아래와 같습니다. (개괄적 이해를 돕기위해..)

 

  1. 애드센스 js 파일을 스킨 html 의 <head> 내부로 이동
  2. 스킨 html의 <head> 내부에 광고가 들어갈 글 목록당 하나씩 카운터 변수 추가
  3. 애드센스에서 사용할 인피드 광고 단위 생성 및 코드 얻기
  4. 스킨의 html 에서 해당 글 목록을 찾아 반복되는 지점의 끝에 스크립트를 통한 광고 코드 삽입
    1. 3번에서 얻은 코드에서 중요 값 3개 붙여 넣기
    2. if 조건문을 통해 노출 순서/위치 조정
    3. 주변에 맞춰 li 나 div 등 반복되는 동일한 태그로 감싸주기
  5. 필요 시 애드센스에서 광고 모양 수정
    1. 저장 후 생성된 코드에서 data-ad-layout-key 값만 가져다 스킨에 넣은 광고 코드에 업데이트 해주면 됨

 

하시다 안되는 부분이 있거나 문의 사항 있으시면 언제들 댓글 남겨 주세요.

댓글