Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores

29
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 [email protected] @pedrogomesrocha Rio de Janeiro, 10 de Novembro de 2012

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 of Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores

Page 1: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores

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

[email protected]

@pedrogomesrocha

Rio de Janeiro, 10 de Novembro de 2012

Page 2: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores

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

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

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

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

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

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

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

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

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

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

2 - Estrutura do Drupal – Entity & Fields

Page 13: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores

2 - Estrutura do Drupal – Displays

Page 14: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores

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

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

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

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

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

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

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

7 – Alguns dos principais módulos estruturais - Views

Page 22: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores

7 – Alguns dos principais módulos estruturais – Panels

Page 23: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores

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

8 - Drupal para projetos Corporativos - Drush

Page 25: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores

8 - Drupal para projetos Corporativos - Simpletest

Page 26: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores

9 – Potenciais como aplicativo: Distros

Page 27: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores

10 – Futuro: Drupal 8

Page 28: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores

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!

Page 29: Drupal 4 Dev: aprendendo Drupal do ponto de vista de desenvolvedores

Drupal 4 Dev

Obrigado!

[email protected]

@pedrogomesrocha