Αριθμημένες σελίδες αναρτήσεων


Eχθές έβαλα στο blog μου ένα καλό widget, και είπα να το μοιραστώ μαζί σας για να το βάλει όποιος θέλει. Πρόκειτε για τις αριθμημένες σελίδες που φαίνονται στο τέλος όλων των αναρτήσεων, και αντικαθιστά το "νεότερες αναρτήσεις", "Αρχική σελίδα", "παλαιότερες αναρτήσεις".
Κοιτάξτε την φωτό για να καταλάβετε τι εννοώ.




Το καλό με αυτό το widget είναι ότι δεν πειράζουμε καθόλου τον κώδικα της σελίδας μας, καθώς είναι ένα απλό widget! Όποτε το βαρεθούμε δηλαδή, το βγάζουμε και επανέρχετε το blog μας στην αρχική του κατάσταση.
Ο κωδικός είναι αυτός.

....




<style type="text/CSS">
.showpageArea a {
text-decoration:underline;
}
.showpageNum a {
text-decoration:none;
border: 1px solid #7AA1C3;
margin:0 3px;
padding:3px;
}
.showpageNum a:hover {
border: 1px solid #7AA1C3;
background-color:#F6F6F6;
}
.showpagePoint {
color:#333;
text-decoration:none;
border: 1px solid #7AA1C3;
background: #F6F6F6;
margin:0 3px;
padding:3px;
}
.showpageOf {
text-decoration:none;
padding:3px;
margin: 0 3px 0 0;
}
.showpage a {
text-decoration:none;
border: 1px solid #7AA1C3;
padding:3px;
}
.showpage a:hover {
text-decoration:none;
}
.showpageNum a:link,.showpage a:link {
text-decoration:none;
color:#7AA1C3;
}
</style>
<script type="text/JavaScript">
function showpageCount(json) {
var thisUrl = location.href;
var htmlMap = new Array();
var isFirstPage = thisUrl.substring(thisUrl.length-5,thisUrl.length)==".com/";
var isLablePage = thisUrl.indexOf("/search/label/")!=-1;
var isPage = thisUrl.indexOf("/search?updated")!=-1;
var thisLable = isLablePage ? thisUrl.substr(thisUrl.indexOf("/search/label/")+14,thisUrl.length) : "";
thisLable = thisLable.indexOf("?")!=-1 ? thisLable.substr(0,thisLable.indexOf("?")) : thisLable;
var thisNum = 1;
var postNum=1;
var itemCount = 0;
var fFlag = 0;
var eFlag = 0;
var html= '';
var upPageHtml ='';
var downPageHtml ='';
var pageCount = 10;
var displayPageNum = 5;
var upPageWord = 'Previous';
var downPageWord = 'Next';
var labelHtml = '<span class="showpageNum"><a href="/search/label/'+thisLable+'?&max-results='+pageCount+'">';
for(var i=0, post; post = json.feed.entry[i]; i++) {
var timestamp = post.published.$t.substr(0,10);
var title = post.title.$t;
if(isLablePage){
if(title!=''){
if(post.category){
for(var c=0, post_category; post_category = post.category[c]; c++) {
if(encodeURIComponent(post_category.term)==thisLable){
if(itemCount==0 || (itemCount % pageCount ==(pageCount-1))){
if(thisUrl.indexOf(timestamp)!=-1 ){
thisNum = postNum;
}
postNum++;
htmlMap[htmlMap.length] = '/search/label/'+thisLable+'?updated-max='+timestamp+'T00%3A00%3A00%2B08%3A00&max-results='+pageCount;
}
}
}
}//end if(post.category){
itemCount++;
}
}else{
if(title!=''){
if(itemCount==0 || (itemCount % pageCount ==(pageCount-1))){
if(thisUrl.indexOf(timestamp)!=-1 ){
thisNum = postNum;
}
if(title!='') postNum++;
htmlMap[htmlMap.length] = '/search?updated-max='+timestamp+'T00%3A00%3A00%2B08%3A00&max-results='+pageCount;
}
}
itemCount++;
}
}
for(var p =0;p< htmlMap.length;p++){
if(p>=(thisNum-displayPageNum-1) && p<(thisNum+displayPageNum)){
if(fFlag ==0 && p == thisNum-2){
if(thisNum==2){
if(isLablePage){
upPageHtml = labelHtml + upPageWord +'</a></span>';
}else{
upPageHtml = '<span class="showpage"><a href="/">'+ upPageWord +'</a></span>';
}
}else{
upPageHtml = '<span class="showpage"><a href="'+htmlMap[p]+'">'+ upPageWord +'</a></span>';
}
fFlag++;
}
if(p==(thisNum-1)){
html += '<span class="showpagePoint">'+thisNum+'</span>';
}else{
if(p==0){
if(isLablePage){
html = labelHtml+'1</a></span>';
}else{
html += '<span class="showpageNum"><a href="/">1</a></span>';
}
}else{
html += '<span class="showpageNum"><a href="'+htmlMap[p]+'">'+ (p+1) +'</a></span>';
}
}
if(eFlag ==0 && p == thisNum){
downPageHtml = '<span class="showpage"> <a href="'+htmlMap[p]+'">'+ downPageWord +'</a></span>';
eFlag++;
}
}//end if(p>=(thisNum-displayPageNum-1) && p<(thisNum+displayPageNum)){
}//end for(var p =0;p< htmlMap.length;p++){
if(thisNum>1){
if(!isLablePage){
html = ''+upPageHtml+' '+html +' ';
}else{
html = ''+upPageHtml+' '+html +' ';
}
}
html = '<div class="showpageArea"><span class="showpageOf"> Pages ('+(postNum-1)+')</span>'+html;
if(thisNum<(postNum-1)){
html += downPageHtml;
}
if(postNum==1) postNum++;
html += '</div>';
if(isPage || isFirstPage || isLablePage){
var pageArea = document.getElementsByName("pageArea");
var blogPager = document.getElementById("blog-pager");
if(postNum <= 2){
html ='';
}
for(var p =0;p< pageArea.length;p++){
pageArea[p].innerHTML = html;
}
if(pageArea&&pageArea.length>0){
html ='';
}
if(blogPager){
blogPager.innerHTML = html;
}
}
}
</script>
<script src="/feeds/posts/summary?alt=json-in-script&callback=showpageCount&max-results=99999" ; type="text/javascript"></sc

Πάμε στην Διάταξη-->Στοιχεία σελίδας-->Προσθήκη gadget-->HTML/JavaScript και κάνουμε επικόληση τον παραπάνω κώδικα.
Το κομμάτι του κώδικα, με το καφέ χρώμα (var pageCount = 10), μας δείχνει πόσες αναρτήσεις θα έχει η κάθε σελίδα. Μπορείτε να το αλλάξετε, και να βάλετε το επιθυμητό, για εσάς, νούμερο.
Πατάμε αποθήκευση αλλά δεν τελειώσαμε!
Παίρνουμε το widget και με drag and drop το βάζουμε κάτω από το πλαίσιο των αναρτήσεων.
Δείτε την παρακάτω φωτό για να καταλάβετε.



Image and video hosting by TinyPic

Πατάμε ξανά αποθήκευση, και τελειώσαμε.
Πανεύκολο ε?
Αν πάτε τώρα στην σελίδα σας, κάτω από τις αναρτήσεις θα δείτε όλες τις σελίδες των αναρτήσεών σας αριθμημένες!

Add To Facebook Add To Twitter Add To Yahoo Stumble This Fav This With Technorati Add To Del.icio.us Digg This Add To Reddit

10 σχόλια:

antirix είπε...

χρόνια πολλα ekabiti ,πολύ καλο widget θα μπορουσε ομως να μας δίχνει ποιο πολλά posts σε καθε σελίδα?

ekabitis είπε...

Παιδιά, ο κωδικός είχε ένα προβληματάκι και γι αυτό έβγαζε δύο μόνο αναρτήσεις στην δεύτερη σελίδα. Το πρόβλημα διορθώθηκε, και όποιος θέλει μπορεί να αντιγράψει τον κωδικό εκ νέου.

Gaurakos είπε...

ekabitis Ανθρωπέ μου, είσαι καταπληκτίκος! Έχω φτιάξει το μισό Blog μου χάρις στις αναλυτικές εξηγήσεις σου και πατέντες.από εκεί που δεν ήξερα τίποτα.Όταν λέμε τίποτα κυριολεκτώ. Να σαι καλά.

ekabitis είπε...

Gaurako, σε ευχαριστώ πολύ για τα καλά σου λόγια.
Νομίζω όμως ότι τα παραλές λιγάκι!

Speed982 είπε...

ΦΙΛΕ ΜΟΥ ekabitis ΔΕΝ ΜΟΥ ΤΟ ΔΈΧΕΤΑΙ. ΙΣΩς ΦΤΑΙΕΙ Η ΤΑΜΠΛΕΤΑ ΜΟΥ ΝΑ ΑΛΛΆΞΩ ΚΑΤΙ ΣΤΟΝ ΚΩΔΙΚΑ?

ekabitis είπε...

Speed982, αν τα κάνεις όλα σωστά, και παρόλα αυτά δεν στο δέχεται, κατά πάσα πιθανότητα ευθύνεται το template που χρησιμοποιείς.
Δοκίμασε και αυτό.
Είναι κάπως διαφορετικό. Ελπίζω να δουλέψει!

Γιάννης είπε...

Καλημέρα, και κατ αρχήν ευχαριστώ για τις χρήσιμες συμβουλές!΅Εβαλα το widget και μου παρουσιάζει ορισμένα προβλήματα. Το πρώτο είναι πως δεν εμφανίζεται στην home page, αλλά δημιουργεί σελίδες μόνο στις ετικέτες. Το δεύτερο είναι πως στις σελίδες που δημιουργεί αριθμημένες, δεν κατανέμει τις αναρτήσεις με ίδιο αριθμο αναρτήσεων σε κάθε σελίδα. Ετσι, για παράδειγμα, υπάρχει ετικέτα με 25 αναρτήσεις, όπου η 1 σελίδα έχει 17 αναρτήσεις, η 2 σελίδα έχει 5, η 3 σελίδα έχει 2 αναρτήσεις και η 4 σελίδα έχει μία ανάρτηση. Κι αυτά, παρόλο που έχω καθορίσει το pagecount σε 10 αναρτήσεις... Ενα ακόμη θεματάκι είναι αν θα μπορούσε το 'next' μετά τους αριθμούς των σελίδων να εμφανιζεται στα ελληνικά, δηλαδή 'επόμενη"... Νομίζω πως το πιο σημαντικό από όλα αυτά είναι το θέμα του αριθμού των αναρτήσεων ανά σελίδα, γιατί μπερδεύει τον αναγνώστη. Ελπίζω να μην σε κούρασα Ekabiti, αν έχεις χρόνο θα εκτιμούσα κάθε βοήθεια!

ekabitis είπε...

Γιάννη, επειδή ρώτησες πολλά, και δεν είναι εύκολο να απαντηθούν μέσω σχολίου, στείλε μου αν θες το mail σου, να τα πούμε καλύτερα.

caeser είπε...

Σε μένα λειτουργεί τέλεια! Σ'ευχαριστώ πολύ!!!

Γιώτα Νικολάου είπε...

Αυτό που ήθελα. Και λειτουργεί μια χαρά. Ευχαριστώ πολύ.

Δημοσίευση σχολίου