Drupal. Desenvolvimento de Módulos



Documentos relacionados
Módulos Customizados. Descomplicando a criação de módulos personalizados para Drupal 7

Facebook Instruções de integração com PayPal

Criando um script simples

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Conteúdo O que é?... 4 Histórico... 4 Onde Baixar?... 4 Diferença entre Firebird e o Interbase... 4 Como instalar?... 4 Instalando o Ibexpert...

INSTALAÇÃO DO MICROSOFT WINDOWS SHAREPOINT SERVICES 2.0

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

ANDROID APPLICATION PROJECT

WF Processos. Manual de Instruções

Criando Frameworks Inteligentes com PHP. Uma abordagem prática: vantagens, aplicações e procedimentos.

Treinamento Plone. Unirio

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

LINUX EDUCACIONAL 3.0

Introdução ao Tableau Server 7.0

Enviando Arquivos para a Neoband

C# - Conexão com MySQL

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Parte I. Demoiselle Mail

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

Lição 1 - Criação de campos calculados em consultas

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

Android e Bancos de Dados

GUIA BÁSICO DA SALA VIRTUAL

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Manipulação de Banco de Dados com Java 1. Objetivos

Acessando um Banco de Dados

SSE 3.0 Servidor de Notificação por . Cadastrando

STK (Start Kit DARUMA) Extensão PHP para DarumaFrameWork

Vendas. Manual do Usuário. Copyright ControleNaNet

Departamento de Informática da UECE. Tutorial Básico para manutenção de site.

PRO2511. MySQL databases Parte III. Escola Politécnica da Universidade de São Paulo. Departamento de Engenharia de Produção

Ajuda das opções Fiery 1.3 (cliente)

Manual Sistema Curumim. Índice

Construindo portais com Plone

Começando com o jseblod: Um tutorial passo-a-passo

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM

Prof. Omero, pág. 63. Banco de Dados InterBase.

Índice. Versão 4.0

Microsoft Access XP Módulo Um

Definições: quando usar cada um?

02 - Usando o SiteMaster - Informações importantes

Manual de Instalação e Configuração para Revendedores e Assinantes Virtual Server.

Backup (cópia de segurança) e restauração de informações no

ZEND F r a m e w o r k

Livro Caixa. Copyright ControleNaNet

COMO INSTALAR ZIM 8.50 WINDOWS

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE SERGIPE

Desenvolvendo Websites com PHP

SCPIWeb. SCPIWebDespRec Aplicação Web para Consulta de Despesas e Receitas ( Lei Complementar nº 131 de 27 Maio de 2009 )

JavaScript (Funções, Eventos e Manipulação de Formulários)

Segurança de Acesso a Banco de Dados no MS SQL Server

INSTALANDO E CONFIGURANDO O MY SQL

Instalando o IIS 7 no Windows Server 2008

Ajuda das opções Fiery 1.3 (servidor)

Instalando o IIS 7 no Windows Server 2008

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES I PROFESSOR RAFAEL BARRETO

Controle de acesso. .com.br

Criação e Configuração do APP do Facebook

IMPORTANTE: O sistema Off-line Dr.Micro é compatível com os navegadores Mozilla Firefox e Internet Explorer.

O Patch [BIBLIOTECA RM e TOTVS RM PORTAL] e [TOTVS Gestão Hospitalar], disponíveis na Central de Download do Portal do Client.

GESTA - UFMG observatório de conflitos ambientais do estado de minas gerais

Curso de Introdução ao Plone. Instrutores Carlos Alberto Alves Meira Erick Gallani

O primeiro passo é habilitar acesso externo através de web service a configuração é bem simples e não exige maiores explicações.

HTML / JAVASCRIPT. A versão atual é o HTML5 (seus predecessores imediatos são HTML 4.01, XHTML 1.1, etc.).

OCOMON PRIMEIROS PASSOS

Guia de administração para a integração do Portrait Dialogue 6.0. Versão 7.0A

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

INTRODUÇÃO AO AMBIENTE MOODLE DA UFPA. Guia rápido

Nota de Aula: Utilização da IDE Code::Blocks

Módulo 1 Configuração de Cursos. Robson Santos da Silva Ms.

Gerenciamento de Projetos

Desenvolvendo plugins WordPress usando Orientação a Objetos

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Procedimentos para Reinstalação do Sisloc

Tutorial do Usuário para utilização do Magento e commerce

Integração com Joomla

TUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!!

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

STK (Start Kit DARUMA) Extensão PHP para DarumaFrameWork

Manual Do Usuário ClinicaBR

Aula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela

Trabalhando com banco de dados

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE ESCOLA AGRÍCOLA DE JUNDIAÍ EAJ - PRONATEC / REDE etec MÓDULO III DESENVOLVIMENTO PROFESSOR ADDSON COSTA

Instalando o Internet Information Services no Windows XP

Tutorial de Consultas no Access Parte 2

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

REP idx. Manual de integração com Ponto Secullum 4

Introdução ao EBSCOhost 2.0

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA

formação em WeB developer

MANUAL DE UTILIZAÇÃO DO ESPAÇO VIRTUAL DE APRENDIZAGEM EVA

Persistência de dados com JPA. Hélder Antero Amaral Nunes

Modelo Cliente/Servidor Por HIARLY ALVES

Transcrição:

Drupal Desenvolvimento de Módulos

O que é o Drupal?

O que é o Drupal? Framework de gestão de conteúdo.

O que é o Drupal? Framework de gestão de conteúdo. O padrão do Drupal é fornecer ferramentas para se definir o tipo, forma e modelo de gestão do conteúdo.

O que é o Drupal? Framework de gestão de conteúdo. O padrão do Drupal é fornecer ferramentas para se definir o tipo, forma e modelo de gestão do conteúdo. Tipos de conteúdo, taxonomia, grupos de usuários, revisões...

O que é o Drupal? Open Source

O que é o Drupal? Open Source LAMP Código Aberto Comunidade Módulos

O que é o Drupal? Extensível: módulos

O que é o Drupal? Módulos (Quase) Tudo são módulos: controle de acesso, conteúdo, menu, etc.

O que é o Drupal? Módulos (Quase) Tudo são módulos: controle de acesso, conteúdo, menu, etc. Hooks e APIs. Mesmo no core.

O que é o Drupal? Módulos (Quase) Tudo são módulos: controle de acesso, conteúdo, menu, etc. Hooks e APIs. Mesmo no core. Milhares de módulos.

Módulos: HOOKS

Módulos: Hooks Hook é forma que os módulos usam para se conectar ao Drupal e aos outros módulos.

Módulos: Hooks Hook é forma que os módulos usam para se conectar ao Drupal e aos outros módulos. É o recurso mais básico, no qual todo o Drupal foi construído.

Módulos: Hooks Hook é forma que os módulos usam para se conectar ao Drupal e aos outros módulos. É o recurso mais básico, no qual todo o Drupal foi construído. É uma função que será chamada em um ponto chave do sistema para executar ações relativas ao módulo.

Módulos: Hooks Como funcionam?

Módulos: Hooks Como funcionam? Existem mais de 80 hooks, um para cada parte do sistema.

Módulos: Hooks Como funcionam? Existem mais de 80 hooks para cada parte do sistema. (Carregar conteúdo, montar um bloco, listar o menu, salvar um conteúdo, enviar um formulário, etc)

Módulos: Hooks Como funcionam? Existem mais de 80 hooks para cada parte do sistema. (Carregar conteúdo, montar um bloco, listar o menu, salvar um conteúdo, enviar um formulário, etc) O módulo registra um função para o hook e o sistema executa a função no momento devido.

Módulos: Hooks Como funcionam? Existem mais de 80 hooks para cada parte do sistema. (Carregar conteúdo, montar um bloco, listar o menu, salvar um conteúdo, enviar um formulário, etc) O módulo registra um função para o hook e o sistema executa a função no momento devido. Essa função vai receber os parâmetros relacionados ao estado do sistema (o menu, o conteúdo ou outro) e executar ações nesse estado.

Módulos: Hooks Como funcionam? Registra-se um hook criando uma função com o modelo: "nome do modulo" + "_" + "nome do hook" A função deve receber os parâmetros relativos ao hook e retornar o estado desejado.

Módulos: Hooks Como funcionam? Se você tem um módulo "meumodulo" e quer registrar um item de menu, cria-se a função: "meumodulo_menu()".

Módulos: Hooks Como funcionam? Se você tem um módulo "meumodulo" e quer registrar um item de menu, cria-se a função: "meumodulo_menu()" "meumodulo_menu" deve retornar os itens de menu a incluir.

Módulos: Hooks Módulos podem criar e oferecer hooks próprios. São mais de 80 Hooks no núcleo do drupal, mais o que cada módulo pode oferecer (cck, node, contentaccess, etc). Alguns Hooks importantes são: form - Formulários nodeapi - Trabalhar com nodes menu - Itens de menu e páginas (urls) block - Blocos de conteúdo user - Controle de usuário cron - Ações agendadas

Módulos: APIs

Módulos: Apis APIs são conjuntos de funções relacionadas a alguma utilidade ou parte do sistema.

Módulos: Apis APIs são conjuntos de funções relacionadas a alguma utilidade ou parte do sistema. Diferentes dos hooks, são para serem chamadas livremente aonde quer que os módulos precisem de suas funcionalidades.

Módulos: Apis APIs são conjuntos de funções relacionadas a alguma utilidade ou parte do sistema. Diferentes dos hooks, são para serem chamadas livremente aonde quer que os módulos precisem de suas funcionalidades. As APIs são basicamente todas as funções fornecidas pelo core e por todos os módulos do Drupal.

Módulos: Apis Então as APIs do drupal são funções fornecidas pelo sistema, como: db_query - Para consultas ao banco de dados t - Para recuperar string traduzidas drupal_set_message - Mensagens para o usuário node_load - Carregar nós/conteúdos user_load - Buscar dados de um usuário form_set_error - Mensagens de erro

Módulos: Apis Toda função de todo módulo é disponível para todo outro módulo, tornando o sistema extremamente padronizado através do reuso de recursos.

Módulos: Apis Toda função de todo módulo é disponível para todo outro módulo, tornando o sistema extremamente padronizado através do reuso de recursos. São milhares de funções disponíveis: Cache API, File API, Field API, Database API, RDF API, Schema API, etc.

Módulos: Apis Toda função de todo módulo é disponível para todo outro módulo, tornando o sistema extremamente padronizado através do reuso de recursos. São milhares de funções disponíveis: Cache API, File API, Field API, Database API, RDF API, Schema API, etc. Mais o que cada módulo pode disponibilizar. Existem muitos módulos que lançam APIs: CCK, Openlayers, CTools e etc.

Criando um Módulo

Criando um módulo Você não precisa criar um módulo.

Criando um módulo Você não precisa criar um módulo. Drupal é muito flexível

Criando um módulo Você não precisa criar um módulo. Drupal é muito flexível Existem milhares de módulos

Criando um módulo Você não precisa criar um módulo. Drupal é muito flexível Existem milhares de módulos Módulos são flexíveis

Criando um módulo Você não precisa criar um módulo. Drupal é muito flexível Existem milhares de módulos Módulos são flexíveis (ctool, cck, views, etc)

Criando um módulo Você não precisa criar um módulo. Drupal é muito flexível Existem milhares de módulos Módulos são flexíveis (ctool, cck, views, etc) Provavelmente o que você precisa está pronto

Criando um módulo Nem tudo está pronto. As vezes você realmente precisa de algo novo.

Criando um módulo Nem tudo está pronto. As vezes você realmente precisa de algo novo. Ainda assim alguém já pode estar trabalhando em algo parecido.

Criando um módulo Nem tudo está pronto. As vezes você realmente precisa de algo novo. Ainda assim alguém já pode estar trabalhando em algo parecido. Existe um grupo na comunidade para as ideias de novos módulos.

Criando um módulo Nem tudo está pronto. As vezes você realmente precisa de algo novo. Ainda assim alguém já pode estar trabalhando em algo parecido. Existe um grupo na comunidade para as ideias de novos módulos. Podem já estar começando algo parecido, ou decidir ajudar-te.

Criando um módulo A comunidade Drupal preza muito por padronização e qualidade. Efetua-se a fusão de módulos semelhantes. Maior qualidade, mais pessoas em um projeto.

Criando um módulo E quando você realmente precisa desenvolver um módulo?

Criando um Módulo: Mão na massa.

Criando um módulo: mão na massa. Estrutura básica:

Criando um módulo: mão na massa. Estrutura básica: nome_do_modulo.info nome_do_modulo.install nome_do_modulo.module

Criando um módulo: mão na massa. nome_do_modulo.info

Criando um módulo: mão na massa. nome_do_modulo.info Contêm a descrição e informações básicas do módulo.

Criando um módulo: mão na massa. nome_do_modulo.info Contêm a descrição e informações básicas do módulo. name description core version dependencies package

Criando um módulo: mão na massa. nome_do_modulo.info name = Meu Primeiro Módulo description = Teste de módulos do Drupal version = 0.1 core = 6.x dependencies = cck

Criando um módulo: mão na massa. nome_do_modulo.install

Criando um módulo: mão na massa. nome_do_modulo.install Arquivo PHP que implementa os hooks de instalação.

Criando um módulo: mão na massa. nome_do_modulo.install <?php function nome_do_modulo_install() {} function nome_do_modulo_uninstall() {}?>

Criando um módulo: mão na massa. nome_do_modulo.install Dentro de cada método vai os passos extras a instalação.

Criando um módulo: mão na massa. nome_do_modulo.install Dentro de cada método vai os passos extras a instalação. Um uso comum é a criação de tabelas no banco de dados.

Criando um módulo: mão na massa. nome_do_modulo.install Dentro de cada método vai os passos extras a instalação. Um uso comum é a criação de tabelas no banco de dados. Com o hook Schema.

Criando um módulo: mão 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'); }?>

Criando um módulo: mão na massa. nome_do_modulo.install function nome_do_modulo_schema() { $schema['nome_da_tabela'] = array( 'description'=>'descrição', 'fields'=>array( 'id'=>array('type'=>'serial','not null'=>true), 'field_name'=>array('type'=>'text','default'=>'') ), 'primary key'=> array('id') ); return $schema; }

Criando um módulo: mão na massa. nome_do_modulo.module

Criando um módulo: mão na massa. nome_do_modulo.module É onde toda mágica acontece.

Criando um módulo: mão na massa. nome_do_modulo.module É onde toda mágica acontece. É arquivo PHP com as funcionalidades do módulo.

Criando um módulo: mão na massa. nome_do_modulo.module É onde toda mágica acontece. É arquivo PHP com as funcionalidades do módulo. Programamos o módulo implementando os Hooks necessários.

Criando um módulo: mão na massa. nome_do_modulo.module Se precisamos adicionar uma página, implementamos o hook "menu".

Criando um módulo: mão na massa. nome_do_modulo.module <?php function nome_do_modulo_menu() { $menu['caminho/da/pagina'] = array( 'title' => 'Página do módulo', 'description' => 'É a página de teste.', 'page callback' => 'nome_do_modulo_montar_pagina', ); return $menu; }?>

Criando um módulo: mão na massa. nome_do_modulo.module <?php //... function nome_do_modulo_montar_pagina() { return theme('node',array('content'=>"conteúdo da página")); }?>

Criando um módulo: mão na massa. nome_do_modulo.module Implementamos o hook menu e retornamos o conjuntos de páginas do nosso módulo.

Criando um módulo: mão na massa. nome_do_modulo.module Implementamos o hook menu e retornamos o conjuntos de páginas do nosso módulo. Usamos a API de temas para montar o output da página.

Para instalar um módulo basta copiar sua estrutura para dentro da pasta modules da instalação do drupal. O nome da pasta é o nome do modulo (/drupal/modules/nome_do_modulo). Depois basta ativar o modulo no painel de administração do site.

Criando um Módulo: Exemplo

Criando um módulo: exemplo. Módulo "contact_list".

Criando um módulo: exemplo contact_list. Módulo "contact_list". Adicionar e listar contatos.

Criando um módulo: exemplo contact_list. Módulo "contact_list". Adicionar e listar contatos. Criar pasta "contact_list" dentro do modules do drupal.

Criando um módulo: 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

Criando um módulo: exemplo contact_list. Em seguida preparamos o contact_list.install. Para as instruções de instalação, vamos criar uma tabela apenas, usando o hook de schema. A tabela vai ter um "id" numérico com auto increment, "name" como string e email como string.

Criando um módulo: exemplo contact_list. contact_list.install <?php function contact_list_schema() {} function contact_list_install() {} function contact_list_uninstall() {}?>

Criando um módulo: 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;

Criando um módulo: exemplo contact_list. contact_list.install function contact_list_install() { drupal_install_schema('contact_list'); } function contact_list_uninstall() { drupal_uninstall_schema('contact_list'); }

Criando um módulo: exemplo contact_list.

Criando um módulo: exemplo contact_list. Agora começamos a implementar as funcionalidades no contact_list.module. Vamos começar criando a página para adicionar os contatos. Vamos usar o hook menu, a api de forms, de tradução e banco de dados.

Criando um módulo: 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; }?>

Criando um módulo: exemplo contact_list.

Criando um módulo: 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')); //... }

Criando um módulo: 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; }

Criando um módulo: 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)); }

Criando um módulo: exemplo contact_list.

Criando um módulo: exemplo contact_list. Agora criamos então a listagem de contatos. Vamos usar mais do hook menu, da api de tradução e api de temas.

Criando um módulo: 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; }

Criando um módulo: exemplo contact_list.

Criando um módulo: 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); }

Criando um módulo: exemplo contact_list.

É isso!

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 - Padrões http://drupal.org/node/22573 - Vários HowTos