Blogger: Como criar uma navegação por tabs para artigos populares e artigos recentes

Uma secção com uma lista de tabs para diferentes categorias de posts (popular, recentes, comentário, etc.) é uma funcionalidade muito popular em blogs e sites.

Vou mostrar como implementar um conjunto de tabs para artigos populares / recentes no template do Blogger. Isto é o que queremos fazer:

Se não sabe como criar uma listagem de posts recentes veja o meu artigo sobre como criar um widget de posts recentes no Blogger.

Terá que incluir as referências necessárias ao jQuery e jQueryUI no seu template do Blogger.

Terá que incluir também o widget Popular Posts no seu template, se ainda não o fez.

De seguida, na página de administração do seu blog, vá à secção Template (do lado direito). Clique em “Edit HTML”. Copie todo o código para um ficheiro xml no seu computador.

Vamos editar este ficheiro.

Procure pelo widget PopularPosts no ficheiro. Substitua-o com o seguinte (quando substituir o widget certifique-se que usa o mesmo ID que o widget original):

<b:widget id='PopularPosts1' locked='false' title='Popular Posts' type='PopularPosts'>
    <b:includable id='main'>
        <div class="block">
            <div id="tabs">
                <ul>
                    <li><a href="#popular-posts">Popular</a></li>
                    <li><a href="#recent-posts">Recent</a></li>
                </ul>
                <div id="popular-posts">
                    <div class='widget-content popular-posts'>
                        <ul>
                          <b:loop values='data:posts' var='post'>
                          <li>
                            <b:if cond='data:showThumbnails == &quot;false&quot;'>
                              <b:if cond='data:showSnippets == &quot;false&quot;'>
                                <!-- (1) No snippet/thumbnail -->
                                <a expr:href='data:post.href'><data:post.title/></a>
                              <b:else/>
                                <!-- (2) Show only snippets -->
                                <div class='item-title'><a expr:href='data:post.href'><data:post.title/></a></div>
                                <div class='item-snippet'><data:post.snippet/></div>
                              </b:if>
                            <b:else/>
                              <b:if cond='data:showSnippets == &quot;false&quot;'>
                                <!-- (3) Show only thumbnails -->
                                <div class='item-thumbnail-only'>
                                  <b:if cond='data:post.thumbnail'>
                                    <div class='item-thumbnail'>
                                      <a expr:href='data:post.href' target='_blank'>
                                        <img alt='' border='0' expr:height='data:thumbnailSize' expr:src='data:post.thumbnail' expr:width='data:thumbnailSize'/>
                                      </a>
                                    </div>
                                  </b:if>
                                  <div class='item-title'><a expr:href='data:post.href'><data:post.title/></a></div>
                                </div>
                                <div style='clear: both;'/>
                              <b:else/>
                                <!-- (4) Show snippets and thumbnails -->
                                <div class='item-content'>
                                  <b:if cond='data:post.thumbnail'>
                                    <div class='item-thumbnail'>
                                      <a expr:href='data:post.href' target='_blank'>
                                        <img alt='' border='0' expr:height='data:thumbnailSize' expr:src='data:post.thumbnail' expr:width='data:thumbnailSize'/>
                                      </a>
                                    </div>
                                  </b:if>
                                  <div class='item-title'><a expr:href='data:post.href'><data:post.title/></a></div>
                                  <div class='item-snippet'><data:post.snippet/></div>
                                </div>
                                <div style='clear: both;'/>
                              </b:if>
                            </b:if>
                          </li>
                          </b:loop>
                        </ul>
                        <b:include name='quickedit'/>
                    </div>
                </div>
                <div id="recent-posts">
                    <div class='widget-content popular-posts'>
                    <div id="recentposts"> </div>
                    <script type="text/javascript">
                            displayRecentArticles({'containerSelector': '#recentposts'});
                    </script>
                    </div>
                </div>
            </div>
            <script type="text/javascript">
                $(document).ready(function() {    
                    $("#tabs").tabs(); 
                });
            </script>
        </div>
    </b:includable>
</b:widget>

O que mudou:

  • Coloquei algumas divs à volta do código dos Popular Posts
  • Acrescentei no fim uma div para os posts recentes, logo a seguir aos posts populares
  • Acrescentei um ul para o cabeçalho das tabs (como é necessário no jQueryUI)
  • Acrescentei o script no final para que o jQueryUI crie o interface de tabs

Não esqueça:

  • Inclua a referência para o jQuery e jQueryUI na secção head
  • Os posts recentes apenas funcionarão se seguir estas instruções.
Dércia Silva
Publicado por Dércia Silva em 17 janeiro, 2014

Artigos relacionados