var postperpage = 5; // Her sayfada kaç yazı gösterilecek
var numshowpage = 2; // Aktif sayfanın sağında/solunda kaç numara görünsün
var prevtext = "« Geri"; // Geri butonu metni
var nexttext = "İleri »"; // İleri butonu metni
function loaddata(json) {
var showpage = document.getElementById("showpage");
if (!showpage) return; // Element yoksa dur
var entries = json.feed.entry;
// Eğer hiç kayıt yoksa işlem yapma
if (!entries || entries.length === 0) {
showpage.innerHTML = "";
return;
}
var totalposts = parseInt(json.feed.openSearch$totalResults.$t, 10);
var totalpages = Math.ceil(totalposts / postperpage);
// Hash (#PageNo=2) kontrolü, yoksa 1. sayfa varsayılır
var currentpage = 1;
var hash = window.location.hash;
if (hash && hash.indexOf("#PageNo=") != -1) {
currentpage = parseInt(hash.substring(hash.indexOf("#PageNo=") + 8), 10);
}
var path = window.location.pathname;
var isLabel = path.indexOf("/search/label/") != -1;
var labelName = isLabel ? path.split("/search/label/")[1].split("?")[0] : "";
// URL Üretici Fonksiyon
function getURL(page) {
if (page <= 1) return isLabel ? "/search/label/" + labelName : "/";
// İlgili sayfanın başlaması gereken tarih (Bir önceki sayfanın son yazısının tarihi)
var entryIndex = (page - 1) * postperpage - 1;
// Dizi sınırlarını kontrol et (Blogger feed limiti genelde 150'dir)
if (entryIndex >= entries.length) entryIndex = entries.length - 1;
if (entryIndex < 0) entryIndex = 0;
var post = entries[entryIndex];
if (!post) return "/"; // Hata durumunda ana sayfaya dön
var timestamp = post.published.$t;
// Tarih formatını temizle ve encode et (Milisaniyeleri atıyoruz)
timestamp = timestamp.substring(0, 19) + timestamp.substring(23, 29);
var encodedDate = encodeURIComponent(timestamp);
var base = isLabel ? "/search/label/" + labelName : "/search";
return base + "?updated-max=" + encodedDate + "&max-results=" + postperpage + "#PageNo=" + page;
}
var html = "";
// --- Geri Butonu ---
if (currentpage > 1) {
html += '<a class="prev" href="' + getURL(currentpage - 1) + '">' + prevtext + '</a>';
}
// --- Sayfa Numaraları Hesaplama ---
var start = Math.max(1, currentpage - numshowpage);
var end = Math.min(totalpages, currentpage + numshowpage);
// Eğer 1. sayfadan çok uzaktaysak başa 1 ve ... koy
if (start > 1) {
html += '<a href="' + getURL(1) + '">1</a>';
if (start > 2) html += '<span class="dots">...</span>';
}
// Döngü (Örnek: 2. sayfadaysan 1, 2, 3, 4 üretir)
for (var i = start; i <= end; i++) {
if (i == currentpage) {
html += '<span class="current">' + i + '</span>';
} else {
html += '<a href="' + getURL(i) + '">' + i + '</a>';
}
}
// Eğer son sayfadan uzaktaysak sona ... ve Son Sayfayı koy
if (end < totalpages) {
if (end < totalpages - 1) html += '<span class="dots">...</span>';
// Blogger feed limiti nedeniyle çok yüksek sayfa sayılarına doğrudan erişim bazen sorunludur
// ancak linki yine de oluşturuyoruz.
html += '<a href="' + getURL(totalpages) + '">' + totalpages + '</a>';
}
// --- İleri Butonu ---
if (currentpage < totalpages) {
html += '<a class="next" href="' + getURL(currentpage + 1) + '">' + nexttext + '</a>';
}
showpage.innerHTML = html;
}
// Feed'i asenkron yüklemek yerine document.write ile çağırmak (Temanızın yapısına uygun)
document.write('<script src="/feeds/posts/summary?alt=json-in-script&callback=loaddata&max-results=999"><\/script>');
//]]>

Hiç yorum yok:
Yorum Gönder