Blogger'da İlgili Gönderiler Özelliği Ekleme

Yazılarınızda eklediğiniz aynı etiketteki yazıları okuyuculara gösteren basit bir kod.

#related-posts-container {
  margin-top: 30px;
  margin-bottom: 30px;
  background: #fff;
  padding: 0;
}
#related-posts-container h3 {
  font-size: 18px;
  font-weight: 700;
  margin-bottom: 15px;
  padding-bottom: 5px;
  border-bottom: 2px solid #ccc;
  display: inline-block;
}
ul.related-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
li.related-item {
  display: flex;
  align-items: center;
  padding: 12px 0;
  border-bottom: 1px solid #eee;
}
li.related-item:last-child {
  border-bottom: none;
}
.related-thumb {
  width: 100px; 
  height: 60px;
  object-fit: cover;
  border-radius: 4px;
  margin-right: 15px;
  flex-shrink: 0; 
  background: #f1f1f1;
}
.related-link {
  text-decoration: none;
  color: #333;
  font-size: 15px;
  font-weight: 500;
  line-height: 1.4;
  transition: color 0.2s;
}
.related-link:hover {
  color: #1da1f2; 
}

<b:if cond='data:view.isPost'>
<div id='related-posts-container'> 
<b:if cond='data:post.labels'>
<h3>İlgili Gönderiler</h3>
<b:else/>
<h3>Son Gönderiler</h3>
</b:if>
<ul class='related-list' id='related-posts-content'>
<li style='color:#666; font-style:italic;'>Yükleniyor...</li>
</ul>
</div>
<script type='text/javascript'>
    //<![CDATA[
    var relatedConfig = {
      maxPosts: 3 // Listede kaç yazı olsun?
    };

    function listRelated(json) {
      var entries = json.feed.entry;
      var container = document.getElementById('related-posts-content');
      var htmlCode = "";
      var postCount = 0;
      
      if (!entries) {
        container.innerHTML = "<li>İçerik bulunamadı.</li>";
        return;
      }

      for (var i = 0; i < entries.length; i++) {
        if (postCount >= relatedConfig.maxPosts) break;
        
        var entry = entries[i];
        var postTitle = entry.title.$t;
        var postUrl = "";
        
        // URL al
        for (var k = 0; k < entry.link.length; k++) {
          if (entry.link[k].rel == 'alternate') {
            postUrl = entry.link[k].href;
            break;
          }
        }
        
        // Şu anki yazıyı atla
        if (postUrl == window.location.href) continue;

        // Görsel Kontrolü
        var imgTag = "";
        if (entry.media$thumbnail) {
           var thumbUrl = entry.media$thumbnail.url.replace('/s72-c/', '/w100-h80-c/'); 
           // Resim varsa img etiketini oluştur
           imgTag = '<img class="related-thumb" src="' + thumbUrl + '" alt="' + postTitle + '"/>';
        } 
        // Not: Resim yoksa imgTag boş kalır, böylece solda boşluk oluşmaz.

        // Liste Elemanını Oluştur (Resim + Link)
        htmlCode += '<li class="related-item">';
        // Link resmin üzerine de gelsin
        htmlCode += '<a href="' + postUrl + '" class="related-link" style="display:flex; align-items:center;">';
        htmlCode += imgTag; // Resim varsa eklenir
        htmlCode += '<span>' + postTitle + '</span>'; // Başlık
        htmlCode += '</a>';
        htmlCode += '</li>';
        
        postCount++;
      }
      
      container.innerHTML = htmlCode;
    }
    //]]>
  </script>
<b:if cond='data:post.labels and not data:post.labels.empty'>
<b:loop index='i' values='data:post.labels' var='label'>
<b:if cond='data:i == 0'>
<script expr:src='"/feeds/posts/default/-/" + data:label.name + "?alt=json-in-script&callback=listRelated&max-results=8"' type='text/javascript'/>
</b:if>
</b:loop>
<b:else/>
<script src='/feeds/posts/default?alt=json-in-script&callback=listRelated&max-results=8' type='text/javascript'/>
</b:if>
</b:if>

İlgili gönderilerin sayısını değiştirmek için maxPosts: 3 kodundaki rakamı değiştirerek yapabilirsiniz. Bir de yazılarınızda etiket yoksa blogunuzdaki son yazıları gösterecektir. Bu sayede o alan boş kalmayacak.

2 Yorum