W tym celu wykorzystałem wskazówki zawarte w artykułach:
- http://progbis.blogspot.com/2011/05/dynamiczna-alfabetyczna-lista-postow.html
- http://beautifulbeta.wikidot.com/json-feeds
Wystarczy do postu wstawić poniższy kod wpisując w linku adres swojego bloga:
<script>
var postList = new Array();
function GetPostList(json)
{
for(var i=0;i<json.feed.entry.length;++i)
postList.push(json.feed.entry[i]);
}
function SortByTitle(a,b)
{
var x=a.title.$t.toLowerCase();
var y=b.title.$t.toLowerCase();
if(x==y) return 0;
if(x>y) return 1;
return -1;
}
function SortByPublished(a,b)
{
var x=a.published.$t;
var y=b.published.$t;
if (x==y) return 0;
if (x<y) return 1;
return -1;
}
function ShowPostList()
{
//sortowanie alfabetyczne
postList.sort(SortByTitle);
//sortowanie po dacie
//postList.sort(SortByPublished);
document.write('<ul>');
for(var i=0;i<postList.length;++i)
{
document.write('<li>');
var posturl;
for(var k=0;k<postList[i].link.length;++k)
{
if (postList[i].link[k].rel == 'alternate')
{
posturl=postList[i].link[k].href;
break;
}
}
document.write('<a href="'+posturl+'">');
//gdyby ktoś potrzebował miniaturkę - odkomentować
//if(postList[i].media$thumbnail)
//document.write('<img src="'+postList[i].media$thumbnail.url+'"/> ');
document.write(postList[i].title.$t);
document.write('</a>');
if(postList[i].category)
for (var m=0; m<postList[i].category.length;++m)
{
document.write(' - <i>'+ postList[i].category[m].term+'</i>');
}
document.write('</li>');
}
document.write('</ul>');
document.write('<br><br><i>pobranych postów: '+postList.length+'</i>');
}
</script>
<script src="http://danielklecha.blogspot.com/feeds/posts/default?alt=json-in-script&start-index=1&max-results=500&callback=GetPostList"></script>
<script src="http://danielklecha.blogspot.com/feeds/posts/default?alt=json-in-script&start-index=501&max-results=500&callback=GetPostList"></script>
<script>ShowPostList();</script>
<script>
var postList = new Array();
function GetPostList(json)
{
for(var i=0;i<json.feed.entry.length;++i)
postList.push(json.feed.entry[i]);
}
function SortByTitle(a,b)
{
var x=a.title.$t.toLowerCase();
var y=b.title.$t.toLowerCase();
if(x==y) return 0;
if(x>y) return 1;
return -1;
}
function SortByPublished(a,b)
{
var x=a.published.$t;
var y=b.published.$t;
if (x==y) return 0;
if (x<y) return 1;
return -1;
}
function ShowPostList()
{
//sortowanie alfabetyczne
postList.sort(SortByTitle);
//sortowanie po dacie
//postList.sort(SortByPublished);
document.write('<ul>');
for(var i=0;i<postList.length;++i)
{
document.write('<li>');
var posturl;
for(var k=0;k<postList[i].link.length;++k)
{
if (postList[i].link[k].rel == 'alternate')
{
posturl=postList[i].link[k].href;
break;
}
}
document.write('<a href="'+posturl+'">');
//gdyby ktoś potrzebował miniaturkę - odkomentować
//if(postList[i].media$thumbnail)
//document.write('<img src="'+postList[i].media$thumbnail.url+'"/> ');
document.write(postList[i].title.$t);
document.write('</a>');
if(postList[i].category)
for (var m=0; m<postList[i].category.length;++m)
{
document.write(' - <i>'+ postList[i].category[m].term+'</i>');
}
document.write('</li>');
}
document.write('</ul>');
document.write('<br><br><i>pobranych postów: '+postList.length+'</i>');
}
</script>
<script src="http://danielklecha.blogspot.com/feeds/posts/default?alt=json-in-script&start-index=1&max-results=500&callback=GetPostList"></script>
<script src="http://danielklecha.blogspot.com/feeds/posts/default?alt=json-in-script&start-index=501&max-results=500&callback=GetPostList"></script>
<script>ShowPostList();</script>
*
Witam,
OdpowiedzUsuńwstawiłam powyższy kod na stronę/posta, zmieniłam adres, ale nadal nie widzę listy postów. Pokazuje się tylko komunikat "pobranych postów: 0". Czy to przez to, że blog jest prywatny? Czy może muszę pozmieniać coś jeszcze w kodzie html całego bloga? Proszę o pomoc!
Pozdrawiam
Skrypt pobiera feed postów publicznych - tak też jest to ujęte na stronie api google - https://developers.google.com/gdata/samples/blogger_sample - dlatego lista nie będzie zawierać postów prywatnych
OdpowiedzUsuńJeżeli sądzisz, że wszystko jest ok, pomiń javascript i wejdź bezpośrednio na adres: http://danielklecha.blogspot.com/feeds/posts/default?alt=json-in-script
wstawiając nazwę swojego bloga i zobacz czy w zwróconej tablicy są linki do Twoich postów.
Pozdrawiam
Wszystko jest dobrze, wina bloga prywatnego. Dzięki za wyjaśnienie.
OdpowiedzUsuńPozdrawiam
Jak zmienić funkcję na chronologiczną?
OdpowiedzUsuńnie przetestowałem tego ale powinno zadziałać coś w stylu
OdpowiedzUsuńfunction SortByPublished(a,b)
{
if (b.published.$t==a.published.$t) return 0;
if (a.published.$t>b.published.$t) { return 1; }
else return -1;
}
i zaktualizować linię na
tabentry.sort(SortByPublished); //sortuj tablicę
Możliwe, że lista jest domyślnie zwracana chronologicznie wtedy wystarczy zakomentować linię sortującą wpisy
Witam serdecznie, dałoby się stworzyć listę postów ale bez wyświetlania informacji w jakich sa kategoriach?
OdpowiedzUsuńPozdrawiam
trzeba ukryć fragment
OdpowiedzUsuńif(tabentry[i].category)
for (var m = 0; m < tabentry[i].category.length; m++) {
document.write(' - '+ tabentry[i].category[m].term+'');
}
dzieki!
OdpowiedzUsuńSuper, A czy da się dołączyć miniaturkę?:)
OdpowiedzUsuńTak, można dodać miniaturkę. Dodałem zakomentowany fragment w poście. Pozdrawiam.
OdpowiedzUsuńwitaj,
OdpowiedzUsuńu mnie w ogóle nie działa. o co może chodzic??
poniżej strona z kodem
http://tradycyjnakuchnia.blogspot.com/p/asa.html
działa :) dziękuj za pomoc :) czegoś takiego szukałam
OdpowiedzUsuńdzięki, super działa
OdpowiedzUsuńWitam, chciałbym zapytac, czy dałoby się wyświetlać listę w dwóch kolumnach?
OdpowiedzUsuńMusisz dodać sobie klasę css:
Usuń.two-columns {
-webkit-column-count: 2;
-moz-column-count: 2;
column-count: 2;
}
i dopisać ją do taga ul w powyższym skrypcie:
document.write('#ul class="two-columns"#');
Nie mogę dodać ostrych nawiasów więc podmień sobie znaki #
Witam, pobiera mi tylko 150 postów. Co trzeba skorygować?
OdpowiedzUsuńhttp://motyw-kolejowy.blogspot.com/p/spis-filmow-na-stronie.html
pozdrawiam
Solidnie napisane. Pozdrawiam i liczę na więcej ciekawych artykułów.
OdpowiedzUsuń