Você está na página 1de 58

Curso de Joomla 1.5 – http://ribafs.

org

Software de Gestão de Conteúdo na Internet - Joomla


1. Introdução ao Joomla . . . . . 2
Conceito de CMS
História
Instalação
Pré-requisitos
Ferramentas
Ambiente
Projeto

2. Criação de Conteúdo . . . . . 13
Criando seções
Criando categorias
Criando conteúdo
Editando módulos
Componentes Padrões

3. Configurando o site. . . . . . 23
Banco de Dados
Meta dados
Estatísticas/SEO
Conteúdo(visualizações de ícones e listagens)

4. Componentes . . . . . . 27
O que são?
Usando os componentes padrões
Instalação de componente
Criação de componentes
Estrutura de diretórios
Estrutura de arquivos
XML de instalação

5. Administração de usuários . . . . . 40
Controle de Níveis de Acesso

6. Módulos . . . . . . . 42
O que é?
Instalação
Como criar modulo pelo Joomla
Criação de Módulos
Estrutura de arquivos
XML de instalação

7. Mambot/Plugin . . . . . . 47
O que é?
Instalação
Criação de Mambot
Estrutura de arquivos
XML de instalação

8. Templates . . . . . . . 51
Posições de template
Editando um template
Instalando um template
Criação de Template
Estrutura de arquivos
XML de instalação

Página 1/58
Curso de Joomla 1.5 – http://ribafs.org

1. Introdução ao Joomla
Conceito de CMS
Segundo a Wikipédia (http://pt.wikipedia.org/wiki/Sistema_de_gerenciamento_de_conteúdo):

Um Sistema de Gestão de Conteúdo - SGC, (em inglês Content Management Systems - CMS), é um
sistema gestor de websites, portais e intranets que integra ferramentas necessárias para criar, gerir (editar e
inserir) conteúdos em tempo real, sem a necessidade de programação de código, cujo objetivo é estruturar
e facilitar a criação, administração, distribuição, publicação e disponibilidade da informação. A sua maior
característica é a grande quantidade de funções presentes.
Podemos dizer que um CMS é um framework, “um esqueleto” de website pré-programado, com
recursos básicos e de manutenção e administração já prontamente disponíveis. É um sistema que
permite a criação, armazenamento e administração de conteúdos de forma dinâmica, através de uma
interface de utilizador via Internet. Um CMS permite que a empresa tenha total autonomia sobre o
conteúdo e evolução da sua presença na internet e dispense a assistência de terceiros ou empresas
especializadas para manutenções de rotina. Nem mesmo é preciso um funcionário dedicado
(webmaster), pois cada membro da equipe poderá gerir o seu próprio conteúdo, diminuindo os
custos com recursos humanos. A habilidade necessária para trabalhar com um sistema de gestão de
conteúdo não vai muito além dos conhecimentos necessários para um editor de texto.
A aparência de um website criado com um CMS é customizável, através da utilização de templates
que podem ser facilmente substituídos.
Em suma, o grande diferencial de um CMS é permitir que o conteúdo de um website possa ser
modificado de forma rápida e segura de qualquer computador conectado à Internet. Um sistema de
gestão de conteúdo reduz custos e ajuda a suplantar barreiras potenciais à comunicação web
reduzindo o custo da criação, contribuição e manutenção de conteúdo.
Um grande exemplo de CMS é o Joomla!, onde é facilmente realizada a edição de conteúdos, a
partir do próprio site, podendo também ser usado para o gerenciamentos de intranet.
Aqui uma lista de CMS:
http://pt.wikipedia.org/wiki/Categoria:Sistemas_de_gest%C3%A3o_de_conte%C3%BAdo

História do Joomla
O Joomla nasceu de um outro CMS, o Mambo, que também era um CMS bastante premiado.

Trata-se do resultado da separação entre a equipe de desenvolvedores do Mambo e a empresa Miro,


detentora dos direitos sobre o Mambo. A separação teve lugar uma vez que a Miro transferiu o controle do
Mambo para uma fundação - a Mambo Foundation - onde os desenvolvedores teriam apenas uma
participação passiva e pouco representativa. Esses desenvolvedores, preocupados com a integridade do
projeto e com o futuro dos utilizadores, não aceitaram a transferência e, em 2005, criaram o "Joomla 1.0",
também "open source", a partir do código-fonte do Mambo 4.5.2.

- O Mambo foi criado pela emrepsa Miro no ano 2000.


- Em 2001 o Mambo foi liberado sob a licença GPL2
- Em 2004 o Mambo recebe o prêmio de melhor projeto de software livre da Linux Format
- Em 2005 ganha outros prêmios
- Em setembro de 2005 a equipe do Mambo se divide e nasce o Joomla
- O Joomla continua a tradição de ganhar prêmios do Mambo

Página 2/58
Curso de Joomla 1.5 – http://ribafs.org

A editora Packt Publishing (http://www.packtpub.com/award) patrocina anualmente um prêmio para os


melhores CMS open source.

O Joomla tirou o segundo lugar em 2008.


Em 2007 tirou o primeiro lugar.
Em 2006 também tirou o primeiro lugar.

- Atualmente (02/08/2009) o Joomla está na versão 1.5.14

Algumas das Características do Joomla


- Editor HTML amigável para adição e alteração dos artigos
- Registro de usuários com níveis de acesso ao conteúdo
- Pesquisa em todo o conteúdo do site
- Formulários de contato
- Enquetes
- Estatísticas no site e na administração
- Envio de e-mail
- Envio de artigos por e-mail
- Formatos de impressão dos artigos em HTML e PDF
- RSS
- Organização de conteúdo: seções, categorias e artigos
- Notícias
- Links
- Artigos do tipo padrão (site) ou blog
- Grande quantidade de extensões de terceiros gratuitas e comerciais
- Grande quantidade de templates gratuitos e comerciais

O Joomla gerencia o conteúdo e também permite a integração de aplicativos complexos:


- e-commerce
- forums
- redes sociais
- etc

Dados Atuais sobre o Joomla (20/08/2009):

- Ocorrências retornadas no Google - 101.000.000


- Total de usuários do Forum (http://forum.joomla.org) - 307.769
- Total de posts no forum - 1.747.452
- Total de extensões catalogadas no http://extensions.joomla.org - 3.167
- Existem muitos templates gratuitos na internet
- Atualmente suporta 50 idiomas diferentes. Podem ser encontradas no Joomla Code ou no Extensions:
http://joomlacode.org/gf/project/jtranslation/frs/?
action=&br_pkgrlssort_by=package_name&br_pkgrlssort_order=asc
http://extensions.joomla.org/index.php?option=com_mtree&task=listcats&cat_id=1837&Itemid=2

Onde podemos utilizar o Joomla


O Joomla pode ser utilizado em uma grande quantidade de tipos de sites

- Escolas e universidades (UFC e USP)


- Corporações
- E-commerce
- Organizações comunitárias e não governamentais

Página 3/58
Curso de Joomla 1.5 – http://ribafs.org

- Organizações governamentais (MEC)


- Intranets e extranets corporativas
- Páginas pessoais e familiares
- Jornais e revistas
- etc

Aqui uma boa relação de site famosos criados com Joomla:


http://ribafs.org/portal/joomla/78-dicas/111-sites-famosos-em-joomla

Instalação
Pré-requisitos

Pré-requisitos para o Joomla 1.5

Software Mínimo Recomendado Mais informações

PHP 4.3.10 5.2.+ http//php.net


MySQL 3.23.x ou superior 4.1.x + http://dev.mysql.com/downloads/mysql/5.0.html
Apache 1.3 ou superior 2.x + http://httpd.apache.org
MS IIS 7 6 http://www.iis.net

Pré-requisitos para o Joomla 1.0.x

Software Recomendado Minimum Mais informações

PHP 5.2 + 4.2 http://www.php.net


MySQL 4.1.x + 3.23 http://www.mysql.com
Apache
(com mod_mysql, mod_xml, and mod_zlib)
2.x + 1.3 http://www.apache.org

MS IIS 7 6 http://www.iis.net

mod_mysql
mod_xml
mod_zlib

Precisa se certificar de tem as funcionalidades MySQL, XML e Zlib habilitadas na instalação do PHP. Pode
ser constatado no php.ini.

Não use as versões 4.3.9, 4.4.2 ou 5.0.4 do PHP, pois eles têm bugs conhecidos.
Os melhores e mais consistentes resultados são obtidos com versões da série 5.x.

Para usar URLs amigáveis precisa ter a extensão mod_rewrite instalada.

O Joomla foi testado em muitas variantes dos três principais sistemas operacionais: Windows, Linux e Apple
Mac OSX. Também deve funcionar em outras plataformas mas ainda é pouco documentado.

Joomla ainda não é compatível com MySQL 6.x.

Testado nos principais navegadores: IE6 +, Firefox 1.5 +, Safari e Opera mas deve também funcionar em
outros.

Página 4/58
Curso de Joomla 1.5 – http://ribafs.org

Existem problemas conhecidos com algumas configurações do CSS no IE6.

Joomla é otimizado para o Apache mas também roda no Microsoft IIS.

Ferramentas

U uso de boas ferramentas geram uma grande diferença entre profissionais de qualquer área e também
entre o mesmo profissional com e sem ferramentas.

Um exemplo simples:

Crie um grande portal para a web partindo do zero, digitando cada linha de código, com bons recursos,
como forms de login e contato, enquetes, facilidades de administração e etc.
Depois crie um portal semelhante usando um CMS como o Joomla.
Encontraremos grandes diferenças de tempo de conclusão, de qualidade, de segurança, etc.

Agora um exmeplo simples: tente extrair um prego de uma madeira rígida com a mão. Se usar um martelo
apropriado conseguirá com mais rapidez e eficiência.

A ferramenta faz a diferença. Mas não basta ter a ferramenta, precisamos conhecê-la bem para que ela nos
ajude.

Algumas boas ferramentas de programação eistem para os principais sistemas operacionais, como é o caso
do Eclipse e do NetBeans.

Como neste curso precisaremos programar, usar a linha de código eu sugiro as minhas ferramentas
preferidas para trabalhar com PHP (o que não significa que são as melhores, você é quem deve eleger as
suas preferidas). Experimente estas, procure por outras e escolha as suas.

- Editor simples e rápido para Linux:

gEdit

bons recursos. Não é completo mas é ágil e ajuda muito. Acompanhas as pricipais distribuições.

- Editor for Windows com suporte a UTF-8


http://www.babelstone.co.uk/Software/BabelPad.html
http://sourceforge.net/projects/emeraldeditor/files/
http://www.pspad.com/en/download.php
http://www.wolosoft.com/en/superedi/download.html
http://www.thefreecountry.com/programming/editors.shtml
http://www.thefreecountry.com/programming/editors.shtml

- IDE com muitos recursos e multiplataforma

NetBeans for PHP (http://www.netbeans.org/downloads/index.html)

Muitos e bons recursos: completa o código, debuga, etc.

- Outra IDE com muitos recursos e multiplataforma

Eclipse PDT (PHP Development Tools) (http://eclipse.org/pdt/)

Também com muitos recursos. Esta compete com os recursos da anterior. Difícil dizer qual é a melhor.
Acredito que a decisão ocorrerá por gostos pessoais.

Página 5/58
Curso de Joomla 1.5 – http://ribafs.org

Obs.: Lembrando que para programar para Joomla 1.5 precisamos de um editor com suporte a UTF-8.
Também vale lembrar que ao criar extensões é bom ter um ambiente de testes para experimentá-las, sob
pena de causar problemas ao site em produção.

Ambiente
Para trabalhar com Joomla precisamos daqueles pré-requisitos citados: Apache, PHP e MySQL além de
mais alguns.

Para quem pretende testar no Windows, Linux e ainda outros sistemas operacionais, uma boa solução é
utilizar o pacote que traz tudo isso e ainda mais algumas coisas, que é o Xampp (http://xampp.sf.net).

Para quem utiliza Linux, recomenda-se instalar através dos pacotes da distribuição ou ainda dos fontes.

Para quem usa Linux Ubuntu ou outro oriundo do Debian aqui encontra um tutorial detalhado de como
proceder:

http://ribafs.org/portal/colaboracoes/1-ribamar-fs/82-instalar-apache-php-mysql-e-postgresql-no-ubuntu

Segue um pequeno tutorial de instalação do Xampp no Windows e no Linux

Instalando o Xampp no Windows

O Xampp é um pacote instalador que traz Apache, PHP, MySQL, phpMyAdmin e vários outros já
preconfigurados, Apache suportando PHP, PHP suportando MySQL e PostgreSQL.

Por conta disso é muito indicado para testes locais e para quem está iniciando no mundo Web.

Existem versões para vários sistemas operacionais, Linux, Windows e outros.

Como praticamente qualquer instalação no Windows é muito simples.

Download
Apenas faça o download aqui:
http://xampp.sf.net

Role a tela e clique em Xampp for Windows ou clique diretamente em:


http://www.apachefriends.org/en/xampp-windows.html

Role novamente a tela e clique em Xampp Lite na seção Downloads ou clique em:
http://www.apachefriends.org/en/xampp-windows.html#646

Então clique em EXE (7-zip) e faça o download do arquivo, que hoje é este:
xampplite-win32-1.6.8.exe

Instalação
Após o download copie para o C:\

Execute o arquivo com um duplo clique e clique em Extract.

Criará a pasta c:\xampplite

Página 6/58
Curso de Joomla 1.5 – http://ribafs.org

Configurações

setup_xampp.bat
Após a instalação abra a pasta c:\xampplite e execute com um duplo clique o arquivo setup_xampp.bat,
somente uma vez.
Dica: sempre que mudar o xampplite para outra pasta ou que mudar de pasta execute este arquivo para que
as configurações sejam atualizadas.

xampp-control.exe
Agora execute o arquivo xampp-control.exe para iniciar os serviços apache e mysql.
Em Modules clique em Svc à esquerda de Apache e em Svc à esquerda de MySQL.

Dica: caso tenha algum firewall ativo faça com que ele permita a execução dos serviços.

Agora clique em start para o Apache e para o MySQL e pode fechar a janelinha do painel. Observe que fica
um botão na barra de tarefas que pode ser aberto a qualquer momento.

Testando
Estamos prontos para trabalhar com PHP e MySQL.
Abra o navegador com o endereço:
http://localhost
e selecione Português (Brasil) como idioma. Essa é a interface web do Xampp.

Instalando o Xampp no Linux

O Xampp também funciona no Linux.


Aqui, diferente do Windows, ele vem pré-configurado para funcionar somente no diretório /opt.

Download

http://xampp.sf.net

Descompactar
Acesse o diretório onde fez o download e execute:
sudo tar zxpvf xampp.xxx.tar.gz -C /opt

Após descompactar será criada a pasta /opt/lampp

Configurações

Para ambientes de teste é incômodo ficar tendo que usar o sudo para alterar as permissões, visto que o
usuário comum não tem permissão para escrever em /opt/lampp/htdocs. Então é confortável alterar o
documentRoot para o diretório do usuário, portanto criaremos o diretório /home/ribafs/htdocs:

mkdir /home/ribafs/htdocs // Troque ribafs pelo seu user

Copiar o htdocs:
sudo cp -ra /opt/lampp/htdocs/* /home/ribafs/htdocs

Alterar as permissões do lang.tmp:


sudo chmod 707 /home/ribafs/htdocs/xampp/lang.tmp

Restartando
sudo /opt/lampp/lampp start

Página 7/58
Curso de Joomla 1.5 – http://ribafs.org

Testando
Abra o navegador em:
http://localhost

Tornando permanente a inicialização do Xampp


sudo gedit /etc/rc.local

Adicione esta linha ao final:


sudo /opt/lampp/lampp start

Projeto
Uma prudente recomendação é a de antes de arregaçar as mangas para a criação do site ou portal, antes
sentarmos e realizar um planejamento do que iremos fazer. Com uma bos descrição, falando dos detalhes.
Devemos iniciar o projeto antes de iniciar qualquer etapa de construção do portal.
No caso de um portal em Joomla é importante enumerar:

– seções
– categorias
– artigos
– menus

Também os itens de menus que corresponderão às seções, categorias ou artigos.


Citar os módulos a serem usados, os componentes, plugins e templates entre outros.

O projeto deve levar em conta a hospedagem onde irá ficar o portal, quais os recursos e flexibidades
existentes e se de fato suporta bem o Joomla na versão atual; o domínio ou subdomínio que irá usar; o
preço final de elaboração do portal (se for ocaso) e as condições de pagamento; assim como o prazo
estimado de conclusão.

Muitos outros cuidados que cada projeto pode exigir e que devemos ficar atentos.

Ao final desse trabalho é muito útil criar uma relação resumida das atividades e criar um diagrama (o
OpenOffice Draw é uma boa alternativa) com as seções, categorias, artigos e menus e outros detalhes para
que isso sirva de bússola durante a criação do portal.

Também vale lembrar que devemos criar ou usar uma logomarca existente e lembrar de encaixar bem no
template.

Para isso uma boa ou várias conversas com o cliente que nos contratou é vital. Coleta de informações,
visitas a sites existentes, documentos escritos, etc.

Lembre: um bom projeto evita retrabalho.

Conteúdo do Site

Ao preparar o conteúdo do site devemos nos preocupar com sua coerência e devemos selecionar
criteriosamente as palavras dos textos dos links.

Página 8/58
Curso de Joomla 1.5 – http://ribafs.org

Instalação
Instalação do Joomla 1.5

A versão que usaremos é a 1.5.8. Lembrando que o Joomla da série 1.5 não é inteiramente compatível com
o da série 1.0.

Instalação Local e no Servidor

Quando houver alguma diferença entre a instalação local e no servidor essa diferença será explicada.
Para a instalação Local no Windows utilizaremos como ambiente o Xampp.

Para a instalação Local no Linux utilizaremos como ambiente os pacotes da distribuição Ubuntu do Linux,
do Apache, PHP, MySQL e phpMyAdmin. Veja detalhes nesse tutorial:

http://www.ribafs.net/joomla/index.php?option=com_content&task=view&id=82&Itemid=85

A instalação no Linux é semelhante à instalação no Windows, o que mudará basicamente serão as


permissões dos diretórios e arquivos.

Instalação de um Servidor em Produção


Lembrando que numa instalação para um servidor em produção a recomendação vai para um servidor
Linux, com a distribuição Ubuntu-server versão 8.10.

Vamos então à instalação do Joomla 1.5.8

Download
Faça o download no formato zip daqui:
http://www.joomla.org/download.html

Observe que existe uma recomendação importante (em vermelho) :


Enter your email address to receive automatic security updates:

Sugerindo que entre seu e-mail na caixa para receber avisos das atualizações de segurança.
Para quem vai trabalhar com Joomla é fortemente recomendado.

Caso não possa fazer o download no formato zip por algum motivo clique no link:
Download other Joomla 1.5.x packages »
http://joomlacode.org/gf/project/joomla/frs/?action=FrsReleaseBrowse&frs_package_id=4136

Aí encontrará os patchs para atualização de versões anteriores.


Caso atualmente esteja na versão 1.5.8 e você tenha a versão 1.5.7 basta que pegue o path, que no caso é
este:
Joomla_1.5.7_to_1.5.8-Stable-Patch_Package.tar.gz

Ao final da tela está a versão full atual em três formatos (lembre que o mais compactado é o tar.bz2).

Manual oficial de instalação em inglês:


http://downloads.joomlacode.org/docmanfileversion/1/7/4/17471/1.5_Installation_Manual_version_0.5.pdf
Guia Rápido também em ingês: http://help.joomla.org/ghop/feb2008/task048/joomla_15_quickstart.pdf

Caso use um servidor de hospedagem evite usar o Fastastico, pois não traz as últimas versões.

Na instalação do Joomla verifique se seu sistema atende a todos os requisitos vitais.


Mesmo os opcionais são importantes e a sua falta pode prejudicar a funcionalidade ou segurança.

Página 9/58
Curso de Joomla 1.5 – http://ribafs.org

Instalação

1) Crie um diretório (dentro do htdocs) para abrigar o joomla: joomla, portal, meuportal, ou o que achar
melhor. Vou usar apenas “joomla”.
2) Apenas descompacte no documentRoot do Apache, que no caso do Xampp é o htdocs, no caso: .../
htdocs/joomla
3) Chame no navegador http://localhost/joomla
4) Lembre que para uma instalação local, instalação de testes, geralmente usamos o superusuário do
MySQL para a instalação. Nestes casos não precisamos criar antes o banco de dados, pois ele tem
privilégios para criar e o Joomla usará esses privilégios para criar ele próprio o banco. No caso da
instalação em um servidor de hospedagem temos que antes criar o banco, pois o usuário não tem
privilégios de criar banco.
5) Após chamar http://localhost/joomla aparece a primeira tela: Selecione o idioma. Nesta tela o nosso
idioma geralmente já vem selecionado corretamente. Caso contrário selecione o idioma e clique em
Próximo.
6) Tela de checagem de pré-requisitos: Verificação de pré-instalação. Veja melhor os detalhes da tela
a seguir:

Observe que existem dois grupos de informações, um acima e outro abaixo. O primeiro grupo é de
requisitos obrigatórios, que sem eles o Joomla não funcionará corretamente. O grupo inferior é de
configurações recomendadas. Sua ausência poderá fazer falta, acarretando comportamento inesperado.

No primeiro grupo aparece um alerta em vermelho sobre as permissões do arquivo


configuration.php, que no caso não é atualmente editável.
Como avisados, podemos continuar a instalação e criar o arquivo manualmente ao final, com as
informações oferecidas.

Obs.: Isso geralmente só ocorre em ambientes Linux, já que em Windows os arquivos permitem escrita por
padrão.

No segundo grupo também aparece um alerta vermelho: A diretiva exibir erros idealmente deve estar
desativada e no meu sistema está ativada. Mas esta pode passar sem grandes prejuízos.
Caso queira desativar edite o php.ini e altere

display_errors = On
Para display_errors = Off

Página 10/58
Curso de Joomla 1.5 – http://ribafs.org

No Ubuntu, quando instalado pelos repositórios o php.ini fica em:


/etc/php5/apache2/php.ini

No Windows, quando instalado pelo Xampplite fica em:


c:\xampplite\apache\bin\php.ini

Após a alteração restarte o Apache.


Agora clicamos em Próximo.

7) Tela da Licença. Fala da licença do Joomla, que no caso é a GNU/GPL em sua versão 2 e traz todo
o texto da licença. Apenas clique em Próximo.

8) Esta é talvez a tela mais importante, aquela que causa mais problemas, especialmente quando
instalando no servidor.

Nome do servidor – Geralmente “localhost”


Nome do usuário – root (local) ou ribafsne_nomeuser (servidor com cpanel)
Senha - ********
Nome do banco (indique um a gosto) – joomla (local) ou ribafsne_nomebanco

Estes dados surgem quando criamos o banco e usuário no servidor.

Página 11/58
Curso de Joomla 1.5 – http://ribafs.org

Configurações Avançadas
Somente devem ser usadas quando em uma reinstalação do Joomla ou quando instalando em um webhost
que só te oferece um banco ou poucos e você precisa fazer várias instalações em apenas um banco.
Nestes casos você os diferencia com prefixos para as tabelas. Exemplos de prefixos:
portal1_
portal2_

Alerta: Nunca use o prefixo “bak_”, pois o mesmo é utilizado internamente pelo Joomla. Sempre utilize o
sublinhado logo após o prefixo. O default é “jos_”.

Então clique em Próximo.


8) Configuração do FTP – Nesta tela apenas clique em Próximo, já que não enviaremos por FTP.
9) Na tela Configuração Principal entre com o Nome do site, e-mail e senha do administrador
e clique em Próximo. Veja que existe a opção de instalar conteúdo de exemplo. Não utilizaremos
desta vez. Clique em Próximo. Confirme a instalação sem Conteúdo.
10) Agora devemos clicar na textarea abaixo com o conteúdo do script de configuração para selecioná-
lo.

Após ter selecionado...


Tecle Ctrl+C para copiar. Renomeie o arquivo existente “configuration.php-dist” para “configuration.php”.
Abrir este arquivo, remover todo o seu conteúdo e colar o conteúdo da texarea nele. Relembrando: isso só é
necessário no Linux. Então remova o diretório “installation”.
11) Então clique em site. Verá algo como isto:

Página 12/58
Curso de Joomla 1.5 – http://ribafs.org

Ou seja, praticamente limpa. Isso é bom para reforçar a forma como o Joomla trabalha, como também
economizaremos trabalho. Caso instalemos conteúdo de exemplo deveremos removê-lo depois e isso dará
trabalho.
Toda a estrutura do site está aí, o que está faltando é conteúdo. Quando adicionarmos conteúdo e os links
para os mesmos ele será exibido e encherá o site. O template funciona como uma moldura vazia que será
preenchida pelo conteúdo. Observe que tudo gira em torno da index.php do template.

Vamos a ele. Instalamos o Joomla, agora vamos configurá-lo e então adicionar conteúdo.

Página 13/58
Curso de Joomla 1.5 – http://ribafs.org

2. Criação de Conteúdo
Criando seções
Criando categorias
Criando artigos

Seções – fazem parte da estrutura de organização de conteúdo do Joomla. Quando


temos uma hierarquia entre os artigos do site, no caso de serem divididos por tópicos e
sub-tópicos, idealmente devemos criar seções e categorias para que o site fique bem
orgnizado.

Por padrão as seções não tem suas descrições exibidas. Para exibir devemos abrir o item
de menu relacionado e alterar a própriedade respectiva.
Logo ao entrar na seção de administração encontramos um botão para criar uma nova
seção. Também podemos acessar pelo menu Conteúdo – Administrar Seção.

Após clicar vemos a janela com as seções existentes e botões para gerenciar. Ao clicar no
botão Novo aaprece a janela do editor para entrar com os dados da seção, como abaixo:

Devemos entrar o título da seção (o apelido é opcional, assim como a imagem). E clicar no botão Salvar.

Página 14/58
Curso de Joomla 1.5 – http://ribafs.org

Categorias – elas são complementares das seções para a organização do conteúdo. Um exemplo: temos
um site onde iremos receber colaborações de autores, onde cada autor escreverá seus artigos. Uma boa
forma de ter isso bem organizado é assim:

seção – artigos
categorias – autor1, autor2, autor3, etc.
Quanto aos artigos, quando forem criados serão colocados sempre na seção artigos e na categoria do
respectivo autor.

Existem planos para que as categorias tenham níveis infinitos.

Para criar uma nova categoria clicar no botão ou no menu Conteúdo:

E apenas entre com o nome da categoria (Título) e escolha sua seção. Não podemos
criar categoria sem seção.

Artigos – Estes de fato são o conteúdo do site, contendo texto, imagens, áudio, vídeo, etc. Geralmente
entramos o conteúdo através do amigável editor, que tanto pode ser pelo site (frontend) quando pela
administração (backend).

Veja que temos dois botões para Artigos: um para um Novo e o outro para gerenciar, como também pelo
menu Conteúdo.

Ao clicar no botão aparece o form para criação do artigo:

Logo abaixo aparecem botões bem úteis:

Página 15/58
Curso de Joomla 1.5 – http://ribafs.org

Quebra de Página
Um bom recurso para artigos é a Quebra de páginas. O Joomla cria um índice com os nomes dados às
páginas quebradas.

Para Inserir Quebras de Página em artigos:


Clicar no texto, onde deseja a quebra
Clicar no botão Quebra de Página1

Página inicial – Este é um item importante do site, pois com ele podemos dizer que um artigo será
automaticamente aberto sempre na página inicial.

Organizando o conteúdo

O Conteúdo no Joomla é organizado em seções, categorias e artigos.


Existe uma hierarquia:

seções – compostas de categorias


categorias – compostas de artigos (não pode existir cageroria sem seção)

- Artigo1
- Artigo2
Menu1 – Seção1 - Categoria1 - Artigo3
- Categoria2
- Categoria 3

Categorias não podem existir sem uma seção, mas artigos podem existir sem uma categoria nem uma
seção (Não categorizado, somente no Joomla 1.5).

Criar Novo Artigo

– Título
– Apelido (opcional, herdado do 1.0)
– Seção
– Categoria
– Publicado
– Página inicial

Inserindo Imagem no Artigo

Quando a imagem já se encontra no servidor


– Clicar no botão Imagem abaixo
– Selecionar a imagem
– Clicar no botão Inserir acima

Estas imagens acima devem ser inseridas através do midia manager ou de outra forma, como FTP
NinjaXplorer, cPanel, etc.

Quando a imagem está em nossa máquina local


– Clicar no botão Imagem (abaixo)
– Clicar em Arquivo e selecionar a imgem
– Clicar em Iniciar Envio para fazer o upload
– Após finalizar clique na imagem e então
– Clicar no botão inserir acima

A imagem estando posicionada no editor podemos arrastar e redimensioná-la.

Página 16/58
Curso de Joomla 1.5 – http://ribafs.org

Artigo Default

No Joomla 1.5 podemos escolher qual será o artigo default:

– Menus – Main Menu *


– Selecionar o item e Padrão

Vídeo ensinando a Criar um Artigo no Joomla 1.5:


http://joomlaforbeginners.com/joomla-1.5-video-tutorials/creating-an-article-in-joomla-1.5.html

Créditos dos Artigos

Menu Conteúdo – Administrar Artigos


Botão Preferências
Então exibe-se/oculta-se o que bem entender.

Menus
Cada menu é exibido por um módulo.

Main Menu * - Novo


Entre as várias opções temos:

– Link Interno – Artigos (Artigo, Categoria, Página Inicial e Seção)


– Contatos
– Categoria
– Contato
– Wrapper
– Link Externo
– Separador
– Apelido de Menu

Primeiro criamos o conteúdo e finalmente criamos o link (item de menu).

Criar na ordem:
– seções
– categorias
– artigos
– itens de menu (Itens de menu podem ser linkados para uma seção, categoria, artigo ou ainda várias
outras opções).

Evite alterar o estilo do texto manualmente. Deixe isso por conta do CSS do template.

O title e o alias de um artigo não obrigatoriamente são iguais, podem ser diferentes. O alias no Joomla 1.5 é
opcional, ficando sem os acentos e os espaços e tudo em minúsculas.

Alerta
Ao escrever um artigo, crie offline num editor HTML, como o kompozer (http://kompozer.net) e só quando
finalizar abra o Joomla e cole o conteúdo. Acontece muito de o timeout expirar ou haver uma queda de
energia ou outro problema e perdermos tudo que digitamos. Podemos aumentar o timeout mas em termos
de segurança não é recomendado.

Página 17/58
Curso de Joomla 1.5 – http://ribafs.org

Editores

Selecionando editor para usuário

Para selecionar um específico editor para um usuário:


Administrar Usuário – Selecionar usuário – Parâmetro – Editor de usuário

Tratamento de Imagens
Antes de inserir imagens no editor, edite a imagem e deixe com um tamanho razoável para que não seja
rejeitado pelo editor ou caso esteja usando galerias de imagens. Podemos usar qualquer editor de imagns
para o tratamento mas o Gimp, um software livre oferece muitos recursos.

Propriedades da Imagem

– Estando no editor
– clique na imagem para selecioná-la
– clique em Inserir/Editar

Configurando de acordo com o template:

Extensões – Administrar Módulo – User menu


Parâmetros avançados – Sufixo de classe do módulo usar _menu.

Mensagens Privadas no Backend


Quando algum autor ou qualquer outro que escreva artigo tenha escrito um artigo usando o frontend o
backend exibe uma mensagem acusando o novo artigo. Logo que um usuário acessa o backend ele pode
perceber o aviso acima e à direita, com o número de mensagens. Então clicamos na mensagem para saber
detalhe e publicar o artigo ou eliminar, se for o caso.

Podemos configurar o gerenciador de mensagens para nos enviar essas mensagens por e-mail:

Ferramentas – Ler mensgens – Configurações


Marcar "Avisar por e-mail quando chegar nova mensagem:".

Editando módulos
Os módulos são extensões do Joomla destinados a exibir conteúdo em uma área do Joomla nas
margens da página. Sua posição é determinada pelo template. Módulos complementam o conteúdo
contido em um componente. Não são destinados a ser a parte principal de uma página.

Ao contrário dos componentes, qualquer número de módulos pode aparecer em uma página. O
controle do módulo no backand é bem restrito, geralmente voltado para a formatação do conteúdo.
São as extensões mais simples, por isso começaremos com eles.

Exemplos de módulos: form de login, popular, latest news, etc.

Mais detalhes na documentação oficial em: http://docs.joomla.org/Developers


Através do menu Extensões – Administrar Módulo

Página 18/58
Curso de Joomla 1.5 – http://ribafs.org

Aqui podemos publicar (permitir exibir no site) e despublicar apenas com um clique no tick verde ou no
círculo vermelho na respectiva linha do nome do módulo. Acima vemos 3 módulos despublicados (círculo
vermelho) e os demais estão publicados (tick verde).

Também podemos alterar a ordem em que eles aparecem e temos muitas outras informações aqui.
Vale lembrar que quando temos mais de 20 módulos eles ficam em páginas separadas. Podemos alterar
este número escolhendo a opção na caixa exibir.

Página 19/58
Curso de Joomla 1.5 – http://ribafs.org

Para alterar as propriedades de um módulo basta clicar em seu link.


Vamos exibir as propriedades do Form de Login:

Temos aí muitas opções para personalizar seu aparecimento.


– Posição (podemos escolher uma das existentes)
– Nível de acesso – aqui dizemos quem poderá acessar este form. Temos três níveis de acesso:
público – todos os visitantes (inclusive não logados) podem acessar
registrado – para acessar o visitante precisa efetuar seu registro no site
especial – somente os usuários registrados e com privilégios especiais poderão acessar (detalhes logo a
seguir)

Atribuir Menu – Podemos selecionar em quais seções este form irá aparecer: em uma, várias ou todas.
Para selecionar uma basta clicar.
Para selecionar algumas, clique na primeira, prenda a tecla Ctrl e clique nas demais.
Temos botões para todas, nenhuma e Selecione. Para algumas clique em Selecione.

Temos várias outras propriedades. Algumas, como os metadados veremos mais a frente.

Acompanham uma instalação padrão do Joomla, versão 1.5.14, 25 módulos, entre eles:
– Newsflash (que exibe uma notícia a cada visita ou refresh)
– Latest News (mostra as últimas notícias)
– Popular (mostra as notícias mais visitadas)
– Top menu (exibe o menu do topo)
– Search (exibe o componente de busca do site)
– Breadcrumbs (mostra o caminho completo da seção onde o usuário está)

Página 20/58
Curso de Joomla 1.5 – http://ribafs.org

– Banner (exibe banners)


– Footer (mostra as informações dos direitos autorais do Joomla no rodapé do site)
– Main Menu (mostra o menu principal)
– User menu, Resources, Key concepts (mostra os respectivos menus)
– Statistics (O módulo de estatísticas exibe as informações sobre seu servidor,
sobre seus usuários,
número de registros no seu banco de dados e número de links que você possui.)
– Sindication (Este mostra um link para que visitantes copiem e colem em seu leitor de RSS e assim
receba as novidades do nosso site)
– Pools (Exibe enquetes)
– Who's online (mostra quantos usuários estão online no momento)
– Random image (Este módulo exibe uma imagem randomicamente a partir de um diretório escolhido)
– Feed Display (Este exibe notícias recebidas do RSS de um outro site na página)
– E outros.

Criar Dois Módulos Úteis usando os novos módulos internos do Joomla 1.5

Este dois módulos foram uma idéia útil passada em uma dica do colega Pedro Pisandelli na lista
joomlaceara (http://groups.google.com.br/group/joomlaceara).

Módulo com o Projeto

Criaremos um módulo para a administração que conterá o projeto do site. Este módulo exibirá o projeto para
que possamos acompanhá-lo até sua conclusão.

Este módulo é um módulo do tipo HTML Personalizado:

Menu Extensões – Administrar Módulos – Administrador – Novo – HTML Personalizado


Título – Projeto

Colar o conteúdo do projeto no editor (abaixo).

Posição – cpanel

E Salvar

Módulo com Link para o Painel de Controle

Este é outro pequeno módulo para a área administrativa e conterá apenas um link para o Painel de Controle
na região do menu.
Como o painel de controle não está disponível com um único link, criei mais para me acostumar com a
criação de módulos administrativos e também é de alguma utilidade.

Menu Extensões – Administrar Módulos – Administrador – Novo – HTML Personalizado


Título – CPanel

Conteúdo (abaixo no editor) – digite CPanel , selecione CPanel e clique nas argolas para inserir um link
para o arquivo “index.php”.
Posição – menu

Componentes Padrões
Componentes são mini-aplicativos que rodam dentro do portal Joomla. Geralmente eles têm uma
área sofisticada na seção de administração para manipulação do banco de dados.
Um componente pode trazer para o site em Joomla qualquer funcionalidade criada em PHP.

Página 21/58
Curso de Joomla 1.5 – http://ribafs.org

Componentes geralmente são grandes extensões. Eles ocupam a principal área do conteúdo da
página. Quando criamos artigos usamos o componente principal para exibi-los.

Exemplos de componentes: NinjaXplorer, Banner, Contatos, Enquete, etc.

Mais detalhes na documentação oficial em: http://docs.joomla.org/Developers

Em uma instalação padrão do Joomla, com conteúdo, temos seis componentes mais o responsável pela
página inicial:

– Banner
– Contatos
– Fonte de notícias
– Enquete
– Pesquisa
– WebLinks

Todos os componentes do Joomla encontram-se no menu Componentes na administração.

Existe grande integração entre componentes e módulos. Estes últimos são muito utilizados para exibir
conteúdo recebido e processado por um componente.

Um detalhe interessante é que os componentes contam com muitos recursos na administração, enquanto
que os módulos apenas podem mudar o título, a posição ou entrar com um parâmetro (nem todos).

Veja por exemplo, as diferenças entre o componente Enquete e o Módulo correspondente Pools. Com o
componente listamos, criamos, editamos e excluimos as enquetes, enquanto que o módulo destina-se
apenas a exibir.

Página 22/58
Curso de Joomla 1.5 – http://ribafs.org

3. Configurando o site
Banco de Dados

No menu Site – Configuração Global – Aba Servidor:

Aí encontramos as configurações do Servidor:

– Configurações do Servidor (caminho do portal e outras)


– Fuso horário
– Configurações do FTP
– Configurações de E-mail
– Configurações do Banco de Dados

Os dados do banco de dados e vários outros não devem ser alterados, somente em caso de transferência
da hospedagem do portal.

Na Aba Sistema

Comentando alguns itens:

Configurações do Usuário
– Permitir Cadstro de Usuário (padrão Sim)
– Tipo de Cadastro de Novo Usuário (padrão Registrado, mas podemos escolher um dos outros)
– Ativação de cadstro de novo usuário (padrão Sim)

Configurações de Mídia
Permite filtrar pelo tipo de arquivo, tamanho, etc.

Configuração da Sessão
Aqui podemos controlar o tempo em minutos do timeout (padrão 15), tempo em que a sessão expira se não
estivermos usando a sessão de administração (ocioso). Somente aumente se bastante necessário, pois
compromete a segurança. Melhor é criar o conteúdo offline, fazer login e colar.

Meta dados

Na Aba Site

- Nesta aba da Configuração Global do Site podemos configurar o site para ficar offline, quando estivermos
efetuando manutenção que o exija.
- Alterar o nome do site.
- Alterar o editor padrão (com ou sem).
- Tamanho das listas (padrão 20)
- Metadados
Entrar com a descrição do site e com as palavras-chaves do mesmo.
É importante em termos de visibilidade para os instrumentos de busca, entrar aqui com uma descrição bem
representativa do site, assim como também as palavras-chave devem ser escolhidas com bastante critério.

Página 23/58
Curso de Joomla 1.5 – http://ribafs.org

Estatísticas/SEO

Ainda na Aba Site temos as configurações de SEO.

Aqui é importante ativar os dois primeiros itens:

– URLs Amigáveis
– Usar mod_rewrite do Apache

Após ativar ambos como Sim, vá até o raiz do portal e renomeie o arquivo existente htaccess.txt para
.htaccess (com um ponto no início).

Este recurso permite que o Joomla use URLs assim. Veja a mesma URL antes e depois:

http://postgresql.ribafs.org/index.php?option=com_content&view=article&id=2&Itemid=2
http://postgresql.ribafs.org/introducao

Problema
Caso após ativar este recurso e tentar acessar seu site receber um erro do tipo 500...
Geralmente isso significa que seu servidor está sem suporte ao mod_rewrite no Apache.
Seria o caso de contactar o suporte para ativa o mod_rewrite ou encontrar uma forma de fazer isso
adicionando um .htaccess (se o servidor suportar).
Dica extra: usando URLs amigáveis ao criar uma seção de nome "downloads" teremos a URL:
http://site.com/downloads. Então neste caso não poderemos criar um diretório no raiz do site com nome
"downloads", como também se tiver o diretório "downloads" não poderemos criar uma seção ou outro
recurso com nome "downloads". Aí renomeia-se um dos dois. Prefiro renomear o diretório.

SEO – Search Engine Optimization

Alguns cuidados para melhorar o SEO:

– Deve ser uma das primeiras medidas após a instalação.


– Evitar o uso de JavaScript, que atrapalham os instrumentos de busca.
– Evitar criação de layouts com tabelas, ao invés usar CSS.
– Usar poucas palavras-chaves nos metatags (apenas de 3 a 5)
– Usar palavras-chaves na tag title
– Instalar um bom mapa do site
– Comentários
– Os títulos dos artigos com links para si próprios
– Nome e link do site no rodapé dos artigos
– Idade do site. Ao contratar o domínio e a hospedagem faça por vários anos (isso em serviços de
confiança). Aumenta a confiança no seu site.
– Use palavras-chave no corpo do texto
– Tamanhos de arquivos e imagens devem ser otimizados
– Usar URLs limpas (URL rewrite)

Desempenho do Site

Fatores que atrapalham:


– Estatísticas e enquetes
– Instalação de muitas extensões adicionais
– Artigos muito grandes e com muitas imagens

Página 24/58
Curso de Joomla 1.5 – http://ribafs.org

Fatores que melhoras:


– Ativar o cache (Site – Configuração Global – Sistema – Configurações do Cache – Sim)
Em alguns casos as alterações somente surtirão efeito após o timeout do cache.

Otimizando Metadados para buscadores

Essa coisa é um pouco complicada e pode mudar derepente...principalmente no Google. Meu sítio era o 4°
na busca por certa palavra...depois desapareceu do mecanismo e voltou a reaparecer em 16°.

Apenas para exemplificar vou falar sobre o principal sítio de busca o Google.
O Google usa um mecanismo matemático para classificar o sítio no resultados das buscas. esta fórmula é
mantida em segredo e ajustada conforme o interesse deles em fornecer dados confiaveis.

Entre os fatores que influenciam no Google esta:


-Presença de sua palavra chave no Título do site.
-Presença da palavra chave no texto do sítio em negrito, H1, H2 e H3 (mas exagero será punido com
expulsão do site) além da palavra chave nos links.
-Densidade da palavra chave em relação ao texto (se a palavra chave aparecer mais de 20% no texto seu
sítio será considerado um trapaceador e sua classificação cai muito) 5% é considerado por muitos
especialistas como bom.
-Quantidade de sítios que tem link para o seu site, e qualidade destes sítios em relação a mesma palavra
chave.(esta é considerada por muitos como a melhor forma de ser #1)
-Palavra chave nas meta-tags.Faça uma lista de palavras que descrevem seu assunto e coloque elas na
meta-tag keywords e sem repetir mais de 3 vezes a mesma palavra, palavras em plural e singular são
consideradas iguais em muitos sítios de busca)

Como pode ver são muitos fatores...mas basicamente uma boa dica é ter muiiitas páginas no seu sítio com
conteudo util. (Um sítio com 200 paginas de artigos sobre um certo assunto tem futuro garantido no
Google). Cada página linkando a uma outra página do sítio e no link o texto deve ser a palavra chave.

Outra coisa de futuro garantido: trocar links com sítios de mesmo tema, mas não concorrentes. Por
exemplo: eu tenho um sítio de criação de codornas e trroco link com um sítio sobre aves, ou um sobre
rações para aves, ou ainda receitas de cozinha com codorna.

Aqueles sistemas de FFA ou lista de links nos quais você poe seu link de forma aleatória só irão derrubar
sua posição no Google.
O sítio com o qual você troca links é importante também. Faça o Download daquela barra de navegador do
Google, ele mostra o PageRank(um numero de 0 a 10 que classifica o quanto o sítio é importante.) e tente
trocar links com sítios que tenham um PageRank maior que o seu.

Poxa são muitas técnicas para melhorar sua posição no Google, tantas que tem até livros sobre isso e
dezenas de especialistas que cobram U$500 só para te ajudar a melhorar sua posição.

O altavista segue esquema semelhante, já o Cade e Yahoo são na verdade diretórios e não sistemas de
busca, eles classificam os sítios por ordem alfabética (mas se você pagar o seu sítio pode burlar a ordem) e
caso não tenham resultados para a pesquisa eles usam os resultados do Google.

Mas basicamente faça o seguinte tenha um sítio com conteúdo util, muito conteúdo util fará as pessoas
linkarem com seu site.
E uma coisa puxa a outra.

Mais algumas informações sobre o Google e o PageRank

-O mais importante para o Goggle e outros sítios de busca é a meta-tag robots, ela deve estar com um
index, follow para permitir o mecanismo visitar por conta própria o site.

Para quem gosta de matemática (uhuuuuuuuuu! ) aqui vai alguns link muiiiiito interessantes:
http://iprcom.com/papers/pagerank/

Página 25/58
Curso de Joomla 1.5 – http://ribafs.org

http://webworkshop.net/pagerank.html

Existem varias teses para download pela internet da universidade de Stanford sobre o Google.

E vamos em frente.
http://xoopscube.com.br/modules/d3forum/index.php?topic_id=974

Não concordo com o uso de metatags.


A semântica do código serve pra isso. Com um (X)HTML semânticamente correto, você não precisa de
meta keywords. Isso é passado. Vai por mim.
Willpower - http://www.htmlstaff.org/forum/index.php?showtopic=15019

Desbloqueio Global – Quando por algum motivo bloqueamos um conteúdo do Joomla podemos usar o
Desbloqueio Global. Acessar como super-administrador e ir no menu Ferramentas – Desbloqueio Global.

Conteúdo(visualizações de ícones e listagens)

No menu Conteúdo – Administrar Artigos – Preferências

Aqui existe uma boa quantidade de parâmetros para configurar a exibição dos artigos. Veja alguns:

– Títulos como Link


– Nomes dos autores
– Data de criação do artigo
– Link Leia mais...
– Avaliação/votação de artigo
– Ícones PDF, Impressão, E-mail
– Opção de filtragem
– Lista negra, lista branca, sem HTML
– Filtro de tags
– E outros

Detalhes sobre filtragem:


http://www.gestaotec.com.br/manual-do-joomla/72-administrar-artigos.html
http://www.compassdesigns.net/joomla-blog/HTML-Filtering-Options-in-Global-Article-Parameters.html

Página 26/58
Curso de Joomla 1.5 – http://ribafs.org

4. Componentes
O que são?
Componentes são mini-aplicativos que rodam dentro do portal Joomla. Geralmente eles têm uma área
sofisticada na seção de administração para manipulação do banco de dados.
Um componente pode trazer para o site em Joomla qualquer funcionalidade criada em PHP.

Componentes geralmente são grandes extensões. Eles ocupam a principal área do conteúdo da página.
Quando criamos artigos usamos o componente principal para exibi-los.

Exemplos de componentes: Banner, Contatos, Enquete, NinjaXplorer, etc.

Mais detalhes na documentação oficial em: http://docs.joomla.org/Developers

Usando os componentes padrões

Vamos adicionar um novo Contato com o componente contatos.


Primeiro adicionamos uma categoria de contatos mais adequada:
Componentes – Contatos – Categorias

Clique no botão novo para mostrar o form de criação da categoria.


Apenas entre com o título "Pessoais" e clique em Salvar.

Agora vamos adicionar um contato para essa categoria.


Componentes – Contatos – Contatos

Página 27/58
Curso de Joomla 1.5 – http://ribafs.org

Então clique no botão Novo

Os campos preenchidos aparecerão de acordo com as opções da direita marcadas para exibir.

Após salvar o componente então precisamos criar um item de menu para exibir o componente criado.

Vamos criar um item de menu no Main menu, no Top menu ou em outro que desejarmos.

Main Menu – Novo


Contatos – Contato – Layout de contato padrão
Entre com o Título e à direita selecione o contato que receberá os e-mails então clique em Salvar
Sempre ao criar um item de menu existem diversos parâmetros que algumas vezes são desejáveis.

Página 28/58
Curso de Joomla 1.5 – http://ribafs.org

Agora quando o vistante clicar no botão contato no menu, aparecerá este formulário:

Isso facilita muito que os visitantes nos contatem.

Página 29/58
Curso de Joomla 1.5 – http://ribafs.org

Instalação de componente

As extensões do Joomla (modules, components, languages, plugins e templates) todas são instaladas da
mesma forma. Devem ser arquivos compactados que são instalados clicando no menu Extensões – Instalar/
Desinstalar.

Clicamos no botão arquivo para instalar um componente do qual já efetuamos download e está na nossa
máquina.

Podemos instalar um componente também diretamente de uma URL para o nosso site em Joomla.

Existem alguns cuidados e alertas para se instalar extensões:


– Caso eseja instalando em máquina local com Windows geralmente não terá problemas de permissão
– Se estiver instalando em máquina local com Linux geralmente deverá dar permissão no diretório
components do portal e ainda no administrator/components, como também no tmp do portal.
– E assim para outros tipos de extensão.
– Algumas extensões tem algum problema: falta o XML, falta algum arquivo mencionado no XML. Neste
caso se não for um arquivo vital, basta remover a citação do XML.

Componentes, como são extensões que são administradas na administração, logo que são instaladas já
estão funcionando, diferente de módulos e plugins que requerem habilitação.

Todos os componentes após a instalação inserem uma entrada no menu Componentes. Raramente um
componente não o faz. Isso pode acontecer quando ele é manipulado por um plugin, apenas servindo de
apoio ao mesmo, por exemplo criando e removendo tabelas do banco de dados.

Página 30/58
Curso de Joomla 1.5 – http://ribafs.org

Criação de componentes

• Estrutura de diretórios

Componentes ao serem instalados copiam seus arquivos para a pasta components e caso tenham área
administrativa copiam para administrator/components.

Vamos agora criar um componente o mais simples possível, apenas para mostrar como funciona um
componente. Chamaremos este componente de com_ola e será criado dentro da estrutura do nosso portal
sem instalador. Esta primeira parte será o componente que será mostrado no site. Depois criaremos a parte
do nosso componente que ficará na administração.

Supondo que instalamos o Joomla no diretório portal.

Estrutura: um diretório (com_ola) e um arquivo (ola.php).

portal/com_ola
ola.php

Criar o diretório portal/com_ola e dentro deste criar o script ola.php com o conteúdo:

<?php
defined( ' JEXEC' ) or die( 'Restricted Access' );
print '<div class="componentheading">Olá Mundo!</div>';
?>

Já podemos executar nosso componente e visualizar a mensagem. Para isso chame no navegador:

http://localhost/portal/index.php?option=com_ola

Veja que a mensagem está com a formatação do template. Isso porque usamos a classe
componentheading.

Agora vamos criar a parte administrativa do nosso componente.


Criar o arquivos admin.ola.php no diretório:

portal/administrator/components/com_ola

Com o seguinte conteúdo:

<?php
defined( ' JEXEC' ) or die( 'Restricted Access' );
print 'Olá Mundo Admin!';
?>

Veja que o arquivo do admin ficou com prefixo admin.. Isso é uma boa convenção.

Para executar, faça o login na seção de administração e chame pelo navegador assim:

http://localhost/portal/administrator/index.php?option=com_ola

Página 31/58
Curso de Joomla 1.5 – http://ribafs.org

• XML de instalação

Mesmo este nosso pequeno componente, para redistribuir e permitir instalação mais simples, precisamos
adicionar um XML com uma estrutura que segue o padrão do Joomla e empacotar os arquivos.

Vamos criar um arquivo XML para nosso componente. No caso precisará de dois XML, um para a parte do
site e outro para a parte do admin e também precisaremos alterar um pouco a estrutura de diretórios.

com_ola
admin/index.html
admin/admin.ola.php

ola.xml
ola.php
index.html

Devemos ter apenas um script XML no componente, contendo as informações necessárias para que o
Joomla faça a instalação e desinstalação do componente.

O script ola.xml ficará assim:

<install type="component" version="1.5">


<name>ola</name>
<author>Ribamar FS</author>
<creationDate>Agosto 2009</creationDate>
<copyleft>(C) 2009</copyleft>
<license>GPL2</license>
<authorEmail>ribafs@gmail.com</authorEmail>
<authorUrl>http://ribafs.org</authorUrl>
<version>1.0</version>

<description>
Um componente inicial apenas para mostrar a lógica dos componentes. Parte Admin.
</description>

<files>
<filename>ola.php</filename>
<filename>index.html</filename>
</files>

<administration>
<files folder="admin">
<filename>admin.ola.php</filename>
<filename>index.html</filename>
</files>
</administration>
</install>

Cuidado com a tag name, evite acentos e espaços. Entre o nome do componente, que deve ser único para
identificar o componente com exclusividade.

Veja que devemos relacionar todos os arquivos que queremos que o Joomla instale.

Uma boa prática é inserir em todos os diretórios da extensão um arquivo index.html para evitar a listagem
do diretório, contendo apenas a linha:

<html><body bgcolor="#FFFFFF"></body></html>

Página 32/58
Curso de Joomla 1.5 – http://ribafs.org

Este arquivo também precisa aparecer no XML.

Agora podemos compactar todo o diretório ola_com para poder distribuir.


Claro que não iremos distribuir esse componente, a não ser para efeitos de aprendizado.

Após a instalação não encontraremos nenhuma entrada no menu Componentes para nosso com_ola.
Como não criamos nenhum item de menu para os Componentes não aparece.

Para que apareça no menu Componentes adicione essas linhas, para que a tag <administration> fique
assim:

<administration>
<menu>Olá Mundo</menu>
<files folder="admin">
<filename>admin.ola.php</filename>
<filename>index.html</filename>
</files>
</administration>

Agora compacte novamente, desinstale o existente e instale essa versão para ver a entrada no menu
Componentes do nosso componente com_ola.

Compactação
A compactação pode usar um dos seguintes formatos:
zip, tar, gz, tgz, gzip, bz2, tbz2 ou bzip2.

Primeiro a ser executado


O script ola.php será o primeiro a ser executado quando o componente for chamado.

No CD que acompanha o curso encontrará alguns exemplos testados simples e outros mais complexos para
mostrarem melhor como funcionam os componentes.

Componente Simples (GuestBook)

Este pequeno componente exibe um pequeno form com dois campos no site (Livro de visitas) e também
mostra um botão na administração para edição das entradas do livro de visitas. As entradas são
armazenadas em uma tabela a ser criada que será instalada quando da instalação do componente e
desinstalada quando da desinstalação do mesmo.
Observe que na instalação serão criadas as pastas com_guestbook na pasta components e outra pasta com
o mesmo nome na pasta administrator/components. Para esta última será copiado o arquivo
admin.guestbook.php, o guestbook.xml , juntamente com os scripts SQL. Para a pasta
components/com_guestbook será copiado o arquivo guestbook.php . O arquivo guestbook.xml é utilizado
para a instalação e desinstalação do componente, juntamente com a tabela.

Estrutura de Arquivos e Diretórios

com_guestbook/admin.guestbook.php
com_guestbook/guestbook.php
com_guestbook/guestbook.xml
com_guestbook/install.sql
com_guestbook/uninstall.sql

Suponhamos que instalamos o Joomla na pasta "portal", então vamos criar uma pasta chamada
"com_guestbook" dentro da pasta portal/components, ficando assim:

Página 33/58
Curso de Joomla 1.5 – http://ribafs.org

portal/components/com_guestbook

Dentro desta pasta com_guestbook criaremos os arquivos do nosso componente:

admin.guestbook.php
guestbook.php
guestbook.xml
install.sql
uninstall.sql
Agora vejamos detalhes sobre a criação de cada um destes arquivos. Abra seu editor favorito e crie os
mesmos.

install.sql

CREATE TABLE IF NOT EXISTS `#__guestbook`


(`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`message` text NOT NULL, `created_by` INTEGER UNSIGNED NOT NULL,
`location` VARCHAR(45), `created` TIMESTAMP NOT NULL,
`userip` VARCHAR(16), PRIMARY KEY(`id`)
);

Um simples script SQL para criação de uma tabela para o guestbook. Apenas vale ressantar o prefixo do
nome da tabela "#__". Este é recomendado ao invés do um prefixo fixo da tabela e será substituído pelo
prefixo entrado de forma dinâmica.

uninstall.sql

DROP TABLE IF EXISTS `#__guestbook` ;

guestbook.xml

<?xml version="1.0" encoding="utf-8"?>


<install version="1.5.0" type="component">
<name>Guestbook</name>
<author>Dan Rahmel. Adaptação de Ribamar FS</author>
<version>1.0.0</version>
<description>Apresenta um pequeno form para livro de visitas e lista todas as entradas
existentes.</description>
<files>
<filename component="com_guestbook">guestbook.php</filename>
</files>
<install>
<sql>
<file driver="mysql" charset="utf8">install.sql</file>
</sql>
</install>

<uninstall>
<sql>
<file driver="mysql" charset="utf8">uninstall.sql</file>
</sql>
</uninstall>
<administration>
<menu>Guestbook</menu>
<files>

Página 34/58
Curso de Joomla 1.5 – http://ribafs.org

<filename component="admin.guestbook">admin.guestbook.php</filename>
<filename>install.sql</filename>
<filename>uninstall.sql</filename>
</files>
</administration>
</install>

guestbook.php
<?php
/**
* @version $Id: guestbook.php 5203 2007-06-15 02:45:14Z DanR $
* @copyright Copyright (C) 2007 Dan Rahmel. All rights reserved.
* @package Guestbook
* This component displays guestbook entries and allows the addition
* of entries from registered users.
*/

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

// Check the task parameter and execute appropriate function


switch( JRequest::getVar( 'task' )) {
case 'add':
addEntry();
break;
default:
displayGuestbook();
break;
}

// Process data received from form.


function addEntry() {
// Get reference to database object
$db =& JFactory::getDBO();
// Get user id for recording with entry.
$user =& JFactory::getUser();
$uid = $user->get('id');

// Get message and location from form posting values


$fldMessage = JRequest::getVar('message') ;
// Strip away anything that could be code, carriage returns, and so on
$fldMessage = preg_replace("/[^a-zA-Z0-9 .?!$()\'\"]/", "", $fldMessage);
// Escape the message so it can be placed in the insert statement
$fldMessage = "'" . $db->getEscaped($fldMessage) . "'";
$fldLocation = "'" . $db->getEscaped(JRequest::getVar( 'location' )) . "'";
// Obtain userIP and store with entry for security reasons
$userIp = "'" . $_SERVER['REMOTE_ADDR'] . "'";

$insertFields = "INSERT INTO #__guestbook " .


"(message, created_by, location, userip) " .
"VALUES (" . $fldMessage . "," . intval($uid) . "," .
$fldLocation . "," . $userIp . ");";
$db->setQuery( $insertFields, 0);
$db->query();
echo "<h1>Thanks for the entry!</h1>";
echo "<a href=index.php?option=com_guestbook>" .
"Return to guestbook</a>";

Página 35/58
Curso de Joomla 1.5 – http://ribafs.org

// Output a list of guestbook entries


function displayGuestbook() {
$db =& JFactory::getDBO();
// Query database and display guestbook entries
$query = "SELECT a.message, u.name" .
" FROM #__guestbook AS a" .
" LEFT JOIN #__users AS u ON u.id=a.created_by" .
" ORDER BY a.created DESC";

$db->setQuery( $query, 0);


// Make sure rows were returned before outputting
if($rows = $db->loadObjectList()) {
foreach ($rows as $row)
{
// Encode text to HTML formatting
$rowMessage = htmlspecialchars($row->message, ENT_QUOTES);
echo "<b>" . $rowMessage . "</b>";
echo " - " . $row->name;
// Put horizontal rules between entries
echo "<hr />";
}
}

// Display guestbook entry form


?>
<h1 class="contentheading">Formulário de Entrada do Guestbook</h1>

<form id="form1" name="form1" method="post"


action="index.php?option=com_guestbook&task=add">
<p>Entre a mensagem aqui:<br />
<textarea name="message" cols="60" rows="4" id="message"></textarea>
</p>
<p>
<label>Localização (opcional) : </label>
<input name="location" type="text" id="location" />
</p>
<p>
<input type="submit" name="Submit" value="Enviar" />
</p>
</form>

<?php } ?>

admin.guestbook.php

<?php
/**
* @version $Id: guestbook.php 5203 2007-06-15 02:45:14Z DanR $
* @copyright Copyright (C) 2007 Dan Rahmel. All rights reserved.
* @package Guestbook
* This component displays guestbook entries and allows the addition
* of entries from registered users.
*/

// no direct access

Página 36/58
Curso de Joomla 1.5 – http://ribafs.org

defined( '_JEXEC' ) or die( 'Restricted access' );

// Check the task parameter and execute appropriate function


switch( JRequest::getVar( 'task' )) {
case 'edit':
editEntry();
break;
case 'update':
updateEntry();
break;
default:
displayEntries();
break;
}

// Record data received from form posting


function updateEntry() {
// Set title in Administrator interface
JToolBarHelper::title( JText::_( 'Atualizar Entrada no Guestbook' ), 'addedit.png' );

// Get reference to database object


$db =& JFactory::getDBO();

// Retrieve data from form


$fldMessage = "'" . $db->getEscaped(JRequest::getVar('message')) . "'";
$fldLocation = "'" . $db->getEscaped(JRequest::getVar( 'location' )) . "'";
$fldID = "'" . $db->getEscaped(JRequest::getVar( 'id' )) . "'";

// Record updates to jos_guestbook table


$insertFields = "UPDATE #__guestbook " .
" SET message=" . $fldMessage . ", " .
" location=" . $fldLocation .
" WHERE id = " . $fldID ;
$db->setQuery( $insertFields, 0);
$db->query();
echo "<h3>Field updated!</h3>";
echo "<a href='index.php?option=com_guestbook'>Return to guestbook list</a>";
}

// Display edit list of all guestbook entries


function displayEntries() {
// Set title in Administrator interface
JToolBarHelper::title( JText::_( 'Entradas do Guestbook' ), 'addedit.png' );

// Query database for guestbook entries


$db =& JFactory::getDBO();
$query = "SELECT a.id, a.message,a.created,a.created_by, u.name" .
" FROM #__guestbook AS a" .
" LEFT JOIN #__users AS u ON u.id=a.created_by" .
" ORDER BY created DESC";
$db->setQuery( $query, 0, 10 );
$rows = $db->loadObjectList();
?>
<table class="adminlist">
<tr>
<td class="title" width=10%>
<strong><?php echo JText::_( 'ID' ); ?></strong>
</td>

Página 37/58
Curso de Joomla 1.5 – http://ribafs.org

<td class="title" width=50%>


<strong><?php echo JText::_( 'Entrada' ); ?></strong>
</td>
<td class="title" width=10%>
<strong><?php echo JText::_( 'Criado' ); ?></strong>
</td>
<td class="title" width=10%>
<strong><?php echo JText::_( 'Criado por' ); ?></strong>
</td>
</tr>

<?php
foreach ($rows as $row) {
$link = 'index.php?option=com_guestbook&task=edit&id='. $row->id;
// Truncate row message for display
$rowMessage = $row->message;
if(strlen($rowMessage) > 100) {
$rowMessage = substr($rowMessage, 0, 100) . "...";
}
echo "<tr>" .
"<td>" . $row->id . "</td>" .
"<td><a href=" . $link . ">" . $rowMessage . "</a></td>" .
"<td>" . $row->created . "</td>" .
"<td>" . $row->name . "</td>" .
"</tr>";
}
echo "</table>";
echo "<h3>Clique em um link de entrada para editar.</h3>";
}

function editEntry() {
JToolBarHelper::title( JText::_( 'Editor de Entradas no Guestbook' ), 'addedit.png' );

$db =& JFactory::getDBO();


$query = "SELECT a.id, a.message,a.created,a.created_by,a.location" .
" FROM #__guestbook AS a" .
" WHERE a.id = " . JRequest::getVar( 'id' );
$db->setQuery( $query, 0, 10 );
If($rows = $db->loadObjectList()) {
?>

<form id="form1" name="form1" method="post" action="index.php?option=com_guestbook&task=update">


<p>Entre a mensagem aqui:<br />
<textarea name="message" cols="60" rows="4" id="message"><?php
echo $rows[0]->message;
?></textarea>
</p>
<p>
<label>Localização (opcional) : </label>
<input name="location" type="text" id="location"
value='<?php echo $rows[0]->location; ?>'
/>
<input name="id" type="hidden" id="id"
value='<?php echo $rows[0]->id; ?>'
/>
</p>
<p>
<input type="submit" name="Submit" value="Gravar Alterações" />

Página 38/58
Curso de Joomla 1.5 – http://ribafs.org

</p>
</form>

<?php } } ?>

Como criamos os arquivos dentro da estrutura do Joomla então ele já deve estar funcionando, a não ser
pelo fato de não termos ainda criado a tabela no banco de dados.
Apenas nos falta criar manualmente a tabela, pois como não instalamos pelo Joomla o componente então
deveremos criar a tabela manualmente.

Redistribuindo Extensões

Para poder redistribuir nossas extensões devemos gerar instaladores das mesmas, criando uma estrutura
de diretórios semelhante à do Joomla, adicionando um XML com as informações necessárias e
compactando tudo. No caso do nosso componente com_guestbook devemos criar um diretório chamado
"com_guestbook" e colocar nele os cinco arquivos, incluindo o instalador (XML) para então compactar.

Outro fator importante em termos de redistribuição é o suporte a diversos idiomas. Veja que o nosso
componente tem strings fixas e não conta com o suporte a vários idiomas. Veremos mais a frente como
implementar esse suporte.

Joomla Component Creator Online


http://www.notwebdesign.com/joomla-component-creator/index.php

Estrutura da URI
http://localhost/portal/index.php?option=com_exemplo

Para chamar o item 1 do menu:


http://localhost/portal/index.php?Itemid=1

Chamando artigos em formatos diferentes:


http://localhost/portal/index.php?option=com_exemplo&format=pdf
http://localhost/portal/index.php?option=com_exemplo&format=feed
http://localhost/portal/index.php?option=com_exemplo&format=print

Executando tarefas
http://localhost/portal/index.php?option=com_exemplo&task=view
http://localhost/portal/index.php?option=com_exemplo&task=new

Alguns dos principais valores de consultas do core:


format
hidemainmenu (backend only)
Itemid
layout
limit
limitstart
no_html
option
start
task
tmpl
tp
vars
view

Página 39/58
Curso de Joomla 1.5 – http://ribafs.org

5. Administração de usuários
Controle de Níveis de Acesso

Grupos de Usuários

– site (frontend)
– público
– autor
– editor
– redator
– administração (backend)
– gerente – não acessa extensões ou ferramentas, como o gerenciador de usuários
– administrador – não acessa funções globais
– super-administrador – acessa todas as funções do Joomla

Registro
Logo que o usuário se cadastra no site ele não pode efetuar o login. Antes precisa confirmar o e-mail que
recebeu do site.

Impedir/Permitir o registro de Usuários

Por padrão o registro de usuários é permitido.

Para impedir que usuários se cadastrem:


Clique em Site – Administração Global – Sistema – Configurações do Usuário – Permitir Cadastro de
Usuários - Não

Nenhum dos grupos de usuários do frontend tem acesso ao backend e todos os do backend podem acessr
o frontend como usuário com privilégios de redator.

Público – somente navega no site, por seções públicas.


Registrados – tem acesso às seções para usuário registrado. Permite apenas que altere seus dados e
adicione links. Não permite que adicione artigos.

Especiais - são os usuários autor, editor e redator, administrador e super-administrador.

Autor – pode criar conteúdo. O conteúdo ficará esperando que alguém o edite ou publique.
Editor – pode criar conteúdo e editar qualquer conteúdo do site. O conteúdo ficará esperando que alguém o
publique.
Redator – pode criar conteúdo, editar e publicar qualquer conteúdo do site. Semelhante ao editor, com as
funções de publicar e exibir na página inicial.

Gerente
– Gerenciar:
– mídia
– menu
– conteúdo
– página inicial
– componentes
– ajuda

Basicamente o gerente só mexe com conteúdo.

Administrador
– tem as atribuições do gerente e além disso gerenciar:
– usuários
– instalar e desinstalar extensões
– módulos

Página 40/58
Curso de Joomla 1.5 – http://ribafs.org

– plugins
– desbloqueio global

Super-administrador
– tem as atribuições do administrador e mais:
– configuração
– gerenciar idioma
– gerenciar templates
– instalar template
– gerenciar idioma
– e-mails em massa
Pode qualquer coisa no front e backend.

Autores, Editores e Redatores

São importantes apenas em grandes e organizados sites.


Para sites pequenos um só redator faz todo o serviço.

Itens de conteúdo, itens de menu, módulos e componentes:


A cada um destes podemos atribuir o parâmetro para controlar o acesso ao mesmo.
Quando o usuário se cadastra no frontend ele torna-se um usuário registrado (após confirmar o e-mail
recebido).

Somente um administrador ou super-administrador pode torná-lo um usuário de um dos grupos especiais:


autor, editor, redator , administrador ou super-administrador.

Página 41/58
Curso de Joomla 1.5 – http://ribafs.org

6. Módulos
O que é?

Os módulos são extensões do Joomla destinados a exibir conteúdo em uma área do Joomla nas
margens da página. Sua posição é determinada pelo template. Módulos complementam o conteúdo
contido em um componente. Não são destinados a ser a parte principal de uma página.

Ao contrário dos componentes, qualquer número de módulos pode aparecer em uma página. O
controle do módulo no backand é bem restrito, geralmente voltado para a formatação do conteúdo.
São as extensões mais simples, por isso começaremos com eles.

Exemplos de módulos: form de login, popular, latest news, etc.

Mais detalhes na documentação oficial em: http://docs.joomla.org/Developers

Instalação

A instalação dos módulos, assim como dos demais tipos de extensões é feita da mesma forma:
Clicamos no menu Extensões – Instalar/Desinstalar, indicamos o arquivo compactado e se tudo correr bem
ele está instalado e pronto para usar.

Diferente dos componentes, os módulos após instalados requerem que o habilitemos para que possam
então ser vistos no site.

Quando da habilitação podemos efetuar algumas configurações como posição, ordem entre outras.

Como criar modulo pelo Joomla


Criação de Módulos
Estrutura de arquivos
XML de instalação

Quando instalamos um módulo sua pasta com arquivos é copiada para a pasta portal/modules do Joomla.

Vamos mostrar como é a lógica de criação de um módulo no Joomla 1.5, criando um pequeno módulo
chamado "mod_ola", que contém apenas um script ola.php e outro ola.xml.

Estrutura de diretórios.

mod_ola
ola.xml
ola.php
index.html

Veja o conteúdo de cada um dos arquivos.

ola.xml

<?xml version="1.0" encoding="utf-8"?>


<install type="module" version="1.5.0">
<name>ola</name>
<author>Ribamar FS</author>

Página 42/58
Curso de Joomla 1.5 – http://ribafs.org

<creationDate>Agosto 2009</creationDate>
<copyleft>(C) 2009.None rights reserved.</copyleft>
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
<authorEmail>ribafs@ribafs.org</authorEmail>
<authorUrl>http://ribafs.org</authorUrl>
<version>1.0.0</version>
<description>
Este módulos destina-se a demonstrar a lógica de criação de um módulo Joomla.
</description>
<files>
<filename module="mod_ola" >ola.php</filename>
<filename module="mod_ola" >index.html</filename>
</files>
</install>

Para o script ola.php utilizaremos o mesmo do nosso componente com_ola sem problema.

Para o script index.html também utilizaremos o mesmo do componente, que aliás pode ser utilizado sempre
que criarmos qualquer extensão.

Agora vamos criar um módulo que tem alguma utilidade.

Módulo para Saudações de Feriados

Vamos criar um pequeno módulo que tem uma tabela contendo feriados e que mostrará no site uma
saudação aos visitantes avisando que hoje é um certo feriado, se for o caso.

Os componentes não têm interferência no backand, portanto não manipulam diretamente o banco de dados.
Neste caso o módulo consulta uma tabela mas teremos que criar a mesma e inserir seus dados
manualmente. Para manipulação direta de bancos de dados, criar tabelas, inserir registros e remover
tabelas temos os componentes, que veremos em seguida.

Vamos criar uma pasta chamada "mod_feriados" e dentro os quatro arquivos seguintes.

Estrutura de Arquivos

mod_feriados/createtable.sql
mod_feriados/insertdata.sql
mod_feriados/mod_feriados.php
mod_feriados/mod_feriados.xml

createtable.sql

CREATE TABLE jos_feriados (


id int(10) unsigned NOT NULL auto_increment primary key,
greeting varchar(45) NOT NULL,
holidayMonth int(10) unsigned NOT NULL,
holidayDay int(10) unsigned NOT NULL
);

Página 43/58
Curso de Joomla 1.5 – http://ribafs.org

insertdata.sql

INSERT INTO `jos_feriados` (`id`,`greeting`, `holidayMonth`,`holidayDay`) VALUES


(1,'Feliz Natal!',12,25),
(2,'Feliz Ano Novo!',1,1),
(3,'Feliz dia dos Namorados!',6,12);

mod_feriados.php

<?php
/**
* @version $Id: mod_holidaygreetings.php 5203 2006-09-27 02:45:14Z JinxDanr $
* @package Joomla
* @copyright Copyright (C) 2007 Dan Rahmel. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Módulo para exibir saudação de feriado quando for o dia.
*/

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
?>
<div><small>
<?php
echo JText::_( '<p>Hoje é ');
echo( date("l, F dS Y.") . '</p>' );
?>
</small></div>
<div>
<?php
$myGreeting = $params->get('greeting', 0);
$boldSetting = $params->get('boldgreeting', 0);
if ($boldSetting == 1) {
$bb = "<b>";
$be = "</b>";
} else {
$bb = "";
$be = "";
}

$curDay = date("d");
$curMonth = date("m");

$db =& JFactory::getDBO();


$query = "SELECT *" .
"\n FROM jos_feriados WHERE holidayMonth = " . intval($curMonth) . " AND
holidayDay = " . intval($curDay);
$db->setQuery($query);
$holidays = $db->loadObjectList();
if(count($holidays)) {
foreach ($holidays as $holiday) {
echo '<p>' . $bb . JText::_($holiday->greeting) . $be . '</p>';
}
echo '<p>' . JText::_( $myGreeting) . '</p>';
} else {
echo '<p>' . $bb . JText::_( 'Bem-vinda(o)!') . $be . '</p>';
}

Página 44/58
Curso de Joomla 1.5 – http://ribafs.org

?>
</div>

mod_feriados.xml

<?xml version="1.0" encoding="utf-8"?>


<install type="module" version="1.5.0">
<name>Saudação de Feriado</name>
<author>Dan Rahmel. Adaptação de Ribamar FS</author>
<creationDate>March 2007</creationDate>
<copyright>(C) 2007 Dan Rahmel. All rights reserved.</copyright>
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
<authorEmail>admin@joomlajumpstart.org</authorEmail>
<authorUrl>www.joomlajumpstart.org</authorUrl>
<version>1.0.0</version>
<description>Este módulos exibirá uma saudação de feriado baseada na data atual.
Os feriados são armazenados na tabela jos_feriados e podemos adicionar
outros e também alterar os existente.
</description>
<files>
<filename module="mod_feriados" >mod_feriados.php</filename>
</files>
<params>
<param name="greeting" type="text" default="Feliz feriado!"
label="Saudação" description="O texto que deve aparecer após a mensagem." />
<param name="boldgreeting" type="radio" default="0"
label="Saudações negrito" description="Determina se saudação será negrito ou não.">
<option value="0">No</option>
<option value="1">Yes</option>
</param>
</params>
</install>

O XML é definido com várias regras que devem ser obedecidas.


Existem várias seções:
- Cabeçalho XML: <?xml version="1.0" encoding="utf-8"?>
Versão do XML e codificação de caracteres. Para o Joomla 1.5.x deve ser UTF-8.
- Cabecalho do módulo: <install type="module" version="1.5.0"> .
Indicando um módulo e a versão do Joomla.
- Dados do autor:
<name>Saudação de Feriado</name>
<author>Dan Rahmel. Adaptação de Ribamar FS</author>
<creationDate>March 2007</creationDate>
<copyright>(C) 2007 Dan Rahmel. All rights reserved.</copyright>
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
<authorEmail>admin@joomlajumpstart.org</authorEmail>
<authorUrl>www.joomlajumpstart.org</authorUrl>
- Versão do módulo: <version>1.0.0</version>
- Descrição do Módulo: <description> Aqui fica a versão... </description>
- Arquivos a serem instalados, além do XML:
<files>
<filename module="mod_feriados" >mod_feriados.php</filename>
</files>
Devemos informar neste formato.

Página 45/58
Curso de Joomla 1.5 – http://ribafs.org

- Parâmetros: que permitem alterar o comportamenteo padrão do módulo, passando algumas opções que o
usuário pode esoclher ou entrar.
<params>
<param name="greeting" type="text" default="Feliz feriado!"
label="Saudação" description="O texto que deve aparecer após a mensagem." />
<param name="boldgreeting" type="radio" default="0"
label="Saudações negrito" description="Determina se saudação será negrito ou não.">
<option value="0">No</option>
<option value="1">Yes</option>
</param>
</params>
Aqui temos dois parâmetros: greeting e boldgreeting. Cujas funções são de tornar ou não negritada a
mensagem.

Parâmetros implementam interatividade com o usuário. No e Yes serão traduzidos (caso sua administração
esteja traduzida).

Para instalar precisamos criar a tabela, no banco do Joomla e inserir os registros.


Depois compactaremos a pasta mod_feriados apenas com o mod_feriados.php e mod_feriados.xml para
então instalar.

Página 46/58
Curso de Joomla 1.5 – http://ribafs.org

7. Mambot/Plugin
O que é?

Quando uma peça de código é necessária em todo o site então isto será melhor implementado com
um plugin. Geralmente utilizado para formatar a saída de um componente ou módulo quando a
página é construída. Exemplos de plugins: palavras-chaves realçadas, caixas de comentários,
editores HTML, etc. Plugins aumentam e melhoram as funcionalidades existentes no franework do
Joomla. Nos habilitam a executar código que respondem a certos eventos.

Os plugins afetam o conteúdo de diferentes maneiras.

Existem plugins de alguns tipos:


• authentication
• content
• editors
• editors-xtd
• search
• system
• user
• xmlrpc

Os eventos a que respondem agrupam-se nas categorias:


* System events
* User events
* Editor events
* Content events
* Contact events

Mais detalhes na documentação oficial:


http://developer.joomla.org/tutorials/184-how-to-create-a-joomla-plugin.html

Para criar um plugin precisamos basicamente de dois arquivos, um PHP e o XML.

Instalação
Criação de Mambot
Estrutura de arquivos
XML de instalação

Veja agora o código de um plugin bem simples, que sempre exibirá a mensagem Olá Mundo quando
abrirmos qualquer artigo.

plg_ola
ola.xml
ola.php
index.html

Página 47/58
Curso de Joomla 1.5 – http://ribafs.org

ola.php
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.plugin.plugin' );

/**
* Example system plugin
*/
class plgSystemOla extends JPlugin
{
function plgSystemOla( &$subject, $config )
{
parent::__construct( $subject, $config );

// Do some extra initialisation in this constructor if required


}

// Ao inicializar do Portal exibirá a mensagem Olá Mundo


function onAfterInitialise()
{
print "Olá Mundo";
}
}
?>

ola.xml
<?xml version="1.0" encoding="utf-8"?>
<install version="1.5.2" type="plugin" group="system" method="upgrade">
<name>System - Ola</name>
<author>Author</author>
<creationDate>Month 2008</creationDate>
<copyright>Copyright (C) 2008 Holder. All rights reserved.</copyright>
<license>GNU General Public License</license>
<authorEmail>email</authorEmail>
<authorUrl>url</authorUrl>
<version>1.0.1</version>
<description>A test system plugin</description>
<files>
<filename plugin="ola">ola.php</filename>
<filename plugin="ola">index.html</filename>
</files>
<params>
<param name="ola"
type="text"
default=""
label="Exemplo"
description="An example text parameter" />
</params>
</install>

Código adaptado de exemplo da documentação do Joomla:


http://developer.joomla.org/tutorials/184-how-to-create-a-joomla-plugin.html

Código do index.html é semelhante aos anteriores.

Página 48/58
Curso de Joomla 1.5 – http://ribafs.org

Veja agora o código de um plugin simples que substitui algumas abreviações pelo seu respectivo valor por
extendo em todos os artigos criados a partir da publicação deste plugin.

plg_abreviacoes
abreviacoes.xml
abreviacoes.php
index.html

abreviacoes.xml
<?xml version="1.0" encoding="UTF-8"?>
<install version="1.5" type="plugin" group="content">
<name>Content - Substituir Abreviações</name>
<author>Dan Rahmel. Adaptação de Ribamar FS</author>
<creationDate>July 2007</creationDate>
<authorEmail>admin@joomlajumpstart.com</authorEmail>
<authorUrl>www.joomlajumpstart.com</authorUrl>
<version>1.0</version>
<description>Substitui abreviações existentes em artigos por seu respectivo valor.</description>
<files>
<filename plugin="abreviacoes">abreviacoes.php</filename>
</files>
<params>
<param name="replace_limit" type="text" size="5" default="50" label="Limite de Busca"
description="Quantos itens retornar"/>
</params>
</install>

abreviacoes.php
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );

class plgContentAbreviacoes extends JPlugin {


// PHP4 compatible constructor
function plgContentAbreviacoes( & $subject ) {
parent::__construct( $subject );
}

// Name function same as event so it will be called.


function onPrepareContent(&$article, &$params, $limitstart=0) {
// Get the parameters in case we need them in a later plug-in
$plugin =& JPluginHelper::getPlugin('content', 'abreviacoes');
$pluginParams = new JParameter( $plugin->params );
$num =1;
if (!$pluginParams->get('replace_limit', 1)) {
$num = $pluginParams->get('replace_limit', 1);
}

if ( !JString::strpos( $article->text, '{abreviacoes=off}' ) === false ) {


$article->text = str_replace( '{abreviacoes=off}',
'', $article->text );
return true;
}

$article->text =$this->abreviacoesStr($article->text, $num);


return true;

Página 49/58
Curso de Joomla 1.5 – http://ribafs.org

function abreviacoesStr($myStr, $num) {


// Create an array of text abbreviations
$abbr=array( "PHP","CMS", "CE", "BR"
);

// Create a matching array of the phrases the words represent.


// These are coded two per line so they are more human readable
// making it easier to match them up to the above array.
$actual=array("Personal Home Page", "Content Management System", "Ceará","Brasil");

// Add the regular expression notation to the abbreviations in the


// array so the strings will only be matched if they are found as
// lone words. Also make search case insensitive.
for($i=0;$i < sizeof($abbr);$i++) {
$abbr[$i] = "/\\b" . $abbr[$i] . "\\b/i";
}

// Do a regular expression replace


$myStr = preg_replace ( $abbr, $actual, $myStr, $num);
// Return altered string
return $myStr;
}
}

//$myPlugin =& new plgContentAbreviacoes( JEventDispatcher::getInstance() );


// Agora JEventDispatcher mudou para JDispatcher
$myPlugin =& new plgContentAbreviacoes( JDispatcher::getInstance() );

?>

Adicione também nosso index.html.

Empacote os três juntos e instale.


Após a instalação crie um artigo contendo as abreviações:
PHP, CMS, CE, BR e veja que o plugin fará a substituição.
Isso dá para imaginarmos outros usos para esta idéia, como censura de algumas palavras.
Como está o plugin somente substitue a primeira ocorrência da abreviação.

Um outro plugin do CD procura por algumas palavras que sejam título de resenhas dos restaurantes e
substitui por links para as respectivas resenhas.

Página 50/58
Curso de Joomla 1.5 – http://ribafs.org

8. Templates
Posições de template

As posições ocupadas pelos módulos são definidas nos templates, mais precisamente no CSS e
controladas pelo index.php.

Página 51/58
Curso de Joomla 1.5 – http://ribafs.org

Veja algumas das posições:

<positions>
<position>left</position>
<position>right</position>
<position>top</position>
<position>banner</position>
<position>header</position>
<position>footer</position>
<position>pathway</position>
<position>user1</position>
<position>user2</position>
<position>user3</position>
<position>user4</position>
<position>user5</position>
<position>inset</position>
<position>debug</position>
<position>search</position>
<position>debug</position>
</positions>

Simplesmente inserindo a entrada de uma posição no XML não irá adicionar a posição ao template. Para
adicioná-la precisamos criar no CSS e adicionar ao index.php.

Editando um template

O Joomla nos oferece recursos para alteração dos templates através da interface de administração.
Vá em Extensões – Administrar Tema e clique no link de um template.

Aí podemos alterar o CSS e o HTML (no caso o index.php).


Também podemos alterar os parâmetros quando existirem.
Se for o template padrão do Joomla 1.5 (RHUK Milkyway), neste caso ele tem padrâmetros para as
cores e para a largura.
Ao clicar em Editar CSS, caso exista mais de um aparecerá uma lista onde devemos escolher um.

Instalando um template

A instalação de templates é semelhante a instalação das demais extensões.

Criação de Template

Um template básico deve conter pelo menos os arquivos:


index.php
template.css
templateDetails.xml

Estrutura de arquivos
XML de instalação

Página 52/58
Curso de Joomla 1.5 – http://ribafs.org

Passos para a criação de um template:


- Escolha bem as cores que formarão o tema/template
- Crie o CSS (css/template.css) de acordo com as cores
- Escolha bem as fontes e temanhos
- Criar um banner gráfico com a logomarca da empresa
- Criar um módulo HTML Custom para o Banner
- Criar a index.php
- Criar a templateDetails.xml
- Empacotar

O objeto JDocumentHTML
echo $this->language
echo $this->direction // diretório
echo $this->template
echo $this->title
echo $this->description
echo $this->link
echo $this->countModules('user1')

Evite templates mal comportados, use apenas aqueles que separam bem as camadas e que usam CSS e
JavaScript em arquivos separados.

Templates controlam a apresentação do conteúdo. O conteúdo ao ser inserido herdará o formato e


posicionamento definidos no template.

Páginas semânticas - São páginas (X)HTML que cuidam somente do conteúdo, ficando com o CSS a
apresentação.

Adote páginas de erros personalizadas para redirecionar os usuários para uma mensagem e link para a
página inicial.
Para isso use os serviços oferecidos pelo cPanel ou outro software de administração web.

Segundo pesquisa recente:

17% dos usuários usam resolução de 800x600


79% usam 1024x768

Template simples com duas colunas

\css
template.css
\images
joomlacurso.png
index.php
templateDetails.xml

index.php
<?php echo '<?xml version="1.0" encoding="utf-8"?' .'>'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="templates/_system/css/general.css" type="text/css" />

Página 53/58
Curso de Joomla 1.5 – http://ribafs.org

<link rel="stylesheet" href="templates/<?php echo $this->template ?>/css/template.css"


type="text/css" />
</head>

<body id="page_bg">

<jdoc:include type="message" />


<div id="logo">&nbsp</div>
<div id="container">
<div id="col2">
<jdoc:include type="component" />
</div>
<div id="col1">
<jdoc:include type="modules" name="left" style="xhtml" />
</div>
<div class="myclear">&nbsp;</div>
</div>
<jdoc:include type="modules" name="debug" />

</body>
</html>

templateDetails.xml
<?xml version="1.0" encoding="utf-8"?>
<install version="1.5" type="template">
<name>Two Column template</name>
<version>1.0</version>
<creationDate>01/18/2007</creationDate>
<author>Dan Rahmel</author>
<authorEmail>admin@joomlaJumpstart.com</authorEmail>
<authorUrl>http://www.joomlaJumpstart.com </authorUrl>
<copyright>2007</copyright>
<license>GNU/GPL</license>
<description>Two CSS columns in the Joomla world.</description>
<files>
<filename>index.php</filename>
<filename>templateDetails.xml</filename>
<filename>images/joomlacurso.png</filename>
<filename>css/template.css</filename>
</files>
<positions>
<position>left</position>
</positions>
</install>

Página 54/58
Curso de Joomla 1.5 – http://ribafs.org

Diretório css

template.css

div#logo {
width: 110%; height: 100px;
margin-left: -10px;
margin-bottom: 10px;
background: url(../images/joomlacurso.png) left no-repeat;
border: 1px solid #244223 ;
padding: 0px;
}

#col1 {
float:left;width:20%;
display:inline;
background:#244223;
padding: 10px;
}

#col2 {
float:right;width:75%;
display:inline;
border:3px solid #244223;
background:#58a155;
padding: 10px;
}

#container {
float:left;width:85%;
display:inline;
}

#myclear {
clear:both;
}

#page_bg {
font-family: Verdana, Arial, Helvetica, sans-serif;
height: 100%;
background: black;
}

.moduletable_menu, .moduletable
{
color: white;
border-bottom: 1px solid #fff;
margin-bottom: -1em;

Página 55/58
Curso de Joomla 1.5 – http://ribafs.org

.moduletable_menu h3 {
border-bottom: 1px solid #FFFFFF;
margin-bottom: 0px;
}

.moduletable_menu ul {
margin-left: 10px;
margin-top: 0px;
padding: 10px;
font-size: 80%;
list-style-type: square;
}

.moduletable_menu a:link, .moduletable a:link {


color:yellow;
}

.moduletable_menu a:visited, .moduletable a:visited {


color:cornsilk;
}

.contentheading {
border-bottom: 2px solid Black;
border-right: 2px solid Black;
border-left: 1px solid LightGreen;
border-top: 1px solid LightGreen;
background:#244223;
color: white;
padding: 10px;
font-size:2em;
}

.contentpaneopen h1 {
font-size:1.5em;
border-bottom: 1px solid #244223;
padding: 10px;
}

Extensões
As extensões dão muita força ao Joomla, podendo adicionar praticamente qualquer funcionalidade ainda
não existente na atual versão.

Extensões criadas para o Joomla herdam o look and feel do Joomla.

Qualquer programa escrito em PHP é uma extensão em potencial do Joomla aguardando para ser escrita
como extnsão.

Página 56/58
Curso de Joomla 1.5 – http://ribafs.org

O código do Joomla foi projetado para ser extendido e não para ser modificado diretamente (hacked). Ao
invés de alterar o core devemos criar uma extensão.

ToolBar - são compostas por botões (barras de ferramentas).

Convenção de Nomes para Programação no Joomla 1.5

Classes - iniciam com maiúscula e usam CamelCase


Métodos - iniciam com minúscula e usam camelCase
Todos os elementos nomeados devem seguir o padrão camelCase
palavra simple tudo em minúsculas. Palavras compostas camelCase.
Elementos não-públicos iniciar com sublinhado.

Desenvolvimento de Extensões
Sempre testar as extensões pelo menos no Windows e no Linux, como também no FF e no IE.

Antes de começar a criar uma nova extensão é prudente realizar uma boa busca no GED e no Google à
procura de extensão similar.

Mesmo que não encontre uma que atenda, poderá encontrar alguma que possa ser útil para evitar criar do
zero.

Referências
- Livro
Joomla! A User's Guide: Building a Successful Joomla! Powered Website
Autor - Barrie M. North
Editora - Prentice Hall

- Livro
Learning Joomla! 1.5 Extension Development
Creating Modules, Components, and Plug-Ins with PHP
Autor - Joseph LeBlanc
Editora - Packt Publishing

- Livro
Mastering Joomla! 1.5 Extension and Framework Development
The Professional's Guide to Programming Joomla!
Autor - James Kennard
Editora - Packt Publishing

- Livro
Professional Joomla!
Autor - Dan Rahmel
Editora – Wrox

- Livro
Joomla! Template Design
Create your own professional-quality templates with this fast, friendly guide
Autor - Tessa Blakeley Silver
Editora - Packt Publishing

- Livro
Building Websites with Joomla! 1.5
Autor - Hagen Graf
Editora - Packt Publishing

Página 57/58
Curso de Joomla 1.5 – http://ribafs.org

- Livro
Beginning Joomla! From Novice to Professional
Autor - Dan Rahmel
Editora - Apress

- Livro
Joomla! Cash
Money-making weapons for your Joomla! website
Autores - Brandon Dawson e Tom Canavan
Editora - Packt Publishing

- http://joomla.org

- http://www.google.com.br

Packt Publishing - http://www.packtpub.com/


Wrox - http://www.wrox.com/WileyCDA/
Prentice Hall - http://www.informit.com/imprint/index.aspx?st=61089
Apress – http://www.apress.com

____________________________________________
Ribamar FS – Fortaleza - Ceará, 21 de agosto de 2009

Página 58/58

Você também pode gostar