IJMuAN02pVKE2uZHXG2JnZAHGfjon49GBXjko1rk
Bookmark

소제목(H2)아래 함께보면 좋은글 출력 코드

블로그스팟에서 소제목(H2)아래 함께보면 좋은글, 최신글이 나오게 하려면 어떻게 해야할까요? 아주 간단한 코드 2개만으로 내가 보여주고 싶은 글을 랜덤으로 방문자에게 보여줄 수 있습니다. 본문에서 코드를 확인하세요!
글 본문 또는 하단에 '함께보면 좋은글'이 나오면 그걸로 방문자의 체류시간을 늘릴수 있습니다. 그래서 이런 기능이 포함된 테마를 저도 활용하는 편인데요(Derelogy, Fiksioner 테마)
문제는 코드를 제공하는 부분에도 눈치없이(?) 들어가는 점이었습니다.
눈치없이 들어가는 함께보면 좋은글
위 사진을 보면 제가 코드를 입력한 부분에 제멋대로 함께보면 좋은글이 들어가있는 것을 알 수 있습니다. 이렇게되면 초보자분들의 경우 저 코드를 있는그대로 복사해서 붙여넣기 때문에 에러가 발생합니다(하지만 이걸 모르시고 왜 안되냐고만 물으십니다 😱)
그래서 이번에 함께보면 좋은글의 위치를 아예 고정으로 바꿔버리는게 낫겠다싶었습니다.

소제목(H2)아래 함께보면 좋은글 출력 장점

우선 소제목(H2) 아래에 함께보면 좋은글을 출력하면 방문자의 눈에 확 들어옵니다. 워드프레스를 운영하는 분들의 경우 H2 아래에 플러그인을 이용해서 애드센스 광고를 넣습니다.
왜냐하면 소제목 글자크기가 크기도 하고, 주요 키워드가 들어가있기 때문에 눈에 잘 띕니다.
소제목 아래 함께보면 좋은글 출력
사진에서 보는바와 같이 '블로그스팟 본문 시작지점 목차 추가하기' 이 부분이 소제목(H2)입니다. 바로 아래에 함께보면 좋은글이 들어가있는 것을 볼 수 있죠! 썸네일과 함께..
모바일에서는 어떻게 보일까요? 제가 스마트폰으로 스크린샷 찍은걸 보여드리겠습니다.
모바일 함께보면 좋은글
이런식으로 깔끔하게 잘 나오는것을 알 수 있습니다. 개인적으로는 모바일이 더 나은것 같은데 ㅎㅎ 아무튼 어떻게해야 이런 모습으로 나오게 할지 알려드리도록 하겠습니다.

소제목(H2)아래 함께보면 좋은글 코드

이 코드를 적용하려면 본문에 적용된 함께보면 좋은글 기능을 비활성화(OFF)하는것이 좋습니다. 소제목에도 나오고, 본문에도 나오면 방문자 입장에서는 상당한 피로감을 느끼기 때문인데요!

레이아웃 > Theme Setting으로 들어가셔서 콘텐츠를 밑으로 내리면 relatedMiddle: { 부분이 나오는데 num(글 갯수)를 0으로 만들어주고 시작하도록 하겠습니다.

소제목 아래에 함께보면 좋은글을 나타나게 하려면 2개의 코드가 필요합니다.
  • 소제목 아래에 함께보면 좋은글이 나오도록 만드는 스크립트
  • 함께보면 좋은글 부분이 예쁘게 나타나도록 하는 스타일
위 2가지 코드를 블로그스팟 테마의 적절한 위치에 넣어주기만 하면 됩니다.
그리고 함께보면 좋은글로 나오도록 글을 지정해주면 됩니다. 모든 글에서 랜덤으로 나타나는것보다 블로거가 지정한 글 내에서 랜덤으로 나타나도록 만들었습니다.

테마 > HTML 편집에서 코드 수정해야 됩니다!

1. 스크립트 코드

스크립트 사용코드는 </body> 앞에 붙여넣으면 됩니다. 빨간색으로 표시해둔 본인 ID는 자신의 블로그스팟 아이디에 맞게 수정하시면 됩니다.
만약 2차 도메인을 사용하신다면 본인ID.blogspot.com을 지우고 blogsodk.com과 같은 2차 도메인으로 수정하시면 됩니다.
<script type='text/javascript'>
//<![CDATA[
document.addEventListener('DOMContentLoaded', function () {
  const relatedMiddle = {
    image: true,
    tag: 'h2',
    text: '함께 보면 좋은 글:',
    feedUrl: 'https://본인ID.blogspot.com/feeds/posts/default?alt=json&max-results=150',
  };

  // ✅ 보여주고 싶은 관련글: 수동으로 직접 입력 (URL만 넣으면 됨)
  const relatedLinks = [
    '/2025/01/blogsodk.html',
    '/2025/02/1234.html',
    '/블로그스팟 글 주소',
  ];

  fetch(relatedMiddle.feedUrl)
    .then(res => res.json())
    .then(data => {
      const entries = data.feed.entry || [];
      const postMap = {};

      entries.forEach(entry => {
        const url = entry.link.find(l => l.rel === "alternate").href;
        const title = entry.title.$t;
        const thumbnail = entry.media$thumbnail?.url || null;
        postMap[url] = { title, url, thumbnail };
      });

      const selectedPool = relatedLinks.map(link => {
        const fullUrl = location.origin + link;
        return postMap[fullUrl] || { title: link, url: fullUrl, thumbnail: null };
      }).filter(p => p);

      const allHeadings = Array.from(document.querySelectorAll(`.post-body ${relatedMiddle.tag}`));
      const headings = allHeadings.slice(1);

      if (!headings.length || selectedPool.length === 0) return;

      // shuffle pool (Fisher–Yates)
      function shuffle(arr) {
        for (let i = arr.length - 1; i > 0; i--) {
          const j = Math.floor(Math.random() * (i + 1));
          [arr[i], arr[j]] = [arr[j], arr[i]];
        }
        return arr;
      }

      const shuffled = shuffle([...selectedPool]);
      let used = 0;

      function createBox(post) {
  const box = document.createElement('div');
  box.className = 'related-middle-box';
  box.innerHTML = `
    <ul>
      <li>
        <img src="${post.thumbnail}" alt="thumbnail">
        <div class="related-text">
          <h4>${relatedMiddle.text}</h4>
          <a href="${post.url}" target="_blank">${post.title}</a>
        </div>
      </li>
    </ul>
  `;
  return box;
}

      headings.forEach((heading) => {
        const post = shuffled[used % shuffled.length]; 
        used++;
        const box = createBox(post);
        heading.insertAdjacentElement('afterend', box);
      });
    });
});
//]]>
</script>

2. 스타일 코드

아래 스타일 코드는 </b:skin> 뒤에 붙여넣으면 됩니다.
<style>
.related-middle-box {
  border-top: 1px solid #e0e0e0;
  border-bottom: 1px solid #e0e0e0;
  padding: 16px 24px;
  margin: 24px auto;
  max-width: 800px;
  box-sizing: border-box;
}

.related-middle-box ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.related-middle-box li {
  display: flex;
  align-items: flex-start;
  gap: 14px;
}

.related-middle-box img {
  width: 72px;
  height: 72px;
  border-radius: 6px;
  object-fit: cover;
  flex-shrink: 0;
}

.related-middle-box h4 {
  margin: 0;
  font-size: 14px;
  color: #333;
  font-weight: 600;
}

.related-middle-box li .related-text {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  gap: 4px;
}

.related-middle-box li a {
  font-size: 15px;
  color: #f57c00;
  text-decoration: none;
  line-height: 1.5;
  word-break: keep-all;
}

.related-middle-box li a:hover {
  text-decoration: underline;
}

/* 태블릿 이하 */
@media (max-width: 768px) {
  .related-middle-box {
    padding: 16px 16px;
    max-width: 100%;
  }

  .related-middle-box img {
    width: 64px;
    height: 64px;
  }

  .related-middle-box h4 {
    font-size: 13px;
  }

  .related-middle-box li a {
    font-size: 14px;
  }
}

/* 모바일 */
@media (max-width: 480px) {
  .related-middle-box {
    padding: 14px 12px;
  }

  .related-middle-box img {
    width: 56px;
    height: 56px;
  }

  .related-middle-box li {
    gap: 10px;
  }

  .related-middle-box h4 {
    font-size: 12px;
  }

  .related-middle-box li a {
    font-size: 13.5px;
  }
}
</style>
이상으로 소제목(H2)아래 함께보면 좋은글 출력하는 코드에 대해 알아봤습니다. 그동안 본문 중간중간에 나타나는게 불만이었던 분들에게는 이 코드가 조금이나마 도움되셨으면 좋겠습니다. 더 좋고 도움되는 코드로 다시 돌아오겠습니다. 감사합니다.
본문 음성듣기
음성선택
1x
* [주의] 설정을 변경하면 글을 처음부터 읽습니다.
댓글 쓰기
테마 디자인을 위해 댓글 영역이 표시되고 있습니다. 궁금하신 사항은 유튜브 채널 영상에 남겨주시면 답변드리겠습니다!