SlideShare une entreprise Scribd logo
1  sur  34
Desenvolvimento web com
           Drupal 7




Sérgio Santana de Lima
Drupal?

O Drupal é comumente descrito como um
 Framework de Gerenciamento de Conteúdo,
 pois além de oferecer as funcionalidades
 básicas de um CMS ele também implementa
 uma série de APIs robustas e apresenta uma
 estrutura modular que facilita o
 desenvolvimento de módulos extensivos.




Fonte: http://pt.wikipedia.org/wiki/Drupal
Vantagens

Comunidade
Funcionalidades
  Mais de 800 módulos estão disponíveis ou em
   desenvolvimento atual para o Drupal 7, incluindo
   Views, Pathauto, e WYSIWYG
Extensibilidade
Internacionalização
Usabilidade
Desvantagens

Documentação em inglês
Tudo vai para o banco de dados
Normas de codificação

Baseado no PEAR Coding standards
Recuo e espaço em branco
  2 espaços para recuo, sem tabulação
Operadores
  Espaço antes e depois de todos operadores binários
Normas de codificação

Estruturas de controle

 if (condicao1 || condicao2) {
   acao1;
 }
 elseif (condicao3 && condicao4) {
   acao2;
 }
 else {
   acaopadrao;
 }
Normas de codificação

Sintaxe de controle alternativa para templates


<?php if (!empty($item)): ?>
  <p><?php print $item; ?></p>
<?php endif; ?>

<?php foreach ($items as $item): ?>
  <p><?php print $item; ?></p>
<?php endforeach; ?>
Normas de codificação

 Comprimento e quebra de linha
    Em geral, as linhas não devem ultrapassar o
     tamanho de 80 caracteres
    Estrutura de controle podem exceder 80 caracteres
     se são simples de ler e entender

if ($something['with']['something']['else']['in']['here'] ==
mymodule_check_something($whatever['else'])) {
    ...
  }
Normas de codificação

Chamada de função

 $var = foo($bar, $baz, $quux);

 $short         = foo($bar);
 $long_variable = foo($baz);
Normas de codificação

Declaração de função

function funstuff_system($field) {
  $system["description"] = t("This module inserts...");
  return $system[$field];
}
Normas de codificação

Matriz

$some_array = array('hello', 'world', 'foo' => 'bar');

$form['title'] = array(
  '#type' => 'textfield',
  '#title' => t('Title'),
  '#size' => 60,
  '#maxlength' => 128,
  '#description' => t('The title of your node.'),
);
Normas de codificação

Concatenações de String

 <?php
    $string   =   'Foo' . $bar;
    $string   =   $bar . 'foo';
    $string   =   bar() . 'foo';
    $string   =   'foo' . 'bar';
 ?>

 <?php
    $string = "Foo $bar";
 ?>
Normas de codificação

Concatenações de String

 <?php
    $string   =   'Foo' . $bar;
    $string   =   $bar . 'foo';
    $string   =   bar() . 'foo';
    $string   =   'foo' . 'bar';
 ?>

 <?php
    $string = "Foo $bar";
 ?>
Conceitos gerais

Node
Módulo
Tema
Região, bloco e menu
Usuário, permissão e papel
Taxonomia
Node

Termo genérico para uma parte do conteúdo no
 site
Cada node tem um tipo de conteúdo
Módulo

Coleção de arquivos que contém funcionalidades
Pode usar funções e variáeis do núcle do Drupal
Como criar um módulo?

Criar pasta com nome do módulo
O nome deve conter apenas letras minúsculas e
 sublinhados
Nome do módulo será usado em todos os
 arquivos e funções
Criar arquivo com nome do módulo + sufixo
 .module
Criar arquivo .info para descrição do módulo
Módulos essenciais

Views
Token
Panels
Pathauto
Webform
Módulo - Views

Permite criar lista de conteúdo
Possui API própria que permite outros módulos
 interagirem
Módulo - Token

Pedaço de texto que pode ser colocado na
 marioria dos documentos via espaços
 reservados. Exemplo: %site-name
Módulo - Panels

Permite criar páginas em painéis diferentes com
 total controle do layout e de conteúdo
Módulo - Pathauto

Gera automaticamente caminho alternativo de
 URL para os tipos de conteúdo baseado em
 padrões facilmente ajustáveis (Token)
Módulo - Webform

Permite construir formulários via interface com
 validação dos dados
Gancho (hook)

Permite interagir com o núcleo do Drupal
Cada hook tem um conjunto de parâmetros e tipo
 especificado
Exemplo de gancho
function hook_node_insert($node) {
  db_insert('mytable')
    ->fields(array(
    'nid' => $node->nid,
    'extra' => $node->extra,
  ))
    ->execute();
}

function forum_node_insert($node) {
  if (_forum_node_check_node_type($node)) {
    if (!empty($node->forum_tid)) {
      // faz alguma coisa
    }
  }
}
Tema

Coleção de arquivos que define a camada de
 apresentação
Requer um arquivo .info, onde pode ser definido
 meta dados, folhas de estilo, javascripts,
 regiões dos blocos e outros
Usa arquivos de modelo (.tpl.php)
  Sugestões de modelo
Há um arquivo (template.php) para concentrar
 toda lógia e processamento dos dados
Suporta sub-temas
Sugestão de modelo

Drupal irá usar o modelo mais específico
Exemplo do modelo node.tpl.php

 node--[type|nodeid].tpl.php

 node--nodeid.tpl.php
 node--type.tpl.php
 node.tpl.php
Tema

Dentro do Drupal, a camada de apresentação
 utiliza a função theme(), o qual é passado o
 nome de um componente e uma matriz de
 variáveis

theme('table', array('header' => $header, 'rows' => $rows));




É possível criar uma saída customizada dentro
 do módulo com o gancho hook_theme
Estrutura de arquivo

Arquivos na pasta raíz:
  .htaccess
  authorize.php
  cron.php
  index.php
  install.php
  update.php
  xmlrpc.php
Estrutura de arquivos

Diretórios dentro da raíz:
  database
  files
  includes
  misc
  modules
  profiles
  scripts
  sites
  themes
Estrutura de pastas
Obrigado!
Bibliografia

http://www.drupal.org
http://www.redleafmedia.com/blog/drupal-7-file-struct
http://pt.wikipedia.org

Contenu connexe

Tendances

Wordpress Introdução ao Desenvolvimento de Templates
Wordpress Introdução ao Desenvolvimento de TemplatesWordpress Introdução ao Desenvolvimento de Templates
Wordpress Introdução ao Desenvolvimento de TemplatesWesley R. Bezerra
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009silva.edgar
 
WordPress além dos blogs #fisl14
WordPress além dos blogs #fisl14WordPress além dos blogs #fisl14
WordPress além dos blogs #fisl14Tatiane Pires
 
Angular >= 2 - One Framework Mobile & Desktop
Angular >= 2 - One Framework Mobile & DesktopAngular >= 2 - One Framework Mobile & Desktop
Angular >= 2 - One Framework Mobile & DesktopGDGFoz
 
Programação Orientada a Objetos (POO) com PHP - Parte 1
Programação Orientada a Objetos (POO) com PHP - Parte 1Programação Orientada a Objetos (POO) com PHP - Parte 1
Programação Orientada a Objetos (POO) com PHP - Parte 1Israel Messias
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaCarlos Santos
 
Aplicando Transformação em XML usando XSLT e XSL-FO - 4
Aplicando Transformação em XML usando XSLT e XSL-FO - 4Aplicando Transformação em XML usando XSLT e XSL-FO - 4
Aplicando Transformação em XML usando XSLT e XSL-FO - 4Vivian Motti
 
Construindo temas para Plone com Diazo
Construindo temas para Plone com DiazoConstruindo temas para Plone com Diazo
Construindo temas para Plone com DiazoSimples Consultoria
 
Aplicando Transformação em XML usando XSLT e XSL-FO - 2
Aplicando Transformação em XML usando XSLT e XSL-FO - 2Aplicando Transformação em XML usando XSLT e XSL-FO - 2
Aplicando Transformação em XML usando XSLT e XSL-FO - 2Vivian Motti
 

Tendances (20)

Migrando para o PHP 5
Migrando para o PHP 5Migrando para o PHP 5
Migrando para o PHP 5
 
Palestra
PalestraPalestra
Palestra
 
Php aula1
Php aula1Php aula1
Php aula1
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
 
Wordpress Introdução ao Desenvolvimento de Templates
Wordpress Introdução ao Desenvolvimento de TemplatesWordpress Introdução ao Desenvolvimento de Templates
Wordpress Introdução ao Desenvolvimento de Templates
 
Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009Zend Framework - PHPSP - 2009
Zend Framework - PHPSP - 2009
 
Modulos SNEP
Modulos SNEPModulos SNEP
Modulos SNEP
 
WordPress além dos blogs #fisl14
WordPress além dos blogs #fisl14WordPress além dos blogs #fisl14
WordPress além dos blogs #fisl14
 
Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
 
Estrutura do Projeto
Estrutura do ProjetoEstrutura do Projeto
Estrutura do Projeto
 
Angular >= 2 - One Framework Mobile & Desktop
Angular >= 2 - One Framework Mobile & DesktopAngular >= 2 - One Framework Mobile & Desktop
Angular >= 2 - One Framework Mobile & Desktop
 
Snep arquitetura
Snep arquiteturaSnep arquitetura
Snep arquitetura
 
HTML Principios Básicos
HTML Principios BásicosHTML Principios Básicos
HTML Principios Básicos
 
Programação Orientada a Objetos (POO) com PHP - Parte 1
Programação Orientada a Objetos (POO) com PHP - Parte 1Programação Orientada a Objetos (POO) com PHP - Parte 1
Programação Orientada a Objetos (POO) com PHP - Parte 1
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurança
 
Aplicando Transformação em XML usando XSLT e XSL-FO - 4
Aplicando Transformação em XML usando XSLT e XSL-FO - 4Aplicando Transformação em XML usando XSLT e XSL-FO - 4
Aplicando Transformação em XML usando XSLT e XSL-FO - 4
 
Construindo temas para Plone com Diazo
Construindo temas para Plone com DiazoConstruindo temas para Plone com Diazo
Construindo temas para Plone com Diazo
 
Criando Temas com Diazo
Criando Temas com DiazoCriando Temas com Diazo
Criando Temas com Diazo
 
Diazo para todos
Diazo para todosDiazo para todos
Diazo para todos
 
Aplicando Transformação em XML usando XSLT e XSL-FO - 2
Aplicando Transformação em XML usando XSLT e XSL-FO - 2Aplicando Transformação em XML usando XSLT e XSL-FO - 2
Aplicando Transformação em XML usando XSLT e XSL-FO - 2
 

Similaire à Workshop - Desenvolvimento web com Drupal 7

Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppetDaniel Sobral
 
Workshop Web e WordPress
Workshop Web e WordPressWorkshop Web e WordPress
Workshop Web e WordPressHaste Design
 
Criando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptCriando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptAndre Baltieri
 
ZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoMarcos Bezerra
 
Python e Django
Python e DjangoPython e Django
Python e Djangopugpe
 
Tutorial para criação de módulo no Xoops 2.4
Tutorial para criação de módulo no Xoops 2.4Tutorial para criação de módulo no Xoops 2.4
Tutorial para criação de módulo no Xoops 2.4Fabio Telles Rodriguez
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com PythonLuiz Aldabalde
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com PythonPythOnRio
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super heroElton Minetto
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Helder da Rocha
 
Desenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPDesenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPAndréia Santos
 

Similaire à Workshop - Desenvolvimento web com Drupal 7 (20)

Gestão automática de configuração usando puppet
Gestão automática de configuração usando puppetGestão automática de configuração usando puppet
Gestão automática de configuração usando puppet
 
Workshop Web e WordPress
Workshop Web e WordPressWorkshop Web e WordPress
Workshop Web e WordPress
 
Criando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptCriando APIs com Node e TypeScript
Criando APIs com Node e TypeScript
 
ZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoZF Básico - 1. Introdução
ZF Básico - 1. Introdução
 
Html
HtmlHtml
Html
 
Html
HtmlHtml
Html
 
Python e Django
Python e DjangoPython e Django
Python e Django
 
Tutorial para criação de módulo no Xoops 2.4
Tutorial para criação de módulo no Xoops 2.4Tutorial para criação de módulo no Xoops 2.4
Tutorial para criação de módulo no Xoops 2.4
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
Slides
SlidesSlides
Slides
 
Python 07
Python 07Python 07
Python 07
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 
Php Básico - Parte 2
Php Básico - Parte 2Php Básico - Parte 2
Php Básico - Parte 2
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
 
Desenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPDesenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHP
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 

Workshop - Desenvolvimento web com Drupal 7