Não há uma forma simples de ir buscar todas as tags existentes num site ou blog alojado no Blogger. Hoje vou mostrar como contornar este problema.
Usando a API do Blogger a única forma de listar todas as tags é indo buscar todos os posts, tirar todas as tags, remover os duplicados e o ficamos com todas as tags disponíveis no blog. Dependendo do número de posts que o blog tiver, esta chamada pode demorar bastante tempo.
Vou mostrar uma maneira melhor e mais fácil de mostrar todas as labels numa página usando o widget Labels.
A ideia é mostrar o conteúdo do widget apenas quando estivermos numa página especifica. Essa página deve ser criada préviamente.
Usando o código default do widget Labels (pode adicioná-lo ao seu template através o menu Layout > Add Gadget) e introduzindo duas condições no inicio do includable main consegui fazer com que as tags apenas apareçam numa página especifica do blog. As condições que usei foram: verificar se a página actual é uma static_page
e verificar se o título de página é o mesma da pagina onde quero mostrar as tags.
Porquê estas condições? No meu caso queria mostrar as tags numa static_page
. Pode ver aqui todos os pageTypes de página disponíveis.
Para especificar a static page que quero uso o titulo. Também seria possível comparar o url da página usando a propriedade data:blog.url
mas como quero usar este código em dois sites diferentes (de teste e produção) assim posso ver as tags na página qualquer que seja o URL.
<b:widget id='Label1' locked='false' title='Labels' type='Label'>
<b:includable id='main'>
<b:if cond='data:blog.pageType == "static_page"'>
<b:if cond='data:blog.pageName == "Tags"'>
<b:if cond='data:title'>
<h2><data:title/></h2>
</b:if>
<div expr:class='"widget-content " + data:display + "-label-widget-content"'>
<b:if cond='data:display == "list"'>
<ul>
<b:loop values='data:labels' var='label'>
<li>
<b:if cond='data:blog.url == data:label.url'>
<span expr:dir='data:blog.languageDirection'><data:label.name/></span>
<b:else/>
<a expr:dir='data:blog.languageDirection' expr:href='data:label.url'><data:label.name/></a>
</b:if>
<b:if cond='data:showFreqNumbers'>
<span dir='ltr'>(<data:label.count/>)</span>
</b:if>
</li>
</b:loop>
</ul>
<b:else/>
<b:loop values='data:labels' var='label'>
<span expr:class='"label-size label-size-" + data:label.cssSize'>
<b:if cond='data:blog.url == data:label.url'>
<span expr:dir='data:blog.languageDirection'><data:label.name/></span>
<b:else/>
<a expr:dir='data:blog.languageDirection' expr:href='data:label.url'><data:label.name/></a>
</b:if>
<b:if cond='data:showFreqNumbers'>
<span class='label-count' dir='ltr'>(<data:label.count/>)</span>
</b:if>
</span>
</b:loop>
</b:if>
<b:include name='quickedit'/>
</div>
</b:if>
</b:if>
</b:includable>
</b:widget>