Arquivo da categoria: Joomla

Curiosidades sobre templates para Joomla

Fonte: CriarSites

Este é um guest post escrito por Willian Marques que mantém o Template Joomla.

Trabalho com o Joomla desde 2005, na verdade comecei trabalhando com o Mambo, o pai do Joomla, atualmente sou profissional na área e já desenvolvi mais de 800 sites em Joomla.

Para quem não sabe, Joomla é um sistema gratuito para criar sites, ele está na Internet desde 2005. Além de ser seguro ele é otimizado para ficar bem posicionado no Google e em outros buscadores.

Template é a roupa do seu site, ou seja, o visual, como cores, estrutura e etc. O legal é que seu site pode alterar toda a aparência sem alterar o conteúdo como textos e fotos.

Além dos templates gratuitos de boa qualidade, também existem os templates pagos, que tem uma qualidade superior.

Como no Windows o Joomla tem várias versões, e nem sempre um template feito para uma versão funciona em outra. Atualmente existem as seguintes versões de Joomla: 1.0, 1.5, 1.6, 1.7 e 2.5.

Templates feitos para as versões1.0 e 1.5 só rodam nestas versões, já alguns templates feitos para Joomla 1.6 também rodam em Joomla 1.7 e 2.5, e o contrário também é verdadeiro.

Muitos baixam ou compram templates sem se atentar a isto, por isso verifique sempre se a versão do seu Joomla é compatível com a versão do seu template.

Outra curiosidade é que por padrão templates não vem com formulário de contato, contador de visitas, enquete e outras coisas, isso porque estes complementos já vem com o Joomla.

Hoje em dia existem milhares de templates profissionais, por isso, não existe projeto que fique sem um template.

Aprender a criar templates do zero não é tarefa fácil, sou conhecedor de html, css, php e javascript, fiz um curso de como criar templates, mas vi que é muito demorado, são muitos detalhes, por isso sempre que alguém pede para eu criar um template, digo que não, pois além de ser demorado o valor pode beirar os R$ 2.500,00.

O bom dos templates para Joomla é que são possíveis de editar, ou seja, basta ter conhecimento em html e css e você poderá modelar um template existente facilmente.

Infelizmente a pirataria em se tratando de templates é grande, mas muitos fabricante já estão criando mecanismos para evitar esta fraude. Quem compra os templates tem que colocar uma chave de licença no seu Joomla, e o sistema do fabricante sempre verifica se o seu joomla está usando template original, se não estiver, seu Joomla sai do ar.

Por isso cuidado ao comprar templates, principalmente no mercado livre, que oferecem templates piratas a preço de banana. Além de seu template parar de funcionar, o fabricante do template pode descobrir seu site e pedir para a empresa de hospedagem tirar seu site do ar, alegando que seu site está com um template pirata.

Outra vantagem dos templates pagos é que comprando apenas um, eles vem com várias opções de cores e estilos, assim você pode apenas mudar a cor do seu site pelo painel de controle do seu Joomla, e rapidamente ele irá parecer um novo site.

A maioria dos novos usuários em Joomla não sabem instalar e configurar o Joomla, por isto a Eleva Host oferece este serviço gratuitamente. É uma maneira rápida de ter o seu Joomla do jeito que você quer sem quebrar a cabeça.

Desde 2005 todo dia dezenas de templates são criados, seja grátis ou pago. Isso só prova que o Joomla, além de ser um dos sistemas de criação de sites mais utilizando, vem sempre inovando.

Além da vasta gama de suporte, templates e versões, o Joomla tem mais de 9 mil extensões, seja um álbum de fotos, sistema de fórum, sistema de agenda e muito mais.

Concluindo, posso dizer que existe um mundo de templates e se você quer deixar seu site mais profissional, não deixe de mudá-lo para o Joomla e colocar um template arrasador. Pois a primeira impressão é a que fica.

Joomla 2.5.2 é liberado e traz correção para dois problemas de segurança

Fonte: IMasters

O Joomla Project disponibilizou a versão 2.5.2 do Joomla, que é uma atualização de segurança. Sendo assim, ela traz correção para dois problemas de segurança: um de alta prioridade (SQL Injection) e outro de média de prioridade (XSS Vulnerability).

Os desenvolvedores pedem que quaisquer bugs encontrados sejam reportados através do Joomla! CMS Issue Tracker.

O processo de update é simples, e instruções completas estão disponíveis neste link.

Mais detalhes estão disponíveis no anúncio oficial, que pode ser acessado aqui.

Joomla! libera atualizações para correção de vulnerabilidades críticas

Com informações de Under-Linux

Fonte: IMasters


Os desenvolvedores do Joomla! liberaram as versões 1.7.5 e 2.5.1 do sistema de gerenciamento de conteúdo (CMS) para corrigir duas vulnerabilidades de divulgação de informações.

Elas incluem um problema de gravidade média no Joomla! 1.7.x, que poderia permitir que um usuário não autorizado ganhasse acesso ao log de erro armazenado no servidor da vítima, e, em ambas as versões, uma falha de validação inadequada, que poderia ser explorada para obter acesso a dados privados.

Além disso, a atualização para o Joomla! 2.5, liberada no mês passado, corrige 30 bugs, incluindo um no qual processamento em lote gera cracking no sistema. A versão 2.5.0 e o ramo 1.7.x incluindo a versão 1.7.4 são afetadas, mas a atualização para os ramos 2.5.1 e 1.7.5 corrige esses problemas.

Entretanto, os desenvolvedores lembram aos usuários que o ramo 1.7.x vai chegar ao fim de sua vida em 24 de fevereiro de 2012. Logo, todos são aconselhados a atualizar para a versão atual.

Joomla 2.5 traz correções de bugs e novas funcionalidades

Com informações de PHP Review

Fonte: IMasters

Nesta semana, a versão 2.5 do Joomla foi disponibilizada. Entre as principais novidades apresentadas estão a busca avançada de notificações e o suporte a vários bancos de dados.

Segundo Ryan Ozimek, presidente da Open Source Matters, empresa responsável pela manutenção do Joomla, o suporte para vários bancos de dados é um grande passo para o Joomla, já que isso garante que o Joomla irá ajudar pequenas e grandes empresas e organizações a economizarem dinheiro. “Os desenvolvedores que usam o Joomla não estarão mais amarrados apenas a um banco de dados particular ou ter que gastar dinheiro integrando outro software para que o Joomla integre a sua base de dados, melhorando imensamente a escalabilidade”, explicou.

A nova versão do Joomla foi desenvolvida durante seis meses conforme anunciado na nota de lançamento da versão 1.7. De lá para cá, apenas bugs críticos foram atendidos. Nesse ciclo, muitas falhas de segurança foram corrigidos e é extremamente recomendado a atualização do Joomla para a mais recente versão.

Além disso, foram 356 correções realizadas e 26 novas funcionalidades adicionadas, entre elas estão a inclusão de processos batch, suporte a múltiplos databases e a verificação automática da versão do banco de dados; Inclusão do sistema de Captcha nativo.

A ideia da Equipe de Desenvolvimento é que o Joomla tenha ciclos regulares de atualização, tanto de segurança quanto de funcionalidades.

O modelo de dados do Joomla

Olá pessoal. Neste artigo vou apresentar mais uma análise do modelo de dados utilizado em um CMS (Content Management System). Desta vez apresentarei o modelo de dados do Joomla, um dos CMSs mais populares.

Há algum tempo atrás escrevi um artigo sobre o modelo de dados do WordPress aqui no iMasters. Desta vez vou analisar e comentar o modelo de dados do Joomla, outro CMS que está se tornando muito popular aqui no Brasil não apenas para a construção de blogs, mas também para a criação de web sites inteiros e complexos.

Assim como o WordPress, o Joomla pode ser utilizado basicamente de duas formas:

Através da contratação e utilização de um hosting especializado que hospedará o site;

Através do download e instalação do Joomla disponível no site oficial do Joomla. Há também uma forte comunidade de usuários brasileiros representados no site oficial do Joomla no Brasil.

A utilização do Joomla através da contratação de um hosting vai depender das configurações que o serviço de hospedagem fornece.

É comum encontrar painéis de controle e outras interfaces que facilitam tanto a administração como a criação de conteúdo. Contudo, nestas situações geralmente o ambiente está montado e não é preciso interagir diretamente com o banco de dados.

Já a segunda forma de utilização envolve o download, instalação e configuração do Joomla. Neste contexto é preciso conhecimento técnico da instalação do Joomla e suas dependências, como o servidor de banco de dados MySQL, o PHP e o servidor Web escolhido.

Este artigo se concentra nos detalhes técnicos envolvidos no banco de dados. O público alvo deste artigo são profissionais que precisam lidar com instalação, configuração e manutenção do Joomla e não para quem apenas o usa para gerenciar conteúdo.

É razoável admitir que a maioria dos usuários não precise conhecer o modelo de dados devido à facilidade do uso de painéis administrativo e outras interfaces que permitem a publicação de conteúdo neste CMS. Porém, administradores, DBAs, desenvolvedores de plug-ins e quem resolve problemas de desempenho ou integração com o Joomla devem conhecer bem seu modelo de dados.

Uma vez que já foram explicadas as duas formas de se utilizar o Joomla vamos ao modelo de dados que este CMS utiliza.

A Figura 1 apresenta o modelo de dados (isto é, as tabelas e seus tipos de dados) utilizados pelo Joomla 1.6 e modelados na ferramenta de código aberta DBDesigner disponível em diversas plataformas.

Figura 1. Modelo de dados do Joomla 1.6 no DBDesigner

Já a Figura 2 apresenta o mesmo modelo de dados da Figura 1, porém modelado utilizando a ferramenta livre de modelagem e administração chamada MySQL Workbench.

Figura 2. Modelo de dados do Joomla 1.6 no MySQL Workbench.

Os modelos da Figura 1 e da Figura 2 não foram produzidos por mim. O crédito vai para Torkil Johnse, que disponibilizou estes modelos gratuitamente no seu blog nos formatos do MySQL Workbench(MWB), PNG, PDF e SVG.

Nota: as figuras representam um modelo de dados levemente modificado em relação ao modelo original, como o próprio Torkil comenta em seu blog. As principais diferenças são a mudanças de alguns tipos de dados e a colocação de relacionamentos, uma vez que o MySQL com MyISAM não os suporta. Também destaco que o modelo da Figura 2 não apresenta nenhuma informação sobre os índices das tabelas.

Oficialmente não encontrei nenhuma página que contém informações sobre este modelo inclusive com detalhes das tabelas e suas colunas. Mas encontrei uma página apresenta um fraco dicionário de dados sem muitas informações detalhadas a respeito de certas características do modelo como, por exemplo, justificativas a respeito dos tipos de dados. Acesse a página que contém este dicionário de dados simplificado para a versão 1.5.

Assim como o WordPress, o Joomla não possui um arquivo contendo todos os comandos SQL necessários para a criação do banco de dados, ou seja, é preciso fazer uma chamada a um arquivo .php após as configurações de acesso a banco de dados no painel administrativo.

Antes de começar a análise do modelo é preciso dizer que oficialmente o Joomla só pode ser instalado no MySQL e/ou a extensão MySQLi. Isso quer dizer que se a empresa já possui outro banco de dados, como o PostgreSQL, SQL Server ou Oracle por exemplo, é preciso configurar um ambiente multi-banco, o que possui implicações para quem administra os servidores.

Existem alguns esforços da comunidade para permitir que o Joomla suporte outros bancos de dados, porém estes esforços ainda não foram integrados oficialmente ao projeto. Para mais informações sobre o suporte a outros bancos de dados no Joomla recomendo os seguintes links:


De forma similar ao que acontece no WordPress, o modelo de dados do Joomla também não contém chaves estrangeiras. O motivo pela ausência de chaves estrangeiras provavelmente é por que ele foi criado utilizando o engine MyISAM do MySQL ao invés do engine InnoDB. Aqui repito o que já havia falado quando analisei o modelo de dados do WordPress:

O MySQL apresenta a criação de chaves estrangeiras com o engine InnoDB a partir da versão 3.23.43b. O MySQL já está na versão 6, porém há o famoso problema de compatibilidade com as base legada. Provavelmente escolheu-se o MyISAM por facilidade e por motivos de desempenho, o que NÃO quer dizer que um banco de dados com o InnoDB não possa ser ajustado para ter uma desempenho aceitável.

Sem entrar em uma discussão mais profunda, em geral muitas pessoas advogam que o engine MyISAM possui melhor desempenho que o InnoDB, porém este último possui suporte a transações, integridade e outros recursos que o MyISAM não possui.

A falta de chaves estrangeiras quer dizer que o relacionamento entre algumas tabelas não é mantido pelo banco de dados e sim pela aplicação. Isso permite que hajam dados inconsistentes no banco de dados como, por exemplo, um comentário de um blog que não tem nenhum post associado.

Apesar deste cenário ser fictício e ocorrer apenas quando alguém altera os dados diretamente pelo banco de dados e não pela opção de criação de conteúdo, esta possibilidade de inconsistência pode gerar problemas, principalmente quando se fala em migração de dados e segurança.

Existem várias características e pontos do modelo do Joomla que podem ser analisados. O próprio Torkil Johnsen já apresentou diversos aspectos do modelo que ele crê que podem ser melhorados no artigo chamado The Joomla database schema smells.

Os principais pontos que ele destaca são a falta de padronização e problemas de nomenclatura, tipos de dados, normalização e falta de completude do modelo. Concordo com muitos dos pontos levantados pelo Torkil e aqui vou colocar algumas considerações minhas e, quando possível, realizar pequenas comparações com o modelo de dados do WordPress.

O modelo do Joomla possui mais de 30 tabelas divididas em grupos como publicação de conteúdo, componentes, menus, templates e outros. Essas divisões foram destacadas em retângulos com nomes na Figura 1.

Já o WordPress é mais enxuto e contém 11 tabelas. Existe uma correlação entre a quantidade de tabelas e colunas de um modelo e a sua complexidade, especialmente em aplicações simples que não estão associadas a toneladas e toneladas de requisitos e casos de uso com diferentes tipos de usuários.

Ou seja, quanto mais tabelas/colunas em um modelo de dados provavelmente ele vai ser mais complexo de ser compreendido, vai dificultar tarefas de importação/exportação e possui e tendência de introduzir complexidade desnecessária.

A principal tabela do modelo do Joomla possui o sufixo _content e é responsável pelo armazenamento de informações sobre o conteúdo (como posts em um blog). Esta tabela concentra muita informação nela mesma e possui quase 30 colunas. Obviamente, nem todas as colunas são preenchidas quando se cria um novo post e muitas destas colunas possuem valores que claramente poderiam ser mais bem aproveitados se estiverem em outra tabela.

Por exemplo, a dupla de colunas publish_up e publish_down, ambas do tipo DATETIME, armazenam a data que o post foi publicado e a data em que ele foi retirado do ar. Porém somente duas datas são armazenadas e não há como armazenar o histórico de mais de uma data de publicação e retirada do post. Esta característica se repete ao longo de diversas outras tabelas do modelo.

Outro ponto que me chamou a atenção foi a falta de tipos de dados booleanos, que armazenam valores 0/1 ou VERDADEIRO/FALSE ou TRUE/FALSE. Em muitas tabelas existem colunas que, aparentemente, poderiam se beneficiar do tipo de dados booleano como, por exemplo, a tabela _contact_details, que contém uma coluna chamada published do tipo de dados TINYINT(1).

Além disso, destaca-se também o uso em excesso de colunas com o tipo de dados TEXT, algo que permite o armazenamento de dados limitado apenas pelos recursos do servidor e não por um número fixo de caracteres.

O uso em excesso de colunas do tipo TEXT pode eventualmente se tornar um problema devido à grande quantidade de caracteres armazenados e à necessidade de backups específicos por tabelas. Sem contar que a indexação e pesquisa para este tipo de dados devem ser especiais, algo que não é tratado no Joomla diretamente.

Do ponto de vista de modelagem, em algumas situações o modelo atende a certos requisitos relativamente bem, como é o caso do gerenciamento de usuários, grupos e permissões.

Por outro lado, algumas tabelas deveriam ser implementadas como plug-ins ou extensões e não diretamente no modelo padrão, como é o caso do gerenciamento de avaliação (rating) de um post cujos dados são armazenados na entidade _content_rating.

Outro exemplo de tabelas que seriam mais bem aproveitadas em plug-ins ou extensões está relacionado com a criação de enquetes (polls) cujos dados são armazenados nas tabelas_polls, _polls_menu e _polls_data.

Outro aspecto que me chamou à atenção no modelo foram as tabelas responsáveis pelo armazenamento de informações de propaganda (_banner, _bannerclient e _bannerfinish) que provavelmente vieram como resquício do modelo do banco de dados do Mambo, projeto na qual o Joomla se originou.

Atualmente o modelo de patrocínio em sites evoluiu muito em relação aos antigos banners e creio que estas tabelas acabaram ficando no esquecimento devido à funcionalidades e requisitos de campanhas com links patrocinados e integração com programas de afiliados.

Apesar de não ser difícil compreender o modelo uma vez que se acostume a ele, em algumas situações fica estranho não contar com a nomenclatura e termos já tradicionais.

Por exemplo, em nenhuma tabela/coluna existe o termo comentário. No modelo de dados esta forma de interação do usuário com o post é chamada de mensagens. Já a tradicional forma de taxonomia apresentada por tags é representada por seções e categoria em um post. Já template é utilizado estritamente para menus e não faz referência direta à forma de customização do layout do site.

Novamente, assim como no WordPress, o modelo de dados do Joomla não possui nenhuma outra integridade de domínio ou stored procedure que faça restrição ao que é inserido no banco. Apesar disso não ser obrigatório, esta prática abre margem para problemas como SQL Injection onde um usuário malicioso pode tentar invadir o site por meio de caracteres especiais.

Além disso, a falta desta integridade pode permitir dados que invalidem a aplicação como, por exemplo, colocar o valor -2 na coluna count da tabela _categories. Há também algumas colunas de tabelas onde o valor NULL é permitido, tornando necessária uma checagem adicional na aplicação.

Enquanto alguns podem argumentar que isso é responsabilidade da aplicação não é raro encontrar bancos de dados com este tipo de integridade de domínio implementada, fornecendo assim mais uma camada de segurança e consistência de dados.

Em resumo pode-se dizer que o modelo do Joomla é robusto e atende à sua necessidade, porém é um modelo que carrega muito do projeto Mambo. O destaque vai para o foco de armazenar no banco de dados informações tanto de conteúdo como de usuários, configurações, comentários, avaliações, menus, etc.

Com certeza este modelo pode ser melhorado nos aspectos de nomenclatura, padronização, tipagem, normalização e outros. E esta melhoria é responsabilidade da comunidade de desenvolvedores e usuários do Joomla. Infelizmente, melhorias profundas no banco de dados requerem tempo conforme o projeto vai ficando cada vez mais maduro.

Apesar destas ressalvas, o Joomla é um bom CMS que pode ser utilizada para montar muitos projetos e sites interessantes. Obviamente, ele precisa evoluir e continuar a inovar no aspecto de funcionalidades, customização e usabilidade.

Sugiro aos desenvolvedores e à comunidade que procurem também aprimorar o seu modelo de dados, o que pode trazer inúmeros benefícios à ferramenta tornando-a cada vez melhor.

Um grande abraço e até a próxima.

Fonte: Mauro Pichiliani/joomlaclube