Desenvolvimento web com Drupal: o CMS e o framework
Eriksen Costa Paixã[email protected]
Osasco, 29 de novembro de 2008
Eriksen Costa Paixão
● Bacharelando em Análise de Sistemas pela Universidade de Ribeirão Preto (UNAERP)
● Desenvolvedor web
● Programador PHP há 5 anos
● Desenvolvedor Drupal e Symfony
● Atualmente trabalha com grandes sistemas voltados a marketing
● Instrutor do curso PHP & MySQL Web Developer na 4Linux
eriksencosta.wordpress.com
www.linkedin.com/in/eriksencosta
drupal.org/user/215266
O que veremos...
● História sobre o Drupal● Quem usa● Por que usam?● Drupal 6● CMS● Framework● Novidades do Drupal 7
Pode te ajudar a...
● Não reinventar a roda● Contribuir com o projeto● Decidir se vai de Drupal, Joomla, Plone...
Drupal
Drupal: o que é?
● CMS● Framework● Open source (GPL)● Versão estável atual: Drupal 6
Drupal: história
Drupal: vantagens
● Comunidade● Documentação● Funcionalidades● Extensibilidade● Seguro● Escalável● Internacionalização● Maduro
Drupal: desvantagens
● Curva de aprendizado● Documentação na maior parte em inglês (!?)● Tudo vai para o banco de dados
– Fica difícil manter histórico das configurações
– Implantação de atualizações
Quem usa?
4Linux - http://www.4linux.com.br
Democratas - http://www.democratas.org.br
Unicamp - http://www.unicamp.br
Disney ABC Family - http://abcfamily.com
Anistia Internacional - http://www.amnesty.org
FastCompany - http://www.fastcompany.com
MTV UK - http://www.mtv.co.uk
OnSugar - http://onsugar.com
Sony MyPlay - http://myplay.com
Warner - http://www.wbr.com
Além desses modestos nomes...
Mercado
Mercado: mundo
● Ecossistema em expansão● Empresas altamente especializadas● Projetos grandes
Mercado: mundo
● Drupal como parte integrante do negócio– Acquia.com: suporte comercial (US$ 7 mi em
investimento de risco)
– PopSugar.com: redes sociais (US$ 15 mi)
– NowPublic.com: jornalismo comunitário (US$ 12 mi)
– Etribes.com: rede de blogs
– ParentsClick.com: redes sociais
Mercado: Brasil
● Poucos desenvolvedores● 1 empresa especializada (que eu lembre)
– Chuva Inc. (case Unicamp)
● Oportunidade● Free-lancers e empresas
– Software de ótima qualidade para PMGE
– Produtividade
O CMS
O CMS
O CMS
● Criar diferentes tipos de conteúdo● Categorizar conteúdo● Multi-sites● Temas (layouts) prontos
O CMS: plug and play
O CMS: plug and play
● 2.100+ módulos● Extendem as funcionalidades básicas do core
– Mídia: vídeos, podcasts, galeria de fotos
– Nuvem de tags
– Integração com Google Maps
– Content Relationship Management (CRM)
– Calendário e inscrição de eventos
– ...
O CMS: drag n' drop
O CMS: performance
O CMS: performance
● Cache de páginas e blocos– Menos queries ao banco de dados
– Reduz a carga no servidor
– Tempo de resposta diminui
O CMS: performance
● Economia de banda– Compressão de páginas
– Otimização de CSS e JS
– Só é necessário clicar para ativar!
– Carregamento mais rápido nos browsers!
O CMS: performance
● Otimização de CSS: caso 4Linux (D5)● 21 arquivos CSS no total
– 21 requisições HTTP
– ~51 KB de CSS
O CMS: performance
● Otimização de CSS e JS: caso 4Linux (D5)● 20 arquivos agregados em 1
– 1 única requisição HTTP
– ~41 KB de CSS
– 24% de economia
– Isso tudo apenas clicando em uma opção!
O CMS: segurança
O CMS: segurança
● Update status module– Notifica quando novas versões ou correções de
segurança estão disponíveis
● Filtro de conteúdo– Anti-XSS
● Formulários– Anti-CRSF
● Checagem de força de senha
O CMS: internacionalização
O CMS: internacionalização
● Site em diversos idiomas em poucos cliques● Suporte a idiomas RTL (right to left)● Tradução de toda a interface
– Locale module (core) + i18n (contrib)
– Arquivos .pot ou tradução via interface admin
O CMS: internacionalização
● Negociação do idioma do conteúdo e interface– Por prefixo na URL: example.com/pt-br
– Através do subdomínio: pt-br.example.com
– Preferência do usuário
O framework
O framework
O framework: arquitetura
O framework: node
nodetitlebodyauthorcreated date...
O framework: node
nodetitlebodyauthorcreated date...
articlecopyright
pollchoicesresults
O framework: API
● API robusta● Responsável pela extensibilidade● Módulos podem prover APIs também
O framework: hook system
BlogBlog ContactContact
function blog_perm() { return array(‘edit own blog’);}
function contact_perm() { return array(‘access contact form’);}
$permissions = module_invoke_all(‘perm’);
O framework: Forms API
● Quem gosta de trabalhar com forms?– Validar
– Checar tipo
– Condicionais
– Segurança...
● Chega de...
O framewok: Forms API (FAPI)
● Simples– Estimula reuso de código
● Funções de validação
– AHAH
– Pré-valida se o conteúdo corresponde ao seu form
– Anti-CRSF
– Formulários em vários passos simples● Repopula sozinho
O framewok: Forms API (FAPI)
O framework: outras APIs
● Batch● Database● Javascript, AJAX, AHAH● Localization● Schema● XML-RPC
O framework: theming
● Camada de apresentação muito flexível● Enjoou da cara do seu site?
– Crie um tema novo e troque na interface admin
– Geralmente não precisa alterar nenhuma outra configuração
● O designer nem precisa entender bem como o Drupal funciona
Módulos
Módulos: CCK
● Permite estender um tipo de conteúdo adicionando novos campos
● Ex: site de imobiliária, cadastro de node do tipo imóvel:– Quartos
– Banheiro
– Garagem
Módulos: Views
● Permite criar lista de conteúdo através de uma interface bastante prática
● Possui API própria que permite outros módulos interagirem com o módulo adicionando novas opções para a sua interface
Módulos: Panels
● Permite a criação de páginas em painéis diferentes com total controle do layout e de conteúdo (nodes, blocks e até views)
Módulos: Webform
● Construtor de formulários– Formulários de contato
– Pesquisas
– Entrada para outros sistemas (CRM)
Módulos: Flashvideo
● Inclui funcionalidade de upload de arquivo de vídeo (MPG, AVI...) para conversão à là YouTube– Requer ffmpeg
– Não vem com player de vídeo● JW FLV Media Player (GPL, € 30 a € 200)● Flowplayer (GPL, US$ 95 ou US$ 355)● OS FLV (GPL)
● Quem precisa do YouTube quando se tem banda =)
Módulos: ImageCache e imagefield
● Permite a criação de ações que serão realizadas em cima de um upload de imagem– Quantas ações quiser
– Tamanhos diferentes
● Widget CCK de upload de imagens
Módulos: mais...
● Asset● CAPTCHA● Ubercart (e-commerce)● OG Groups● SEO Checklist● XML Sitemaps● ...
Desenvolvimento
Desenvolvimento: como é
● Pesquisa de módulos● Boa parte do tempo é gasta com configuração
dos módulos e com o templating● Para sites mais sofisticados, o desenvolvedor
deve entender o funcionamento de parte da API
Desenvolvimento: dicas
● Use CCK e Views– Ajudam a mudar rapidamente os tipos de conteúdo
– Desenvolvimento ágil
– Prototipação
● Módulos Devel● Aprenda a usar o (jurássico) CVS● Documente seus passos
Desenvolvimento: dicas
● Instale já em português:– O instalador fornece o link dos pacotes de tradução
e da documentação sobre como fazer
– Pacote de tradução em português em: http://drupal.org/project/pt-br
● Leia alguns cases no drupal.org:– NYObserver, Rake Magazine, IMA, 4Linux
● Peça ajuda– #IRC, fóruns do drupal.org ou drupal-br.org
Desenvolvimento: dicas
● O código Drupal é muito limpo e organizado● Consulte a API:
– api.drupal.org
● Convenções de código do PEAR (PHP Extension and Application Repository)
● Seguir as convenções traz benefícios como segurança e melhor portabilidade de código
Desenvolvimento: dicas
● Zen theme● Não se preocupe em customizar a interface
logo cedo
Desenvolvimento: dicas
● Aproveite das opções de performance nativas● Frontend
– JS e CSS agregation● Reduz em muitos % o tamanho dos arquivos
– Cache de páginas
– Melhorando isso tudo...● Apache mod_deflate● Proxy reverso (varnish, squid)● Vamos ver...
Desenvolvimento: dicas
● Habilitando o mod_deflate do Apache na 4Linux tivemos:– ~9 KB de CSS
– CSS agregado: 355% de economia
– CSS em arquivos separados: 466% de economia
Desenvolvimento: dicas
● Backend– Já é bastante otimizado para ser usado em
qualquer servidor (até nos compartilhados...)
– Desative módulos desnecessários
– Uso intensivo do banco● Muitos módulos● 200+ queries● MySQL query_cache_size● Memcached (e módulo Memcache)
– Memória● APC
Drupal 7, drupal.orge como contribuir
Drupal 7
● Usabilidade● Database The Next Generation● Mais drag and drop● “Vai ser lançado quando estiver pronto”● Necessário PHP 5.2+
Drupal.org
● Processo de redesign aberto– groups.drupal.org/drupalorg-redesign-plan-drupal-
association
● Design bonito● Testes de usabilidade● Páginas com ofertas de trabalho● Interessante de se acompanhar
Gostou? Contribua!
● Dê suporte– Principalmente no drupal-br.org
● Crie um módulo● Documente● Traduza● Espalhe as boas novas● Dê palestras● Abuse e use!
Perguntas?
Obrigado!
Fontes, links e download da palestra disponíveis em:http://tinyurl.com/ecppcb2008
Creative Atribuição-Compartilhamento pela mesma Licença 2.5 Brasil Commons