desenvolvimento web com drupal 6

162
Desenvolvimento Web com Drupal 6 Prof. Vinícius de Paula

Upload: viniciusdepaula

Post on 17-Dec-2014

4.547 views

Category:

Technology


0 download

DESCRIPTION

Desenvolvimento Web com Drupal 6

TRANSCRIPT

Page 1: Desenvolvimento Web com Drupal 6

Desenvolvimento Web com Drupal 6

Prof. Vinícius de Paula

Page 2: Desenvolvimento Web com Drupal 6

Sociedade da InformaçãoVivemos a chamada sociedade da informação, ou talvez mais adequadamente, a sociedade do conhecimento. Nos países de economias mais dinâmicas, estima-se que

cerca de 65% da capacidade de mão-de-obra esteja ocupada com a produção, o tratamento e a disseminação de informações.

Cada vez mais, as organizações, sejam privadas ou públicas, dependem da informação para levar a cabo seus objetivos.

Page 3: Desenvolvimento Web com Drupal 6

Informação como EstratégiaNo mundo dos negócios, a informação assume uma dimensão estratégica. A informação é a principal matéria prima para todo e

qualquer processo decisório; Toda decisão, por mais simples que seja, envolve

informações.

Page 4: Desenvolvimento Web com Drupal 6

O que é CMS? CMS (Content Management System) é um sistema de

gerenciamento de conteúdo, cujo objetivo é exatamente o de estruturar e facilitar a criação, administração, distribuição, publicação e disponibilidade da informação.

Page 5: Desenvolvimento Web com Drupal 6

Principais Características Facilidade no Gerenciamento de ConteúdoNão é necessário saber programar para criar, editar e gerenciar conteúdo. ColaboratividadeQuem esta com a informação é o responsável por publicá-la.

Page 6: Desenvolvimento Web com Drupal 6

Vantagens Estruturação do processo de autoria; Harmonia estética com o resto do site e demais

conteúdos; Melhor estruturação da navegação; Permissão granular de acesso às informações

publicadas; Gerenciamento de versão dos conteúdos; Diminuição dos custos de manutenção.

Page 7: Desenvolvimento Web com Drupal 6

Exemplos de CMS

Page 8: Desenvolvimento Web com Drupal 6

Qual CMS Utilizar?

É a melhor escolha para sites simples, sem grande complexidade.

É recomendado para jornais e portais de comunicação. Exige diversas configurações no sistema operacional.

Não é a melhor escolha para sites com grande número de editores de conteúdo.

É a melhor escolha para sites complexos.

Page 9: Desenvolvimento Web com Drupal 6

Comparativo

A idealware é uma conceituada organização que realiza pesquisas sobre softwares sem fins lucrativos.Em março de 2009, ela realizou uma pesquisa comparando as principais ferramentas de CMS do mercado. Participaram da pesquisa mais de 20 especialistas; Foram utilizados 12 quesitos para avaliação.

Page 10: Desenvolvimento Web com Drupal 6
Page 11: Desenvolvimento Web com Drupal 6

Qual o significado de Drupal?

{holandês} druppel

pronuncia-se Drupal {Inglês}

quer dizer Drop {Inglês}

Page 12: Desenvolvimento Web com Drupal 6

O que é Drupal? É um Sistema Gerenciador de Conteúdos; Escrito em PHP; Framework de desenvolvimento; Ênfase na colaboração entre os usuários; Open Source (GPL); Totalmente compatível com W3C (W3C compliant).

Page 13: Desenvolvimento Web com Drupal 6

Breve Histórico Criado pelo belga Dries Buytaert; Lançado em 2001; Derivado do projeto drop.org; Versão 5 lançada em janeiro de 2007; Atualmente esta na versão 7.

Page 14: Desenvolvimento Web com Drupal 6

Principais Características Confiável e Robusto; Eficiente; Flexível.

Page 15: Desenvolvimento Web com Drupal 6

Drupal para os administradores Fácil de instalar e configurar; Intuitivo e auto-explicativo; Altamente configurável.

Page 16: Desenvolvimento Web com Drupal 6

Drupal para os usuários Fácil de configurar; Intuitivo e auto-explicativo; Organizado.

Page 17: Desenvolvimento Web com Drupal 6

Onde Utilizar o Drupal Portais Corporativos; Sites de Comunidades; Sites Pessoais; Sites Internacionais; Educação; Arte, Música e Multimídia.

Page 18: Desenvolvimento Web com Drupal 6

Quem utiliza o Drupal?

Page 19: Desenvolvimento Web com Drupal 6
Page 20: Desenvolvimento Web com Drupal 6
Page 21: Desenvolvimento Web com Drupal 6
Page 22: Desenvolvimento Web com Drupal 6
Page 23: Desenvolvimento Web com Drupal 6
Page 24: Desenvolvimento Web com Drupal 6

Conceitos eCaracterísticas

Page 25: Desenvolvimento Web com Drupal 6

Tecnologias Envolvidas

Linguagem PHP

Banco de Dados MySQL, PostgreSQL

Servidor Web Apache, lighttpd, IIS

Sistema Operacional Linux, BSD, Mac OS X, Windows, Solaris

Page 26: Desenvolvimento Web com Drupal 6

Requisitos para Instalação

Linguagem PHP 4.3.5 ou superiorPHP 5.2.x (recomendado)

Banco de Dados MySQL 4.1 ou 5.0 (recomendado)PostgreSQL 7.4 ou superior

Servidor Web Apache 1.3 ou 2.x IIS 5, 6, e 7

Page 27: Desenvolvimento Web com Drupal 6

Núcleo do Drupal (Drupal Core)

Gerenciamento deConteúdo

Gerenciamento deUsuários

Gerenciamento deSessão

Pseudônimo deURL

Localização Templates Organização Log de Eventos

Biblioteca de Funções

Page 28: Desenvolvimento Web com Drupal 6

MódulosO Drupal é um framework modular: Novas funcionalidades são incluídas em módulos; Módulos podem ser habilitados ou desabilitados; Módulos são plugins que extendem as funcionalidades

do Drupal.

Page 29: Desenvolvimento Web com Drupal 6

MódulosGaleria

deImagens

E-commerce AdSense MóduloCustomizado

Fóruns EditoresWYSIWYG

Calendário de

Eventos

Gruposde

Trabalho

Gerenciamentode

Conteúdo

Gerenciamentode

Usuários

Gerenciamentode

Sessão

Pseudônimode

URL

Localização Templates OrganizaçãoLog de

Eventos

Biblioteca de Funções

Page 30: Desenvolvimento Web com Drupal 6

Hooks (Ganchos) Permite que os módulos interajam com o núcleo do

Drupal. A maneira mais comum de interagir com

funcionalidades do núcleo do Drupal é implementando “ganchos” nos módulos.

Page 31: Desenvolvimento Web com Drupal 6

Themes (Temas) Representa a aparência do site; O Drupal suporta diversas abordagens para a criação

de templates: Smarty, Template Attribute Language for PHP (PHPTAL) e PHPTemplate.

Page 32: Desenvolvimento Web com Drupal 6

Nodes (Nós) É uma unidade mínima de conteúdo; Cada conteúdo indexado pelo Drupal recebe um

identificador de nó. Seja uma enquete, uma história, uma página de livro,

uma imagem, etc.

Page 33: Desenvolvimento Web com Drupal 6

Nodes (Nós)

Tipos de conteúdo derivando de nó

Page 34: Desenvolvimento Web com Drupal 6

Blocks (Blocos) Representa um tipo de conteúdo a ser apresentado na

página; Tipicamente, são colocados no sidebar, header ou

footer da página; As regiões onde os blocos podem ser posicionados são

definidas nos temas.

Page 35: Desenvolvimento Web com Drupal 6

Estrutura de Diretórios

Contém as bibliotecas e funções utilizadas pelo Drupal.

Armazena os arquivos JavaScript, ícones e imagens da instalação padrão do Drupal.

Contém o núcleo dos módulos, cada módulo está em seu próprio diretório. .

Page 36: Desenvolvimento Web com Drupal 6

Estrutura de Diretórios

Contém os diferentes perfis de instalação para o site.

Contém as modificações feitas no Drupal em formulários de configuração, módulos e temas.

Page 37: Desenvolvimento Web com Drupal 6

Estrutura de Diretórios

Contém scripts para a checagem de sintaxe, limpeza de código, executarcomandos no Drupal via linha de comando e de manipulação com o Crontab.

Contém os arquivos do tema do Drupal.

Page 38: Desenvolvimento Web com Drupal 6

Estrutura de Arquivos

Arquivo utilizado para executar tarefas periódicas. Ex.: cálculo deestatísticas, etc.

Arquivo principal que responde as requisições feitas no diretório raiz.

Arquivo responsável por iniciar a instalação do Drupal.

Page 39: Desenvolvimento Web com Drupal 6

Estrutura de Arquivos

Arquivo contendo a implementação padrão para robots exclusion standard.

Arquivo responsável por atualizar o schema do banco de dados após uma atualização de versão do Drupal.

Arquivo responsável por receber requisições XML-RPC.

Page 40: Desenvolvimento Web com Drupal 6

Instalação do Drupal

Page 41: Desenvolvimento Web com Drupal 6

1) Acesse: http://127.0.0.1/

Page 42: Desenvolvimento Web com Drupal 6

2) Copie o arquivo sites\default\default.settings.php e o renomeie para settings.php. Em seguida de um refresh na página.

Page 43: Desenvolvimento Web com Drupal 6

3) Acesse: http://127.0.0.1/phpmyadmin/e crie um novo banco de dados chamado drupal

Page 44: Desenvolvimento Web com Drupal 6

4) Clique no link Privilégios e em seguida Adicionar novo usuário

Page 45: Desenvolvimento Web com Drupal 6

5) Informe o nome de usuário, servidor e senha. Em seguida clique em Executar

Page 46: Desenvolvimento Web com Drupal 6

6) Selecione o banco de dados drupal e

clique em executar.

Page 47: Desenvolvimento Web com Drupal 6

7) Selecione todos os privilégios

e clique em Executar.

Page 48: Desenvolvimento Web com Drupal 6

8) Acesse a página de instalação do Drupal

e informe os dados de acesso ao banco de dados.

Page 49: Desenvolvimento Web com Drupal 6
Page 50: Desenvolvimento Web com Drupal 6

9) Informe os dados do site e do administrador.

Page 51: Desenvolvimento Web com Drupal 6

Clique em Save and continue.

Page 52: Desenvolvimento Web com Drupal 6
Page 53: Desenvolvimento Web com Drupal 6

Acesse: http://127.0.0.1/

Page 54: Desenvolvimento Web com Drupal 6

Pós InstalaçãoApós a instalação, crie os seguintes diretórios em sites\all: modules themes libraries

Page 55: Desenvolvimento Web com Drupal 6

Exercícios1. Realize a instalação do Xamp.

2. Realize a instalação do Drupal.

Page 56: Desenvolvimento Web com Drupal 6

Administração doDrupal

Page 57: Desenvolvimento Web com Drupal 6

Administração do DrupalA administração do Drupal é dividida em 5 áreas: Content management: gerenciamento do conteúdo do site. Site building: controle da aparência do site. Qualquer alteração

no layout pode ser realizada nesta área. Site configuration: configurações básicas do site como o

comportamento do site, nome, configurações de email, cache, data e hora, etc.

User management: gerenciamento de usuários do site, grupo e o acesso aos recursos do site.

Reports: relatórios gerenciais sobre o site.

Page 58: Desenvolvimento Web com Drupal 6

Fluxo Básico de Administração

2. Funcionalidades Adicionais (Modules)

1. Configuraçãodo site (Settings)

4. Postagem de conteúdo(Nodes)

3. Customização de layout (Themes)

Page 59: Desenvolvimento Web com Drupal 6

PrincipaisConfigurações

Page 60: Desenvolvimento Web com Drupal 6

Principais Configurações Error reportingPor padrão, os logs de erro são gerados em arquivo e impressos na tela. Quando o site estiver pronto para produção é recomendado alterar esta configuração para que os logs de erro sejam gerados somente no arquivo de logs. Input FormatVocê pode configurar as formatações (xHTML e PHP) que serão aceitas quando os usuários digitarem tags nos formulários. Como boa prática de segurança é recomendado que esta configuração seja Filtered HTML.

Page 61: Desenvolvimento Web com Drupal 6

Principais Configurações PerformanceDurante o desenvolvimento, é recomendado que o cache esteja desativado. Quando o site estiver pronto para produção o cache deve ser alterado para normal. Site information Além do nome do site, podemos adicionar um slogan, a missão do site e uma mensagem no rodapé do site. Site maintenance Se o site precisar ficar indisponível por algum motivo, podemos adicionar uma mensagem do tipo: “Site em manutenção” para os usuários.

Page 62: Desenvolvimento Web com Drupal 6

Exercícios3. Realize a alteração das seguintes configurações:a) Geração de logs de erro;b) Formato de tags aceitas;c) Performance;d) Informações do site;e) Coloque o site fora do ar, e apresente a seguinte mensagem: “Desculpe o transtorno...”.

Page 63: Desenvolvimento Web com Drupal 6

Site “fora do ar”?Para colocar o site “no ar” novamente, execute os seguintes comandos via PHPMyAdmin:

UPDATE variable SET value = 's:1:"0";'

WHERE name='site_offline';

DELETE FROM cache WHERE cid = 'variables';

Page 64: Desenvolvimento Web com Drupal 6

Instalaçãode Módulos

Page 65: Desenvolvimento Web com Drupal 6

Instalação de Módulos1. Faça o download do módulo de sua preferência na página oficial de módulos do Drupal: http://drupal.org/project/Modules2. Descompacte o arquivo do módulo dentro do diretório: modulesCaso seja utilizado o recurso de multi-site, o arquivo deve serdescompactado em: sites/all/modules3. Leia as instruções de instalação do módulo no arquivo INSTALL.txt4. Ative o módulo em: Administrar › Construção do site > Módulos5. Após ativado, as configurações do módulo podem ser realizadas em: Administrar › Configuração do site

Page 66: Desenvolvimento Web com Drupal 6

MódulosEssenciais

Page 67: Desenvolvimento Web com Drupal 6

Administration menu Este módulo habilita um menu “drop down” de navegação com todas as opções administrativas.

Page 68: Desenvolvimento Web com Drupal 6

WYSIWYG API (What You See Is What You Get) Este módulo habilita um editor HTML em modo visual no lugar do campo textarea dos formulários.

Exemplo utilizando o editor FCKeditor

Page 69: Desenvolvimento Web com Drupal 6

Content Constructor Kit (CCK)Este módulo auxilia na criação de: tipos de conteúdo (Content types); campos personalizados (Fields).

Page 70: Desenvolvimento Web com Drupal 6

Content Types (Tipos de Conteúdo)O que é um tipo de conteúdo? É a representação de algum tipo de informação.Exemplos: Página; Postagem de blog; Eventos; Galeria de Imagens.

Page 71: Desenvolvimento Web com Drupal 6

Content Types (Tipos de Conteúdo)Estrutura padrão de campos de um tipo de conteúdo:

Page 72: Desenvolvimento Web com Drupal 6

Content Types (Tipos de Conteúdo)Campos podem ser adicionados aos tipos de conteúdo:

Page 73: Desenvolvimento Web com Drupal 6

File fieldEste módulo adiciona um campo personalizado para o upload de arquivos.

Page 74: Desenvolvimento Web com Drupal 6

Image fieldEste módulo possibilita a validação das dimensões e o upload de imagens via AJAX no formulário de criação de conteúdo.

Configuração do campo em Content Type

Utilização do campo em Create Content

Page 75: Desenvolvimento Web com Drupal 6

ImageCacheEste módulo permite o tratamento das imagens enviadas pelos campos de upload. As imagens poderão ser redimensionadas, cortadas, convertidas em preto e branco, etc.

Page 76: Desenvolvimento Web com Drupal 6

Lightbox2Este módulo habilita a abertura de imagens em elegantes janelas modais, de forma dinâmica.

Page 77: Desenvolvimento Web com Drupal 6

ViewsEste módulo possibilita a montagem listas, blocos e tabelas apenas informando o tipo de conteúdo, campos, ordenação, quantidade de itens por página, etc.

Page 78: Desenvolvimento Web com Drupal 6
Page 79: Desenvolvimento Web com Drupal 6

Galeria de ImagensMódulos utilizados: CCK Filefield ImageApi ImageCache ImageField Lightbox2 Views

Page 80: Desenvolvimento Web com Drupal 6

Galeria de Imagens1) Adicionar o Tipo de Conteúdo "Galeria de Imagens“;2) Adicionar um presset com o módulo “Image Cache”:

Administrar › Construção do site > ImageCachefoto_miniatura: Add Scale 120 x 180 foto_ampliada: Add Scale 800 x 600

1) Adicionar em "manage fields" o campo File com o tipo Image. Administrar › Organizar conteúdo > Galeria_Imagens > Manage fieldsLabel: Imagem Field name: field_imagem.

4) Em: Content management › Galeria de Imagens > Manage fields > Display fields...

Page 81: Desenvolvimento Web com Drupal 6
Page 82: Desenvolvimento Web com Drupal 6
Page 83: Desenvolvimento Web com Drupal 6
Page 84: Desenvolvimento Web com Drupal 6
Page 85: Desenvolvimento Web com Drupal 6
Page 86: Desenvolvimento Web com Drupal 6
Page 87: Desenvolvimento Web com Drupal 6
Page 88: Desenvolvimento Web com Drupal 6
Page 89: Desenvolvimento Web com Drupal 6
Page 90: Desenvolvimento Web com Drupal 6
Page 91: Desenvolvimento Web com Drupal 6
Page 92: Desenvolvimento Web com Drupal 6
Page 93: Desenvolvimento Web com Drupal 6
Page 94: Desenvolvimento Web com Drupal 6

Gallery AssistEste módulo permite a criação de galerias de imagens customizáveis de forma simples e transparente.Não possui nenhuma dependência dos módulos: CCK, Views, ImageCache e Image/Image Gallery.Módulos adicionais: Gallery Assist Lightboxes; Gallery Assist for the Cooliris viewer.

Page 95: Desenvolvimento Web com Drupal 6

Gallery Assist com HighSlide

Page 96: Desenvolvimento Web com Drupal 6

Gallery Assist com FancyBox

Page 97: Desenvolvimento Web com Drupal 6

WebformEste módulo auxilia na criação de formulários dinâmicos.

Page 98: Desenvolvimento Web com Drupal 6

CaptchaEste módulo permite a adição de um Captcha (imagem ou cálculo matemático) nos formulários.

Page 99: Desenvolvimento Web com Drupal 6

Taxonomy (Taxonomia)Taxonomia é a ciência da identificação. O módulo Taxonomy permite categorizar os

conteúdos a partir de uma lista de vocabulários; Podemos ter várias classificações diferentes para o

mesmo tipo de conteúdo ou node; O uso da taxonomia facilita o acesso à informação.

Page 100: Desenvolvimento Web com Drupal 6

Taxonomy (Taxonomia)

Notícias

Esporte Cultura Lazer

Futebol Basquete

Exemplo de Taxonomia

Vocabulário

Termos

Page 101: Desenvolvimento Web com Drupal 6

Taxonomy (Taxonomia)

Page 102: Desenvolvimento Web com Drupal 6

Taxonomy (Taxonomia)

Page 103: Desenvolvimento Web com Drupal 6

Taxonomy BlocksEste módulo possibilita a exibição de um bloco contendo os vocabulários e seus termos.

Page 104: Desenvolvimento Web com Drupal 6

PanelsEste módulo capacita o site a ter uma visualização em painéis. Ele é peça fundamental para a construção do layout da página.

Page 105: Desenvolvimento Web com Drupal 6
Page 106: Desenvolvimento Web com Drupal 6
Page 107: Desenvolvimento Web com Drupal 6
Page 108: Desenvolvimento Web com Drupal 6
Page 109: Desenvolvimento Web com Drupal 6
Page 110: Desenvolvimento Web com Drupal 6
Page 111: Desenvolvimento Web com Drupal 6
Page 112: Desenvolvimento Web com Drupal 6
Page 113: Desenvolvimento Web com Drupal 6
Page 114: Desenvolvimento Web com Drupal 6

Instalaçãode Temas

Page 115: Desenvolvimento Web com Drupal 6

Instalação de Temas1. Faça o download do módulo de sua preferência na página oficial de módulos do Drupal: http://drupal.org/project/Themes2. Descompacte o arquivo do módulo dentro do diretório: themesCaso seja utilizado o recurso de multi-site, o arquivo deve serdescompactado em: sites/all/themes3. Ative o tema em: Administrar > Construção do Site > Temas

Page 116: Desenvolvimento Web com Drupal 6

Desenvolvimentode Temas

Page 117: Desenvolvimento Web com Drupal 6

O que é um tema? É uma coleção de arquivos utilizados para criar uma

interface para o usuário final.

Page 118: Desenvolvimento Web com Drupal 6

O que é um template? É a forma como os componentes ou elementos de um

tema são distribuídos em um espaço limitado e definido previamente.

Todo tema possui um template.

Page 119: Desenvolvimento Web com Drupal 6

Definição do Layout para o Tema Com o Drupal é possível ativar ou desativar as colunas

esquerda ou direita do layout. Caso o layout necessite de 3 ou 2 colunas é preciso

projetar o site com suporte a 3 colunas.

Page 120: Desenvolvimento Web com Drupal 6

Camadas do Layout

HTML

BODY

CONTAINER

HEADER

SIDEBAR 1

MAIN CONTENT

SIDEBAR 2

FOOTER

Legenda

Page 121: Desenvolvimento Web com Drupal 6

Estrutura do Layout<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

<link href="css/style.css" rel="stylesheet" type="text/css" />

</head>

<body>

Page 122: Desenvolvimento Web com Drupal 6

Estrutura do Layout<div id="container">

<div id="header">

<h1>Header</h1>

</div>

<div id="sidebar1">

<h3>Sidebar1 </h3>

<p>Donec eu mi sed turpis feugiat feugiat. Integer turpis arcu, pellentesque eget, cursus et, fermentum ut, sapien. </p>

</div>

<div id="sidebar2">

<h3>Sidebar2 </h3>

<p>Donec eu mi sed turpis feugiat feugiat. Integer turpis arcu, pellentesque eget, cursus et, fermentum ut, sapien. </p>

</div>

Page 123: Desenvolvimento Web com Drupal 6

Estrutura do Layout <div id="mainContent">

<h1> Main Content </h1>

<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent aliquam, justo convallis luctus rutrum, erat nulla fermentum diam, at nonummy quam ante ac quam. Maecenas urna purus, fermentum id, molestie in, commodo porttitor, felis. Nam blandit quam ut lacus. Quisque ornare risus quis ligula. Phasellus tristique purus a augue condimentum adipiscing. Aenean sagittis. Etiam leo pede, rhoncus venenatis, tristique in, vulputate at, odio. Donec et ipsum et sapien vehicula nonummy. Suspendisse potenti. </p>

<h2>H2 level heading </h2>

<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent aliquam, justo convallis luctus rutrum, erat nulla fermentum diam, at nonummy quam ante ac quam. Maecenas urna purus, fermentum id, molestie in, commodo porttitor, felis. Nam blandit quam ut lacus. Quisque ornare risus quis ligula. Phasellus tristique purus a augue condimentum adipiscing. Aenean sagittis. Etiam leo pede, rhoncus venenatis, tristique in, vulputate at, odio.</p>

</div>

<br class="clearfloat" />

<div id="footer">

<p>Footer</p>

</div>

</div>

</body>

</html>

Page 124: Desenvolvimento Web com Drupal 6

Temas no Drupal O Drupal possui um motor de temas interno e uma

ferramenta de templates (PHPTemplate). Outras ferramentas de templates podem ser

utilizadas: Smarty, PHPTAL, XTemplate, etc.

Page 125: Desenvolvimento Web com Drupal 6

Estrutura de um Tema

Page 126: Desenvolvimento Web com Drupal 6

Estrutura de um Tema .info

Este arquivo com extensão ".info" e com o nome do tema é necessário para que o Drupal encontre seu tema, e é ele quem vai gerar o nome interno do tema.

.tpl.phpSão os arquivos de templates processados pelo motor dotema. Cada arquivo .tpl.php é responsável por aplicar temas a fragmentos de dados.

Page 127: Desenvolvimento Web com Drupal 6

Estrutura de um Tema template.php

Este é o arquivo que contém a parte lógica do tema, ou

seja o código PHP, para não misturá-lo com a parte de processamento e controle do layout. Nele podemos sobrescrever as funções usadas nos temas.

logo.pngÉ a logomarca utilizado pelo tema.

Page 128: Desenvolvimento Web com Drupal 6

Estrutura de um Tema style.css

É a folha de estilos a ser utilizada pelo tema. screenshot.png

É uma miniatura para dar uma visualização prévia na área

de administração de temas.

Page 129: Desenvolvimento Web com Drupal 6

Estrutura de um Tema page.tpl.php

Template responsável por definir o esqueleto do tema.

block.tpl.phpTemplate responsável por definir o layout dos blocos.

node.tpl.phpTemplate responsável por definir o layout de um

node.

Page 130: Desenvolvimento Web com Drupal 6

Desenvolvimentode Módulos

Page 131: Desenvolvimento Web com Drupal 6

Desenvolvimento de Módulos Um módulo é uma coleção de arquivos contendo um

conjunto de rotinas escritas em PHP. Os módulos possuem como características boa

práticas de design e programação, além da modularidade.

Page 132: Desenvolvimento Web com Drupal 6

Informações sobre o Módulo Todo módulo possui um arquivo modulename.info

contendo informações sobre o módulo.

; $Id: taxonomia_em_bloco.info,v 1.0 2010/01/09 10:00:00

name = Taxonomia em Bloco

description = "Este m&oacute;dulo &eacute; utilizado para listar as Taxonomias em um Bloco em uma determinada regi&atilde;o do site."

dependencies[] = taxonomy

package = "M&oacute;dulos Personalizados"

core = "6.x"

project = "taxonomia_em_bloco"

Page 133: Desenvolvimento Web com Drupal 6

Informações sobre o Módulo Help Hook: este hook fornece um texto de ajuda e

informações adicionais sobre o módulo, disponibilizadas no Help (/admin/help/). A função a ser implementada é a hook_help().

function taxonomia_em_bloco_help($section) {

switch ($section) {

case 'admin/help#taxonomia_em_bloco':

$output = "Este m&oacute;dulo &eacute; utilizado para listar as Taxonomias em um determinado Bloco do site.";

return $output;

}

}

Função integrante do arquivo taxonomia_em_bloco.module

Page 134: Desenvolvimento Web com Drupal 6

Permissões de Acesso Perm Hook: com este hook podemos definir quais

permissões serão disponibilizadas para o módulo. A função a ser implementada é a hook_perm.

Uma vez definidas as permissões do módulo, o admin pode definir as roles que possuem estas permissões em: Administer » User management » Permissions

function taxonomia_em_bloco_perm() {

return array('access taxonomia_em_bloco', 'administer taxonomia_em_bloco');

}

Função integrante do arquivo taxonomia_em_bloco.module

Page 135: Desenvolvimento Web com Drupal 6

Declaração do Bloco Block Hook: com este hook podemos definir um

bloco para o módulo. A função a ser implementada é a hook_block.

function taxonomia_em_bloco_block($op = 'list', $delta = 0) {

...

}

Função integrante do arquivo taxonomia_em_bloco.module

Page 136: Desenvolvimento Web com Drupal 6

Declaração do Bloco A função do bloco recebe como parâmetro:

$op (operação): hook_block() fornece 4 tipos de operações: list: lista os blocos definidos no módulo e como ele será visto na página:

Administer >> Site Building >> Blocks view: processa o bloco quando habilitado em alguma região

apresentando o seu conteúdo. configure: formulário de configuração para o bloco. save: salva as opções de configuração.

Page 137: Desenvolvimento Web com Drupal 6

Declaração do Bloco$delta: um módulo pode definir mais de um bloco na operação “list”. Cada bloco possui um código “delta” definido. O código “delta” é que identificará qual bloco do módulo será executado pela operação.O módulo user (Drupal core) é um exemplo de módulo contendo múltiplos blocos.

Page 138: Desenvolvimento Web com Drupal 6

Construção do Módulo if ($op == 'list')

{

$blocks[0]['info'] = 'Taxonomia em Bloco';

return $blocks;

}

Arquivo taxonomia_em_bloco.module

Page 139: Desenvolvimento Web com Drupal 6

Construção do Módulo $blocks: variável utilizada para armazenar alguma informação referente

ao bloco antes de retorná-la.

$blocks[0]: a variável $blocks é um array. Cada item do array representa um bloco fornecido pelo módulo. O item do array corresponde ao código “delta” a ser utilizado pelas operações.

$block[0]["info"]: é o título do bloco a ser apresentado na página Administer >> Site Building >> Blocks

Page 140: Desenvolvimento Web com Drupal 6

Construção do Módulo if ($op == 'view')

{

$vid = variable_get('taxonomia_em_bloco_settings_vid',1);

$node_count = variable_get('taxonomia_em_bloco_settings_node_count',0);

$num_term = variable_get('taxonomia_em_bloco_settings_max_term',0);

$order_by = variable_get('taxonomia_em_bloco_settings_order_by', 0)==0 ? 'name' : 'weight';

$order_type = variable_get('taxonomia_em_bloco_settings_order_type', 0)==0 ? 'ASC' : 'DESC';

Arquivo taxonomia_em_bloco.module

Page 141: Desenvolvimento Web com Drupal 6

Construção do Módulo $vid: representa o ID do vocabulário. $node_count: total de nodes. $num_term: número de termos a serem apresentados. $order_by: forma de ordenação. $order_type: tipo de ordenação.

Page 142: Desenvolvimento Web com Drupal 6

Construção do Módulo A função variable_get recupera o valor de uma

determinada variável na tabela variable. Caso a variável não exista, um valor padrão é atribuído.

$vid = variable_get('taxonomia_em_bloco_settings_vid',1);

Caso a variável taxonomia_em_bloco_settings_vid ainda não tenha sido “setada”, o valor 1 é atribuído à variável $vid.

Page 143: Desenvolvimento Web com Drupal 6

Construção do Módulo switch($delta) {

case 0:

$block['subject'] = t('Taxonomia em Bloco');

$output = '';

if ($num_term == 0) {

$sql = " SELECT td.tid, td.name, th.parent from {term_data} td "

." INNER JOIN {term_hierarchy} th ON th.tid=td.tid "

." WHERE vid='%d' AND th.parent=0 ORDER BY %s %s";

} else {

$sql = " SELECT td.tid, td.name, th.parent from {term_data} td "

." INNER JOIN {term_hierarchy} th ON th.tid=td.tid "

." WHERE vid='%d' AND th.parent=0 ORDER BY %s %s LIMIT %d";

}

$term_parents = db_query($sql, $vid, $order_by, $order_type, $num_term );

$output .= '<ul class="menu">';

Arquivo taxonomia_em_bloco.module

Page 144: Desenvolvimento Web com Drupal 6

Construção do Módulo $block['subject']: representa o título do bloco. $output: variável que representará o conteúdo do

bloco a ser visualizado pelo usuário. db_query(): função que executa uma instrução SQL

no banco de dados. Caso ocorra algum problema na execução do SQL, é retornado FALSE.

Page 145: Desenvolvimento Web com Drupal 6

Construção do Módulo while ($term_parent = db_fetch_object($term_parents)) {

$tid_parent = $term_parent->tid;

$name_parent= $term_parent->name;

$output .= '<li>';

$term_parent = taxonomy_get_term($tid_parent);

$output .= l(t($name_parent), taxonomy_term_path($term_parent));

if ($node_count) {

$total_parent = db_result(db_query("SELECT COUNT(nid) FROM {term_node} WHERE tid = %d", $tid_parent));

$output .= " ($total_parent)";

}

$output .= "</li>";

Arquivo taxonomia_em_bloco.module

Page 146: Desenvolvimento Web com Drupal 6

Construção do Módulo db_fetch_object(): função que recupera o resultado

de uma linha da query executada como um objeto. taxonomy_get_term(): função que retorna um

objeto Termo com base no ID do Termo. taxonomy_term_path(): função que recupera o

caminho do termo, podendo ser utilizado na URL do link.

db_result(): função que retorna o total de registros afetados por uma query.

Page 147: Desenvolvimento Web com Drupal 6

Construção do Módulo t(): traduz uma string para a página de linguagens.

Todo texto que será apresentado ao usuário fora de uma página deve ser executado através desta função.

l(): formata um link interno. Recebe como parâmetro o texto do link e o seu caminho.

Page 148: Desenvolvimento Web com Drupal 6

Construção do Módulo$sql_count_childs = " SELECT count(td.tid) from {term_data} td "

." INNER JOIN {term_hierarchy} th ON th.tid=td.tid "

." WHERE td.vid='%d' AND th.parent='%d'";

$count_child = db_result(db_query($sql_count_childs, $vid, $tid_parent));

if ($count_child) {

if ($num_term == 0) {

$sql_term_childs = " SELECT td.tid, td.name from {term_data} td "

." INNER JOIN {term_hierarchy} th ON th.tid=td.tid "

." WHERE vid='%d' AND th.parent='%d' ORDER BY %s %s";

} else {

$sql_term_childs = " SELECT td.tid, td.name from {term_data} td "

." INNER JOIN {term_hierarchy} th ON th.tid=td.tid "

." WHERE vid='%d' AND th.parent='%d' ORDER BY %s %s LIMIT %d";

}

$term_childs = db_query($sql_term_childs, $vid, $tid_parent, $order_by, $order_type, $num_term );

Arquivo taxonomia_em_bloco.module

Page 149: Desenvolvimento Web com Drupal 6

Construção do Módulo$output .= '<ul>';

while ($term_child = db_fetch_object($term_childs)) {

$tid_child = $term_child->tid;

$name_child = $term_child->name;

$output . = '<li>';

$term_child = taxonomy_get_term($tid_child);

$output .= l(t($name_child), taxonomy_term_path($term_child));

if ($node_count) {

$total_child = db_result(db_query("SELECT COUNT(nid) FROM {term_node} WHERE tid = %d", $tid_child));

$output .= " ($total_child)";

}

$output .= "</li>";

}

$output .= "</ul>";

Arquivo taxonomia_em_bloco.module

Page 150: Desenvolvimento Web com Drupal 6

Construção do Módulo $output .= "</ul>";

$block['content'] = $output;

break;

}

return $block;

}

}

Arquivo taxonomia_em_bloco.module

Page 151: Desenvolvimento Web com Drupal 6

Construção do Módulo $block['content']: representa o código HTML a ser

gerado para o bloco.

Page 152: Desenvolvimento Web com Drupal 6

Página de Configuração Após a construção do módulo, para deixá-lo mais

flexível, se faz necessário a construção de uma página onde o módulo possa ser personalizado.

Uma página contendo um formulário de “system settings” pode ser definida utilizando a API de Forms do Drupal.

Por boa prática, a função que permitirá a construção de um formulário “system settings” deverá estar localizada no arquivo: modulename.settings.inc

Page 153: Desenvolvimento Web com Drupal 6

Construção da Página<?php

// $Id: taxnomia_em_bloco.settings.inc

function taxonomia_em_bloco_admin_settings() {

$form = array();

$form['taxonomia_em_bloco_settings'] = array(

'#type' => 'fieldset',

'#weight' => -30,

'#title' => t('Configura&ccedil;&otilde;es B&aacute;sicas'),

'#collapsible' => TRUE,

'#collapsed' => FALSE

);

Arquivo taxonomia_em_bloco.settings.inc

Page 154: Desenvolvimento Web com Drupal 6

Construção da Página $vocabs = db_query("SELECT vid, name from {vocabulary} order by name");

$vocab_array = array();

while ($term_parent = db_fetch_object($vocabs)) {

$vocab_array[$term_parent->vid] = $term_parent->name;

}

$form['taxonomia_em_bloco_settings']['taxonomia_em_bloco_settings_vid'] = array(

'#type' => 'select',

'#title' => t("Selecione um vocabul&aacute;rio"),

'#default_value' => variable_get('taxonomia_em_bloco_settings_vid', 1),

'#description' => t("Selecione um vocabul&aacute;rio para ser utilizado pelo Taxonomia em Bloco."),

'#options' => $vocab_array

);

Arquivo taxonomia_em_bloco.settings.inc

Page 155: Desenvolvimento Web com Drupal 6

Construção da Página$form['taxonomia_em_bloco_settings']

['taxonomia_em_bloco_settings_max_term'] = array(

'#type' => 'textfield',

'#size' => 3,

'#title' => t("N&uacute;mero m&aacute;ximo de termos a serem exibidos"),

'#default_value' => variable_get('taxonomia_em_bloco_settings_max_term', 0),

'#description' => t("Informe 0 para exibir todos os termos.")

);

Arquivo taxonomia_em_bloco.settings.inc

Page 156: Desenvolvimento Web com Drupal 6

Construção da Página$form['taxonomia_em_bloco_settings']

['taxonomia_em_bloco_settings_node_count'] = array(

'#type' => 'checkbox',

'#title' => t('Mostrar a quantidade de nodos'),

'#default_value' => variable_get('taxonomia_em_bloco_settings_node_count', 0)

);

Arquivo taxonomia_em_bloco.settings.inc

Page 157: Desenvolvimento Web com Drupal 6

Construção da Página$form['taxonomia_em_bloco_settings']

['taxonomia_em_bloco_settings_order_by'] = array(

'#type' => 'select',

'#title' => t("Ordenar por"),

'#default_value' => variable_get('taxonomia_em_bloco_settings_order_by', 0),

'#options' => array(t("Nome"), t("Peso"))

);

Arquivo taxonomia_em_bloco.settings.inc

Page 158: Desenvolvimento Web com Drupal 6

Construção da Página$form['taxonomia_em_bloco_settings']

['taxonomia_em_bloco_settings_order_type'] = array(

'#type' => 'select',

'#title' => t('Tipo de ordena&ccedil;&atilde;o'),

'#default_value' => variable_get('taxonomia_em_bloco_settings_order_type', 0),

'#options' => array(t("ASC"), t("DESC"))

);

return system_settings_form($form);

}

Arquivo taxonomia_em_bloco.settings.inc

Page 159: Desenvolvimento Web com Drupal 6

Construção da Página $form: array que define os elementos o formulário,

fornecido pela API de Forms do Drupal. Cada elemento do array corresponde a um elemento do formulário.

system_settings_form(): função que adiciona os botões padrões (submit/reset) ao formulário.

Page 160: Desenvolvimento Web com Drupal 6

Adicionando a Página ao Menu Uma vez definida a página de configuração,

precisamos definir uma URL de acesso para ela. Para isso a função hook_menu deve ser

implementada. Ela retorna uma array contendo:

Page 161: Desenvolvimento Web com Drupal 6

Adicionando a Página ao Menu title: título que aparecerá no menu. description: descrição do módulo. access arguments: role que poderá acessar a opção no menu. page callback: função que será chamada para apresentar a página

quando o usuário acessar a URL. page arguments: argumentos a serem enviados para a página de callback. type: propriedade do item do menu. file: arquivo que será incluído antes dos callbacks serem requisitados.

Page 162: Desenvolvimento Web com Drupal 6

Adicionando a Página ao Menufunction taxonomia_em_bloco_menu() {

$items = array();

$items['admin/settings/taxonomia_em_bloco'] = array(

'title' => 'Taxonomia em Bloco',

'description' => 'Este m&oacute;dulo &eacute; utilizado para listar as Taxonomias em um Bloco em uma determinada regi&atilde;o do site.',

'access arguments' => array('administer taxonomia_em_bloco'),

'page callback' => 'drupal_get_form',

'page arguments' => array('taxonomia_em_bloco_admin_settings'),

'type' => MENU_NORMAL_ITEM,

'file' => 'taxonomia_em_bloco.settings.inc',

);

return $items;

}

Arquivo taxonomia_em_bloco.module