cursojoomla2009.2

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

Upload: thiagojacob

Post on 01-Jul-2015

205 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: CursoJoomla2009.2

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é-requisitosFerramentasAmbienteProjeto

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óriosEstrutura de arquivosXML 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 arquivosXML 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

Page 2: CursoJoomla2009.2

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

Page 3: CursoJoomla2009.2

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

Page 4: CursoJoomla2009.2

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

Page 5: CursoJoomla2009.2

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-8http://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.htmlhttp://www.thefreecountry.com/programming/editors.shtmlhttp://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

Page 6: CursoJoomla2009.2

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.

DownloadApenas 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çãoApó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

Page 7: CursoJoomla2009.2

Curso de Joomla 1.5 – http://ribafs.org

Configurações

setup_xampp.batApó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.exeAgora 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.

TestandoEstamos prontos para trabalhar com PHP e MySQL.Abra o navegador com o endereço:http://localhoste 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

DescompactarAcesse 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

Restartandosudo /opt/lampp/lampp start

Página 7/58

Page 8: CursoJoomla2009.2

Curso de Joomla 1.5 – http://ribafs.org

TestandoAbra o navegador em:http://localhost

Tornando permanente a inicialização do Xamppsudo 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

Page 9: CursoJoomla2009.2

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çãoLembrando 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

DownloadFaç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.pdfGuia 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

Page 10: CursoJoomla2009.2

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/joomla4) 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 = OnPara display_errors = Off

Página 10/58

Page 11: CursoJoomla2009.2

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

Page 12: CursoJoomla2009.2

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

Page 13: CursoJoomla2009.2

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

Page 14: CursoJoomla2009.2

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

Page 15: CursoJoomla2009.2

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 – artigoscategorias – 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

Page 16: CursoJoomla2009.2

Curso de Joomla 1.5 – http://ribafs.org

Quebra de PáginaUm 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 quebraClicar 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 categoriascategorias – 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

Page 17: CursoJoomla2009.2

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ênciasEntão exibe-se/oculta-se o que bem entender.

Menus

Cada menu é exibido por um módulo.

Main Menu * - NovoEntre 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.

AlertaAo 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

Page 18: CursoJoomla2009.2

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 ImagensAntes 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 menuParâmetros avançados – Sufixo de classe do módulo usar _menu.

Mensagens Privadas no BackendQuando 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çõesMarcar "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

Page 19: CursoJoomla2009.2

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

Page 20: CursoJoomla2009.2

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 acessarregistrado – para acessar o visitante precisa efetuar seu registro no siteespecial – 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

Page 21: CursoJoomla2009.2

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 PersonalizadoTí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 PersonalizadoTí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

Page 22: CursoJoomla2009.2

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

Page 23: CursoJoomla2009.2

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ídiaPermite filtrar pelo tipo de arquivo, tamanho, etc.

Configuração da SessãoAqui 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

Page 24: CursoJoomla2009.2

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=2http://postgresql.ribafs.org/introducao

ProblemaCaso 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

Page 25: CursoJoomla2009.2

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

Page 26: CursoJoomla2009.2

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.htmlhttp://www.compassdesigns.net/joomla-blog/HTML-Filtering-Options-in-Global-Article-Parameters.html

Página 26/58

Page 27: CursoJoomla2009.2

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

Page 28: CursoJoomla2009.2

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 – NovoContatos – Contato – Layout de contato padrãoEntre com o Título e à direita selecione o contato que receberá os e-mails então clique em SalvarSempre ao criar um item de menu existem diversos parâmetros que algumas vezes são desejáveis.

Página 28/58

Page 29: CursoJoomla2009.2

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

Page 30: CursoJoomla2009.2

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

Page 31: CursoJoomla2009.2

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:

<?phpdefined( ' 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:

<?phpdefined( ' 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

Page 32: CursoJoomla2009.2

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>[email protected]</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

Page 33: CursoJoomla2009.2

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çãoA compactação pode usar um dos seguintes formatos:zip, tar, gz, tgz, gzip, bz2, tbz2 ou bzip2.

Primeiro a ser executadoO 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

Page 34: CursoJoomla2009.2

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

Page 35: CursoJoomla2009.2

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

Page 36: CursoJoomla2009.2

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

Page 37: CursoJoomla2009.2

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

Page 38: CursoJoomla2009.2

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

Page 39: CursoJoomla2009.2

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

Page 40: CursoJoomla2009.2

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

RegistroLogo 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

Page 41: CursoJoomla2009.2

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 massaPode 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

Page 42: CursoJoomla2009.2

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

Page 43: CursoJoomla2009.2

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>[email protected]</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

Page 44: CursoJoomla2009.2

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

Page 45: CursoJoomla2009.2

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>[email protected]</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>[email protected]</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

Page 46: CursoJoomla2009.2

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

Page 47: CursoJoomla2009.2

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 arquivosXML 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

Page 48: CursoJoomla2009.2

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

Page 49: CursoJoomla2009.2

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>[email protected]</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

Page 50: CursoJoomla2009.2

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

Page 51: CursoJoomla2009.2

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

Page 52: CursoJoomla2009.2

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.phptemplate.csstemplateDetails.xml

Estrutura de arquivos XML de instalação

Página 52/58

Page 53: CursoJoomla2009.2

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

\csstemplate.css

\imagesjoomlacurso.png

index.phptemplateDetails.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

Page 54: CursoJoomla2009.2

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>[email protected]</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

Page 55: CursoJoomla2009.2

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

Page 56: CursoJoomla2009.2

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

Page 57: CursoJoomla2009.2

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

- LivroJoomla! A User's Guide: Building a Successful Joomla! Powered WebsiteAutor - Barrie M. NorthEditora - Prentice Hall

- LivroLearning Joomla! 1.5 Extension DevelopmentCreating Modules, Components, and Plug-Ins with PHPAutor - Joseph LeBlancEditora - Packt Publishing

- LivroMastering Joomla! 1.5 Extension and Framework DevelopmentThe Professional's Guide to Programming Joomla!Autor - James KennardEditora - Packt Publishing

E

- LivroProfessional Joomla!Autor - Dan RahmelEditora – Wrox

- LivroJoomla! Template DesignCreate your own professional-quality templates with this fast, friendly guideAutor - Tessa Blakeley SilverEditora - Packt Publishing

E

- LivroBuilding Websites with Joomla! 1.5Autor - Hagen GrafEditora - Packt Publishing

Página 57/58

Page 58: CursoJoomla2009.2

Curso de Joomla 1.5 – http://ribafs.org

- Livro Beginning Joomla! From Novice to ProfessionalAutor - Dan RahmelEditora - Apress

- LivroJoomla! CashMoney-making weapons for your Joomla! websiteAutores - Brandon Dawson e Tom CanavanEditora - 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