Você está na página 1de 94

Drupal

Desenvolvimento de Mdulos

Drupal - Desenvolvimento de Mdulos

O que o Drupal?

Drupal - Desenvolvimento de Mdulos


O que o Drupal?

Framework de gesto de contedo.

Drupal - Desenvolvimento de Mdulos


O que o Drupal?

Framework de gesto de contedo.


O padro do Drupal fornecer ferramentas para se definir o tipo, forma e modelo de gesto do contedo.

Drupal - Desenvolvimento de Mdulos


O que o Drupal?

Framework de gesto de contedo.


O padro do Drupal fornecer ferramentas para se definir o tipo, forma e modelo de gesto do contedo. Tipos de contedo, taxonomia, grupos de usurios, revises...

Drupal - Desenvolvimento de Mdulos


O que o Drupal?

Open Source

Drupal - Desenvolvimento de Mdulos


O que o Drupal?

Open Source
LAMP Cdigo Aberto Comunidade Mdulos

Drupal - Desenvolvimento de Mdulos


O que o Drupal?

Extensvel: mdulos

Drupal - Desenvolvimento de Mdulos


O que o Drupal?

Mdulos
(Quase) Tudo so mdulos:
contedo, menu, etc. controle de acesso,

Drupal - Desenvolvimento de Mdulos


O que o Drupal?

Mdulos
(Quase) Tudo so mdulos:
contedo, menu, etc. controle de acesso,

Hooks e APIs. Mesmo no core.

Drupal - Desenvolvimento de Mdulos


O que o Drupal?

Mdulos
(Quase) Tudo so mdulos:
contedo, menu, etc. controle de acesso,

Hooks e APIs. Mesmo no core.

Milhares de mdulos.

Drupal - Desenvolvimento de Mdulos

Mdulos: HOOKS

Drupal - Desenvolvimento de Mdulos


Mdulos: Hooks

Hook forma que os mdulos usam para se conectar ao Drupal e aos outros mdulos.

Drupal - Desenvolvimento de Mdulos


Mdulos: Hooks

Hook forma que os mdulos usam para se conectar ao Drupal e aos outros mdulos. o recurso mais bsico, no qual todo o Drupal foi construdo.

Drupal - Desenvolvimento de Mdulos


Mdulos: Hooks

Hook forma que os mdulos usam para se conectar ao Drupal e aos outros mdulos. o recurso mais bsico, no qual todo o Drupal foi construdo. uma funo que ser chamada em um ponto chave do sistema para executar aes relativas ao mdulo.

Drupal - Desenvolvimento de Mdulos


Mdulos: Hooks

Como funcionam?

Drupal - Desenvolvimento de Mdulos


Mdulos: Hooks

Como funcionam?
Existem mais de 80 hooks, um para cada parte do sistema.

Drupal - Desenvolvimento de Mdulos


Mdulos: Hooks

Como funcionam?
Existem mais de 80 hooks para cada parte do sistema. (Carregar contedo, montar um bloco, listar o menu, salvar um contedo, enviar um formulrio, etc)

Drupal - Desenvolvimento de Mdulos


Mdulos: Hooks

Como funcionam?
Existem mais de 80 hooks para cada parte do sistema. (Carregar contedo, montar um bloco, listar o menu, salvar um contedo, enviar um formulrio, etc) O mdulo registra um funo para o hook e o sistema executa a funo no momento devido.

Drupal - Desenvolvimento de Mdulos


Mdulos: Hooks

Como funcionam?
Existem mais de 80 hooks para cada parte do sistema. (Carregar contedo, montar um bloco, listar o menu, salvar um contedo, enviar um formulrio, etc) O mdulo registra um funo para o hook e o sistema executa a funo no momento devido. Essa funo vai receber os parmetros relacionados ao estado do sistema (o menu, o contedo ou outro) e executar aes nesse estado.

Drupal - Desenvolvimento de Mdulos


Mdulos: Hooks

Como funcionam?
Registra-se um hook criando uma funo com o modelo: "nome do modulo" + "_" + "nome do hook" A funo deve receber os parmetros relativos ao hook e retornar o estado desejado.

Drupal - Desenvolvimento de Mdulos


Mdulos: Hooks

Como funcionam?
Se voc tem um mdulo "meumodulo" e quer registrar um item de menu, cria-se a funo: "meumodulo_menu()".

Drupal - Desenvolvimento de Mdulos


Mdulos: Hooks

Como funcionam?
Se voc tem um mdulo "meumodulo" e quer registrar um item de menu, cria-se a funo: "meumodulo_menu()" "meumodulo_menu" deve retornar os itens de menu a incluir.

Drupal - Desenvolvimento de Mdulos


Mdulos: Hooks Mdulos podem criar e oferecer hooks prprios. So mais de 80 Hooks no ncleo do drupal, mais o que cada mdulo pode oferecer (cck, node, contentaccess, etc). Alguns Hooks importantes so: form - Formulrios nodeapi - Trabalhar com nodes menu - Itens de menu e pginas (urls) block - Blocos de contedo user - Controle de usurio cron - Aes agendadas

Drupal - Desenvolvimento de Mdulos

Mdulos: APIs

Drupal - Desenvolvimento de Mdulos


Mdulos: Apis

APIs so conjuntos de funes relacionadas a alguma utilidade ou parte do sistema.

Drupal - Desenvolvimento de Mdulos


Mdulos: Apis

APIs so conjuntos de funes relacionadas a alguma utilidade ou parte do sistema.

Diferentes dos hooks, so para serem chamadas livremente aonde quer que os mdulos precisem de suas funcionalidades.

Drupal - Desenvolvimento de Mdulos


Mdulos: Apis

APIs so conjuntos de funes relacionadas a alguma utilidade ou parte do sistema.

Diferentes dos hooks, so para serem chamadas livremente aonde quer que os mdulos precisem de suas funcionalidades. As APIs so basicamente todas as funes fornecidas pelo core e por todos os mdulos do Drupal.

Drupal - Desenvolvimento de Mdulos


Mdulos: Apis

Ento as APIs do drupal so funes fornecidas pelo sistema, como: db_query - Para consultas ao banco de dados t - Para recuperar string traduzidas drupal_set_message - Mensagens para o usurio node_load - Carregar ns/contedos user_load - Buscar dados de um usurio form_set_error - Mensagens de erro

Drupal - Desenvolvimento de Mdulos


Mdulos: Apis

Toda funo de todo mdulo disponvel para todo outro mdulo, tornando o sistema extremamente padronizado atravs do reuso de recursos.

Drupal - Desenvolvimento de Mdulos


Mdulos: Apis

Toda funo de todo mdulo disponvel para todo outro mdulo, tornando o sistema extremamente padronizado atravs do reuso de recursos. So milhares de funes disponveis: Cache API, File API,
Field API, Database API, RDF API, Schema API, etc.

Drupal - Desenvolvimento de Mdulos


Mdulos: Apis

Toda funo de todo mdulo disponvel para todo outro mdulo, tornando o sistema extremamente padronizado atravs do reuso de recursos. So milhares de funes disponveis: Cache API, File API,
Field API, Database API, RDF API, Schema API, etc.

Mais o que cada mdulo pode disponibilizar. Existem muitos mdulos que lanam APIs: CCK, Openlayers, CTools e etc.

Drupal - Desenvolvimento de Mdulos

Criando um Mdulo

Drupal - Desenvolvimento de Mdulos


Criando um mdulo

Voc no precisa criar um mdulo.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo

Voc no precisa criar um mdulo.


Drupal muito flexvel

Drupal - Desenvolvimento de Mdulos


Criando um mdulo

Voc no precisa criar um mdulo.


Drupal muito flexvel Existem milhares de mdulos

Drupal - Desenvolvimento de Mdulos


Criando um mdulo

Voc no precisa criar um mdulo.


Drupal muito flexvel Existem milhares de mdulos Mdulos so flexveis

Drupal - Desenvolvimento de Mdulos


Criando um mdulo

Voc no precisa criar um mdulo.


Drupal muito flexvel Existem milhares de mdulos Mdulos so flexveis (ctool, cck, views, etc)

Drupal - Desenvolvimento de Mdulos


Criando um mdulo

Voc no precisa criar um mdulo.


Drupal muito flexvel Existem milhares de mdulos Mdulos so flexveis (ctool, cck, views, etc) Provavelmente o que voc precisa est pronto

Drupal - Desenvolvimento de Mdulos


Criando um mdulo

Nem tudo est pronto.


As vezes voc realmente precisa de algo novo.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo

Nem tudo est pronto.


As vezes voc realmente precisa de algo novo. Ainda assim algum j pode estar trabalhando em algo parecido.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo

Nem tudo est pronto.


As vezes voc realmente precisa de algo novo. Ainda assim algum j pode estar trabalhando em algo parecido. Existe um grupo na comunidade para as ideias de novos mdulos.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo

Nem tudo est pronto.


As vezes voc realmente precisa de algo novo. Ainda assim algum j pode estar trabalhando em algo parecido. Existe um grupo na comunidade para as ideias de novos mdulos. Podem j estar comeando algo parecido, ou decidir ajudar-te.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo

A comunidade Drupal preza muito por padronizao e qualidade. Efetua-se a fuso de mdulos semelhantes. Maior qualidade, mais pessoas em um projeto.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo

E quando voc realmente precisa desenvolver um mdulo?

Drupal - Desenvolvimento de Mdulos

Criando um Mdulo: Mo na massa.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

Estrutura bsica:

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

Estrutura bsica:
nome_do_modulo.info nome_do_modulo.install nome_do_modulo.module

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.info

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.info
Contm a descrio e informaes bsicas do mdulo.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.info
Contm a descrio e informaes bsicas do mdulo. name description core version dependencies package

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.info
name = Meu Primeiro Mdulo description = Teste de mdulos do Drupal version = 0.1 core = 6.x dependencies = cck

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.install

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.install Arquivo PHP que implementa os hooks de instalao.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.install
<?php function nome_do_modulo_install() {} function nome_do_modulo_uninstall() {} ?>

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.install
Dentro de cada mtodo vai os passos extras a instalao.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.install
Dentro de cada mtodo vai os passos extras a instalao. Um uso comum a criao de tabelas no banco de dados.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.install
Dentro de cada mtodo vai os passos extras a instalao. Um uso comum a criao de tabelas no banco de dados. Com o hook Schema.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa. nome_do_modulo.install
<?php function nome_do_modulo_schema() {} function nome_do_modulo_install() { drupal_install_schema('nome_do_modulo'); } function nome_do_modulo_uninstall() {
drupal_uninstall_schema('nome_do_modulo');

} ?>

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa. nome_do_modulo.install
function nome_do_modulo_schema() { $schema['nome_da_tabela'] = array( 'description'=>'descrio', 'fields'=>array( 'id'=>array('type'=>'serial','not null'=>true), 'field_name'=>array('type'=>'text','default'=>'') ), 'primary key'=> array('id') ); return $schema; }

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.module

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.module
onde toda mgica acontece.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.module
onde toda mgica acontece. arquivo PHP com as funcionalidades do mdulo.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.module
onde toda mgica acontece. arquivo PHP com as funcionalidades do mdulo. Programamos o mdulo implementando os Hooks necessrios.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.module
Se precisamos adicionar uma pgina, implementamos o hook "menu".

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.module
<?php function nome_do_modulo_menu() { $menu['caminho/da/pagina'] = array( 'title' => 'Pgina do mdulo', 'description' => ' a pgina de teste.', 'page callback' => 'nome_do_modulo_montar_pagina', ); return $menu; } ?>

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.module
<?php // ... function nome_do_modulo_montar_pagina() { return theme('node',array('content'=>"Contedo da pgina")); } ?>

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.module
Implementamos o hook menu e retornamos o conjuntos de pginas do nosso mdulo.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: mo na massa.

nome_do_modulo.module
Implementamos o hook menu e retornamos o conjuntos de pginas do nosso mdulo. Usamos a API de temas para montar o output da pgina.

Drupal - Desenvolvimento de Mdulos


Para instalar um mdulo basta copiar sua estrutura para dentro da pasta modules da instalao do drupal. O nome da pasta o nome do modulo (/drupal/modules/nome_do_modulo). Depois basta ativar o modulo no painel de administrao do site.

Drupal - Desenvolvimento de Mdulos

Criando um Mdulo: Exemplo

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo.

Mdulo "contact_list".

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list.

Mdulo "contact_list". Adicionar e listar contatos.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list.

Mdulo "contact_list". Adicionar e listar contatos. Criar pasta "contact_list" dentro do modules do drupal.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list.

Primeiro preparamos o contact_list.info.


name = Lista de contatos description = Permite montar uma lista de contatos core = 6.x version = 0.1

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list.

Em seguida preparamos o contact_list.install. Para as instrues de instalao, vamos criar uma tabela apenas, usando o hook de schema. A tabela vai ter um "id" numrico com auto increment, "name" como string e email como string.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list.

contact_list.install <?php function contact_list_schema() {} function contact_list_install() {} function contact_list_uninstall() {} ?>

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list.

contact_list.install
function contact_list_schema() { $schema['contact_list'] = array( 'fields'=>array( 'id'=>array('type'=>'serial'), 'name'=>array('type'=>'varchar','length'=>255), 'email'=>array('type'=>'varchar','length'=>255)), 'primary key'=>'id'); return $schema; }

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list.

contact_list.install
function contact_list_install() { drupal_install_schema('contact_list'); } function contact_list_uninstall() { drupal_uninstall_schema('contact_list'); }

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list.

Agora comeamos a implementar as funcionalidades no contact_list.module. Vamos comear criando a pgina para adicionar os contatos. Vamos usar o hook menu, a api de forms, de traduo e banco de dados.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list. contact_list.module <?php function contact_list_menu() { $menu['admin/settings/contact_list'] = array( 'title'=>'Adicionar contatos a lista', 'page callback'=>'drupal_get_form', 'page arguments'=>array('contact_list_admin'), 'access arguments'=>array('access administration pages')); return $menu; } ?>

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list. contact_list.module function contact_list_admin() { $form['fields'] = array('#type'=>'fieldset','#title'=>t('Contact')); $form['submit'] = array( '#type'=>'submit', '#value'=>t('Save'), '#submit'=>array('contact_list_admin_submit')); //... }

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list. contact_list.module function contact_list_admin() { //... $form['fields']['name'] = array( '#type'=>'textfield', '#ttile'=>t('Name')); $form['fields']['email'] = array( '#type'=>'textfield', '#ttile'=>t('Email')); return $form; }

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list. contact_list.module function contact_list_admin_submit($form,$data) { $name = $data['values']['name']; $email = $data['values']['email']; $sql = 'INSERT INTO {contact_list} (name,email) VALUES ('%s','%s');"; db_query($sql,array($name,$email)); }

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list.

Agora criamos ento a listagem de contatos. Vamos usar mais do hook menu, da api de traduo e api de temas.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list. contact_list.module function contact_list_menu() { // (...) $menu['contact_list'] = array( 'title'=>'Lista de contatos', 'page callback'=>'contact_list_page', 'access callback'=>TRUE ); return $menu; }

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list.

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list. contact_list.module function contact_list_page() { $headers = array(t('Name'),t('E-mail')); $rows = array(); $query = db_query('SELECT name,email FROM {contact_list}'); while($row = db_fetch_array($query)) { $rows[] = array($row['name'],$row['email']); } return theme('table',$headers,$rows); }

Drupal - Desenvolvimento de Mdulos


Criando um mdulo: exemplo contact_list.

Drupal - Desenvolvimento de Mdulos

isso!

Drupal - Desenvolvimento de Mdulos


Links

http://drupal.org/ - Drupal http://api.drupal.org/api/group/hooks - HOOKS http://api.drupal.org/api - API http://drupal.org/project/modules - Modulos http://groups.drupal.org/contributed-module-ideas http://drupal.org/contributors-guide - Guia para desenvolver http://drupal.org/coding-standards - Padres http://drupal.org/node/22573 - Vrios HowTos

Você também pode gostar