A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Adicionando um ícone junto aos do pdf, print e email

Seg

8

Dez

2008


19:04

(4 votos, média 3.25 de 5) 


Escrevi este tutorial a pedido do meu amigo Jonnathan que me mandou um email perguntando "como inserir um novo icone do lado dos icones e-mail, imprimir, pdf, etc.. com uma nova função". Achei a idéia interessante, principalmente por que, para implementar um projeto destes, é preciso conhecer alguns aspectos relevantes do CMS Joomla.

Etapas do projeto

As etapas deste projeto são as seguintes:

  1. Em primeiro lugar, é preciso saber onde os ícones pdf, imprimir e email (com seus respectivos links) estão sendo gerados.
  2. Depois disto, é preciso saber qual template está sendo utilizado para gerar as páginas onde queremos o novo ícone.
  3. Finalmente, é preciso substituir o arquivo original que gera os ícones (e outras partes das páginas) por um outro que faça parte do conjunto de arquivos do template escolhido.

Conhecendo o caminho das pedras, este projeto até que é simples de implementar. Então, vamos lá.

Arquivo primário que cria as páginas

O componente, que faz parte do sistema Joomla, responsável pela apresentação de páginas colocadas em classes e categorias (assim como as não categorizadas) é o com_content. Este componente realiza todas as tarefas e, para a apresentação final, busca o template que designamos para a classe e/ou categoria do artigo (com isto, também o template do próprio artigo). A estrutura do com_content é a seguinte (procure no diretório /components/com_content):

content.php controller.php index.html metadata.xml router.php view.php helpers --------| |- icon.php |- index.html |- query.php |- route.php models ---------| |- archive.php |- article.php |- category.php |- frontpage.php |- index.html |- section.php views-----------| |- archive -----| |- index.html |- metadata.xml |- view.html.php |- tmpl -----| |- default.php |- default.xml |- default_items.php |- index.html |- article -----| |- index.html |- metadata.xml |- view.html.php |- view.pdf.php |- tmpl -----| |- default.php |- default.xml |- form.php |- form.xml |- index.html |- pagebreak.php |- pagebreak.xml |- category ----| |- index.html |- metadata.xml |- view.feed.php |- view.html.php |- tmpl -----| |- blog.php |- blog.xml |- blog_item.php |- blog_links.php |- default.php |- default.xml |- default_items.php |- index.html |- frontpage ---| |- index.html |- metadata.xml |- view.feed.php |- view.html.php |- tmpl -----| |- default.php |- default.xml |- default_item.php |- default_links.php |- index.html |- section -----| |- index.html |- metadata.xml |- view.feed.php |- view.html.php |- tmpl -----| |- blog.php |- blog.xml |- blog_item.php |- blog_links.php |- default.php |- default.xml |- index.html

Eu sei que é uma canseira ver toda esta árvore de diretórios e seus arquivos, mas isto é essencial para entender como funciona a etapa 3 do nosso projeto. Todos os arquivos index.html podem ser ignorados - eles apenas estão presentes em todos os diretórios por motivo de segurança. Se alguém chamar um destes diretórios diretamente, usando um endereço como "www.seusite.com.br/components/helpers/", vai receber apenas uma página em branco e não a listagem dos arquivos e dos sub-diretórios.

O único arquivo que nos interessa no momento é um dos default.php, mas antes umas palavrinhas sobre templates.

Os templates

Uma das características dos templates (que estão todos em sub-diretórios do diretório /templates) é que são chamados pelo componente com_content para fornecerem "a cara da página". São responsáveis pela cor de fundo, cor do texto, jeitão dos links e por aí vai. Acontece que têm mais uma característica muito especial: se houver um arquivo com o mesmo nome no diretório /html/com_content/article, /html/com_content/category, etc, o arquivo do componente com_content será automaticamente subsituído pelo do template.

Este é o pulo do gato! Podemos trocar o arquivo original por outro que faça exatamente o que queremos! Então vamos lá...

Informações adicionais