Como criar uma página no Blogger para mostrar todas as tags/labels

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='&quot;widget-content &quot; + data:display + &quot;-label-widget-content&quot;'>
          <b:if cond='data:display == &quot;list&quot;'>
            <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='&quot;label-size label-size-&quot; + 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>

Artigos relacionados