drupal 4 dev: aprendendo drupal do ponto de vista de desenvolvedores
DESCRIPTION
Para você, que é um desenvolvedor experiente e ouve muito sobre Drupal, que é uma excelente plataforma para websites e também para webapps, mas gostaria de saber mais sobre ela antes de investir tempo em seu aprendizado, essa é a palestra certa. Entenda "por debaixo dos panos" como o Drupal funciona e veja como ele se relaciona com padrões de projeto, Versionamento de código, testes automatizados, MVC, OOP, como é sua arquitetura, etc. Descubra por quê o Drupal vem conquistando cada vez mais desenvolvedores e empresas como plataforma para criação de sistemas corporativos, redes sociais, e-commerces, ERPs, CRMs, entre diversos outros tipos de sistemas online.TRANSCRIPT
![Page 1: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/1.jpg)
Drupal 4 Dev Aprendendo Drupal do ponto de vista de desenvolvedores
Pedro Rocha / SingleView
Consultor em Tecnologia da Informação e Inteligência de Marketing
@pedrogomesrocha
Rio de Janeiro, 10 de Novembro de 2012
![Page 2: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/2.jpg)
Sobre o que vamos falar
1. O que é Drupal? Mitos e verdades sob a ótica de um desenvolvedor
2. Estrutura do Drupal
3. Menu System
4. PHPTemplate
5. Form API
6. Versionamento de código
7. Principais módulos estruturais
8. Drupal para projetos Corporativos
9. Potenciais como aplicativo: Distros
10. Futuro: Drupal 8
![Page 3: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/3.jpg)
Quem sou eu
• Desde 2001 ligado a desenvolvimento web e novas tecnologias
• Atuei com webdesign, administração e otimização de servidores, programação
em Java e PHP, gerenciamento de projetos e atualmente como consultor
• Atuante na comunidade internacional de Drupal desde 2007
• Após usar diversas ferramentas como Wordpress, Joomla, Liferay, Moodle,
CakePHP, Code Igniter, JSF, J2EE, enxerguei um alto potencial no Drupal e o
defini como foco principal de estudos e projetos
• Mantenho módulos do Drupal, colaboro com patches, auxilio com dicas no
meu blog e na lista de discussão da comunidade brasileira de Drupal, além de
apoiar comunidades open source em seus eventos
![Page 4: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/4.jpg)
1 - O que é Drupal? Mitos e verdades sob a ótica de um desenvolvedor
Pode ser chocante para muitos, mas o Drupal não é uma linguagem de
programação, nem um framework de código!
Ou seja, não faz sentido algum querer compará-lo com:
• Symfony, Cake PHP, Code Igniter, etc
• Rails, Ruby
• JSF / Java
• Web2py / Python
e tantas outras linguagens e frameworks por ai...
![Page 5: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/5.jpg)
1 - O que é Drupal? Mitos e verdades sob a ótica de um desenvolvedor
Se quisermos comparar o Drupal com algum outro projeto da mesma “categoria”, talvez devamos olhar para:
Isso porque o Drupal é uma plataforma, também chamado de CMS. O problema com CMS é ser muito vago, conseguindo a proeza de juntar no mesmo saco projetos extremamente distintos, como os 4 exemplos acima.
![Page 6: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/6.jpg)
1 - O que é Drupal? Mitos e verdades sob a ótica de um desenvolvedor
• O Drupal não é OO (orientado a objetos)
• Usa PHP 5 ?
• Seu código é ruim
• Não utiliza MVC
• Possui baixa performance e não é escalável
![Page 7: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/7.jpg)
1 - O que é Drupal? Mitos e verdades sob a ótica de um desenvolvedor
Comunidade
![Page 8: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/8.jpg)
2 - Estrutura do Drupal
• Módulos
• Variáveis de sistema
• Paginas
• Blocos
• Entity & Entity Types (User, Node, Comment, Product, Contacts, etc)
• Fields
• Displays
• Hooks (convenções)
![Page 9: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/9.jpg)
2 - Estrutura do Drupal – Módulos & Variáveis de sistema
Em relação à arquitetura em que o Drupal foi construído, ao longo dos
seus 10 anos de vida, não há como fugir da analogia a peças de Lego ou
de um quebra-cabeça.
No entanto, é mais interessante ainda,
Pois o sistema é completo em si,
não dependendo de outras peças,
mas crescendo enormemente com
cada nova peça que surge.
![Page 10: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/10.jpg)
2 - Estrutura do Drupal – Paginas & Blocos
Cada página que o Drupal retorna é
composta por uma série de blocos
de informação, ou widgets, que
podem vir de diversos módulos
distintos, ou mesmo em combinação,
que pode ser igual para todos os
usuários ou ser contextualizada de
acordo com cada usuário que acessa
a página.
![Page 11: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/11.jpg)
2 - Estrutura do Drupal – Entity & Fields
• API Orientada a Objetos para servir de “Entidade base” de onde as
demais deverão extender, através dos Entity Types
• Entity Types(User, Node, Comment, Product, Contacts, etc)
• As Entities podem ser customizadas via interface, adicionando e
removendo atributos a essa Entity, através dos Fields
• Os Fields se baseiam na Field API, que é uma API altamente robusta e
que, partindo do conceito básico de “campo de formulário”, é
extendida através de dezenas de módulos, com campos para arquivos
de Media, Upload de arquivos em massa, entre diversos outros tipos
de campo.
![Page 12: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/12.jpg)
2 - Estrutura do Drupal – Entity & Fields
![Page 13: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/13.jpg)
2 - Estrutura do Drupal – Displays
![Page 14: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/14.jpg)
2 - Estrutura do Drupal – Displays
Desde o ínício, o Drupal é preparado para que o conteúdo possa adotar
formas diversas de apresentação, ou seja, o mesmo cadastro pode estar em
uma lista, em uma página específica dele, em um bloco, etc, com uma grande
facilidade nessa gestão de diferentes Displays.
Esse conceito evoluiu muito e hoje vemos projetos em que a mesma
instalação do Drupal responde por alimentar o site, um aplicativo mobile(via
JSON, por exemplo), uma interface em Flash, ou mesmo através de XML.
E não esqueçamos que o Drupal 7 foi a primeira plataforma a nativamente
suportar a exportação de seus dados através de RDF, um padrão
fundamental para o próximo passo da internet: a web semântica.
![Page 15: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/15.jpg)
2 - Estrutura do Drupal – Hooks
“Plugável” é o termo que melhor define a arquitetura do Drupal, aonde
cada módulo pode criar “hooks”(ganchos), aonde outros módulos podem
se plugar, interagindo diretamente, através dessa interface.
![Page 16: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/16.jpg)
3 - Menu System
O Drupal se baseia nas URLs para definir como tratar uma requisição,
possuindo um sistema interno chamado “Menu System”, que é altamente
poderoso e flexível, agindo como “Page Controller” e tratando de
questões como segurança e acesso, entre outras.
Ex: “node/456/edit/registration”
• node
• ID do node
• edit
• registration
![Page 17: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/17.jpg)
4 - PHP Template
Uma parte fundamental do Drupal é seu sistema de templates, o PHP
Template, responsável por uma enorme flexibilidade, aonde todo output
gerado pelo sistema é possível de ser interceptado e sobrescrito, aonde
incrementando ou removendo partes, podemos potencializar seus
resultados ou habilitar o sistema a novos casos de uso.
<?php
function theme_pagina_noticias() {...}
pagina-noticias.tpl.php
![Page 18: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/18.jpg)
5 - Form API
Se tem uma coisa fácil e fantástica no Drupal é a forma como trabalha
com formulários, a chamada “Form API”, através da qual podemos criar
formulários com arrays() como:
$form[‘mensagem_ao_usuario'] = array( '#type' => 'textarea', '#title' => ‘Mensagem que deseja enviar ao usuário', '#required' => TRUE, );
Além de contarmos com mecanismos de validação, integração com AJAX,
entre inúmeras outras ferramentas para o tratamento de dados que são
nativas do Drupal
![Page 19: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/19.jpg)
6 - Versionamento de código
Para trabalhar com versionamento de código, a saída encontrada pela
comunidade Drupal foi criar módulos que ajudam a exportar as
configurações criadas via interface, gerando código que gerencia a
sincronização entre o que está configurado na base de dados e o que está
definido no código do módulo.
Os principais módulos com esse objetivo são:
• Features
• Strongarm
• CTools Exportables
![Page 20: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/20.jpg)
7 – Alguns dos principais módulos estruturais
A arquitetura do Drupal, altamente modular e plugável permite o
surgimento de módulos que potencializam outros módulos, e assim por
diante. Alguns módulos que elevam ainda mais as possibilidades são:
• Views
• Context
• Rules
• Panels
e estou cometendo uma injustiça enorme ao citar somente 4, pois
realmente existem muitos módulos com altíssimo potencial para elevar o
Drupal em determinados casos de uso
![Page 21: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/21.jpg)
7 – Alguns dos principais módulos estruturais - Views
![Page 22: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/22.jpg)
7 – Alguns dos principais módulos estruturais – Panels
![Page 23: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/23.jpg)
8 - Drupal para projetos Corporativos
Já foi a época em que o Drupal vivia somente de interface gráfica e
processos manuais, algo inimaginável em grandes projetos corporativos,
que exigem processos como Integração Contínua, testes automatizados,
entre outros. Para isso, algumas ferramentas se tornaram muito
importantes no contexto de Drupal:
• Drush
• Simpletest
• Jenkins
• Drush Make
• etc
![Page 24: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/24.jpg)
8 - Drupal para projetos Corporativos - Drush
![Page 25: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/25.jpg)
8 - Drupal para projetos Corporativos - Simpletest
![Page 26: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/26.jpg)
9 – Potenciais como aplicativo: Distros
![Page 27: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/27.jpg)
10 – Futuro: Drupal 8
![Page 28: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores](https://reader034.vdocuments.site/reader034/viewer/2022052619/556ed41fd8b42adb678b540c/html5/thumbnails/28.jpg)
Drupal 4 Dev – considerações finais
Mais do que um CMS para criar websites, o Drupal é hoje uma plataforma
adequada aos mais diversos tipos de projetos, com uma grande
flexibilidade e capacidade de rápida adaptação a mudanças.
Com um foco muito forte no reaproveitamento de partes de projetos, a
colaboração dentro da comunidade gera muitos retornos para todos os
envolvidos, cada vez com ferramentas mais e mais sofisticadas, todas
abertas, ao alcance de um click.
Para melhorar, só faltam mais profissionais investindo nessa plataforma!
Acesse http://drupal.org e inicie sua jornada!