16 de out de 2008

Widget com todas as postagens

Dica quente do blog El Scaparate de Rosa. Um Widget com todas as postagens que já foram publicadas no blog. Experimentei e gostei !


Não se esqueça de antes de começar salvar uma cópia de seu template, caso não dê certo, é só reinstalá-lo.



Vá até o HTML do blog e procure pelo código:
</head>

Acima dele, cole o código abaixo. Salve !


<script type='text/javascript'>
// Developed by Hoctro - All rights reserved 2007
// This credit must be included in all your derived usages.
// &quot;cb&quot; is intended to be a common library, where different widgets would
// utitlize the shared operations such as getTitle, getLink, etc. from a json object.
var cb = {
// search function requires these parameters:
// 1. query: a blogger address, such as &quot;hoctro.blogspot.com&quot;,
// 2. type: type of return data, either &quot;comments&quot; or &quot;posts&quot;,
// 3. start: the start-index parameter (where to start extracting data)
// 4. increment: the number of elements the json will get back. (the smaller value, the faster time to travel back)
// 5. func: the returned function the json object will feed.
search: function(query, type, start, increment, func) {
var script = document.createElement(&#39;script&#39;);
script.setAttribute(&#39;src&#39;, &#39;http://&#39; + query + &#39;/feeds/&#39; + type + &#39;/default?alt=json-in-script&amp;start-index=&#39;
+ start + &#39;&amp;max-results=&#39; + increment + &#39;&amp;callback=&#39; + func + &#39;&amp;orderby=published&#39;);
script.setAttribute(&#39;type&#39;, &#39;text/javascript&#39;);
document.documentElement.firstChild.appendChild(script);
},
// searchLabel function return a result of posts w/ a label query
// it requires these parameters:
// 1. query: a blogger address, such as &quot;hoctro.blogspot.com&quot;,
// 2. an array of labels
// 3. func: the returned function the json object will feed.
searchLabel: function(query, label, func) {
var script = document.createElement(&#39;script&#39;);
script.setAttribute(&#39;src&#39;, &#39;http://&#39; + query + &#39;/feeds/posts/default/-/&#39; + encodeURIComponent(label) +
&#39;?alt=json-in-script&amp;callback=&#39; + func + &#39;&amp;orderby=published&#39;);
script.setAttribute(&#39;type&#39;, &#39;text/javascript&#39;);
document.documentElement.firstChild.appendChild(script);
},
// getTotalResults needs the json object, and it&#39;ll return the total number of comments (or posts) of the blog.
getTotalResults: function(json) {
return json.feed.openSearch$totalResults.$t;
},
// getStartIndex gets the start index of a search inside an json object.
getStartIndex: function(json) {
return json.feed.openSearch$startIndex.$t;
},
// getLink return a href link if &quot;name&quot; matches the content inside &quot;a&quot; tags) of the link
getLink: function(entry, name) {
var alturl;
for (var k = 0; k &lt; entry.link.length; k++) {
if (entry.link[k].rel == name)
alturl = entry.link[k].href;
}
return alturl;
},
// getTitle gets the title of the title of an entry of a json object.
getTitle: function(entry) {
return entry.title.$t;
},
// getContent gets the content inside an entry of a json object.
getContent: function(entry) {
return entry.content.$t;
},
// getCommentAuthor: gets the commenter name inside an entry of a json object.
getCommentAuthor: function(entry) {
return entry.author[0].name.$t;
},
// Given a json label search, this function return the decoded label.
getLabelFromURL: function(json) {
for (var l = 0; l &lt; json.feed.link.length; l++) {
if (json.feed.link[l].rel == &#39;alternate&#39;) {
var raw = json.feed.link[l].href;
// The next two lines are borrowed from Ramani&#39;s Neo Template
// code. Thanks Ramani!
var label = raw.substr(raw.lastIndexOf(&#39;/&#39;)+1);
return decodeURIComponent(label);
}
}
},
txt : function (s) {
return s + &quot; Widget by &lt;a href=&#39;http://hoctro.blogspot.com&quot; + &quot;&#39;&gt;Hoctro&lt;/a&gt;&quot;;
}
};
</script>



Agora procure pelo código:

<b:section class='sidebar' id='sidebar' preferred='yes'>

E abaixo dele cole o seguinte código:
*Troque o código que está em vermelho pelo nome de seu blog.


<b:widget id='HTML50' locked='false' title='Todos os posts' type='HTML'>
<b:includable id='main'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != &quot;&quot;'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
<ul><div id='dataPost' style='height:400px; overflow:auto;'/></ul>
</div>
<script type='text/javascript'>
// Developed by Hoctro - All rights reserved 2007
// This credit must be included in all your derived usages.
// This widget lists the available posts based on the uP.nPost value below
// Use -1 if you want them all.
var uP = {
nPost : -1
};
var cP = {
// private variable to store the total results
totCount : 0,
// the number of elements for each json call
increment : 10,
// this is the place to define the blog name for subsequent retrieval data
web : &quot;AQUI O NOME DE SEU BLOG.blogspot.com&quot;,
listPosts: function(json, tag) {
var text=&quot;&quot;;
for (var i = 0; i &lt; json.feed.entry.length; i++) {
var entry = json.feed.entry[i];
text += &quot;<li>&quot; + &quot;&lt;a href=&#39;&quot; + cb.getLink(entry, &quot;alternate&quot;)
+ &quot;&#39;&gt;&quot; + cb.getTitle(entry) + &quot;</li>&quot;;
}
var p = document.createElement(&#39;span&#39;);
document.getElementById(tag).appendChild(p);
p.innerHTML = text;
},
callPostJson: function(json) {
this.listPosts(json, &quot;dataPost&quot;);
},
getCo : function(json) {
this.totCount = cb.getTotalResults(json);
var count = (uP.nPost &lt; 0) ? this.totCount : uP.nPost;
var i=1;
while(i&lt;=count) {
var incr = (count-i &lt; this.increment) ? count-i+1 : this.increment;
cb.search( cP.web, &quot;posts&quot;, i, incr, &#39;cP.callPostJson&#39;);
if (incr==0) incr=incr+1;
i = i+incr;
}
}
};
cb.search( cP.web, &quot;posts&quot;, 1, 2, &#39;cP.getCo&#39;);
</script>
</b:includable>
</b:widget>

4 comentários:

  1. Uia muié tá firmona ainda, que bom!!! kkkkk deve tá com um calor doido hein?
    Que bom mais uma dica preciosa! beijão

    ResponderExcluir
  2. Tô aqui Mimo, num calor insuportável !
    40º em Brasília, sem uma brisa ao menos. Terrível, e para grávidas como sabe o calor é maior. Quarta feira estarei indo para Goiânia e na outra quarta o Gabriel já estará observando esse mundão. Beijos

    ResponderExcluir
  3. Excelente dica!!!
    Parabéns, ficou muito bom!!!
    pelo menos no chrome e no firefox, pois no IE nunca dá certo... nem vou olhar...
    Também usei sua dica de menu expansível...show...deixei o link na "ajuda"...
    Abraços

    ResponderExcluir
  4. Olá Estimada!
    Eu coloquei os códigos no html. Acontece que aparece o Título "Todos os Posts", mas não aparece nenhum post ali. O que será que está acontecendo?
    Desde já agradeço a ajuda. superius@terra.com.br

    ResponderExcluir

A legislação brasileira prevê a possibilidade de se responsabilizar o blogueiro pelo conteúdo do blog, inclusive quanto a comentários; portanto, o autor deste blog reserva a si o direito de não publicar comentários que firam a lei, a ética ou quaisquer outros princípios da boa convivência. Não serão aceitos comentários anônimos ou que envolvam crimes de calúnia, ofensa, falsidade ideológica, multiplicidade de nomes para um mesmo IP ou invasão de privacidade pessoal / familiar a qualquer pessoa. Comentários sobre assuntos que não são tratados aqui também poderão ser suprimidos, bem como comentários com links. Este é um espaço público e coletivo e merece ser mantido limpo para o bem-estar de todos nós.


Copyright © Templates e Acessórios |
Design by Elke di Barros | Tecnologia do Blogger
    Twitter Facebook Google + YouTube