Você está na página 1de 162

Desenvolvimento Web com Drupal 6

Prof. Vincius de Paula

Sociedade da Informao
Vivemos a chamada sociedade da informao, ou talvez mais adequadamente, a sociedade do conhecimento. Nos pases de economias mais dinmicas, estima-se que cerca de 65% da capacidade de mo-de-obra esteja ocupada com a produo, o tratamento e a disseminao de informaes. Cada vez mais, as organizaes, sejam privadas ou pblicas, dependem da informao para levar a cabo seus objetivos.

Informao como Estratgia


No mundo dos negcios, a informao assume uma dimenso estratgica. A informao a principal matria prima para todo e qualquer processo decisrio; Toda deciso, por mais simples que seja, envolve informaes.

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

gerenciamento de contedo, cujo objetivo exatamente o de estruturar e facilitar a criao, administrao, distribuio, publicao e disponibilidade da informao.

Principais Caractersticas
Facilidade no Gerenciamento de Contedo

No necessrio saber programar para criar, editar e gerenciar contedo. Colaboratividade Quem esta com a informao o responsvel por public-la.

Vantagens
Estruturao do processo de autoria; Harmonia esttica com o resto do site e demais

contedos; Melhor estruturao da navegao; Permisso granular de acesso s informaes publicadas; Gerenciamento de verso dos contedos; Diminuio dos custos de manuteno.

Exemplos de CMS

Qual CMS Utilizar?


a melhor escolha para sites simples, sem grande complexidade. recomendado para jornais e portais de comunicao. Exige diversas configuraes no sistema operacional.

a melhor escolha para sites complexos. No a melhor escolha para sites com grande nmero de editores de contedo.

Comparativo
A idealware uma conceituada organizao que realiza pesquisas sobre softwares sem fins lucrativos. Em maro 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 avaliao.

Qual o significado de Drupal?


{holands} druppel
quer dizer

Drop {Ingls}

pronuncia-se Drupal {Ingls}

O que Drupal?
um Sistema Gerenciador de Contedos; Escrito em PHP; Framework de desenvolvimento; nfase na colaborao entre os usurios; Open Source (GPL); Totalmente compatvel com W3C (W3C compliant).

Breve Histrico
Criado pelo belga Dries Buytaert; Lanado em 2001; Derivado do projeto drop.org; Verso 5 lanada em janeiro de 2007; Atualmente esta na verso 7.

Principais Caractersticas
Confivel e Robusto; Eficiente; Flexvel.

Drupal para os administradores


Fcil de instalar e configurar; Intuitivo e auto-explicativo; Altamente configurvel.

Drupal para os usurios


Fcil de configurar; Intuitivo e auto-explicativo; Organizado.

Onde Utilizar o Drupal


Portais Corporativos; Sites de Comunidades; Sites Pessoais; Sites Internacionais; Educao; Arte, Msica e Multimdia.

Quem utiliza o Drupal?

Conceitos e Caractersticas

Tecnologias Envolvidas
Linguagem Banco de Dados Servidor Web Sistema Operacional PHP MySQL, PostgreSQL Apache, lighttpd, IIS Linux, BSD, Mac OS X, Windows, Solaris

Requisitos para Instalao


Linguagem Banco de Dados Servidor Web PHP 4.3.5 ou superior PHP 5.2.x (recomendado) MySQL 4.1 ou 5.0 (recomendado) PostgreSQL 7.4 ou superior Apache 1.3 ou 2.x IIS 5, 6, e 7

Ncleo do Drupal (Drupal Core)


Gerenciamento de Contedo Gerenciamento de Usurios Gerenciamento de Sesso Pseudnimo de URL

Localizao

Templates

Organizao

Log de Eventos

Biblioteca de Funes

Mdulos
O Drupal um framework modular: Novas funcionalidades so includas em mdulos; Mdulos podem ser habilitados ou desabilitados; Mdulos so plugins que extendem as funcionalidades do Drupal.

Mdulos
Galeria de Imagens E-commerce AdSense Mdulo Customizado Fruns Editores WYSIWYG Calendrio de Eventos Grupos de Trabalho

Gerenciamento de Contedo

Gerenciamento de Usurios

Gerenciamento de Sesso

Pseudnimo de URL

Localizao

Templates

Organizao

Log de Eventos

Biblioteca de Funes

Hooks (Ganchos)
Permite que os mdulos interajam com o ncleo do

Drupal. A maneira mais comum de interagir com funcionalidades do ncleo do Drupal implementando ganchos nos mdulos.

Themes (Temas)
Representa a aparncia do site; O Drupal suporta diversas abordagens para a criao

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

Nodes (Ns)
uma unidade mnima de contedo; Cada contedo indexado pelo Drupal recebe um

identificador de n. Seja uma enquete, uma histria, uma pgina de livro, uma imagem, etc.

Nodes (Ns)

Tipos de contedo derivando de n

Blocks (Blocos)
Representa um tipo de contedo a ser apresentado na

pgina; Tipicamente, so colocados no sidebar, header ou footer da pgina; As regies onde os blocos podem ser posicionados so definidas nos temas.

Estrutura de Diretrios
Contm as bibliotecas e funes utilizadas pelo Drupal.

Armazena os arquivos JavaScript, cones e imagens da instalao padro do Drupal.

Contm o ncleo dos mdulos, cada mdulo est em seu prprio diretrio. .

Estrutura de Diretrios
Contm os diferentes perfis de instalao para o site.

Contm as modificaes feitas no Drupal em formulrios de configurao, mdulos e temas.

Estrutura de Diretrios
Contm scripts para a checagem de sintaxe, limpeza de cdigo, executar comandos no Drupal via linha de comando e de manipulao com o Crontab. Contm os arquivos do tema do Drupal.

Estrutura de Arquivos
Arquivo utilizado para executar tarefas peridicas. Ex.: clculo de estatsticas, etc.

Arquivo principal que responde as requisies feitas no diretrio raiz.

Arquivo responsvel por iniciar a instalao do Drupal.

Estrutura de Arquivos
Arquivo contendo a implementao padro para robots exclusion standard.

Arquivo responsvel por atualizar o schema do banco de dados aps uma atualizao de verso do Drupal.

Arquivo responsvel por receber requisies XML-RPC.

Instalao do Drupal

1) Acesse: http://127.0.0.1/

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

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

4) Clique no link Privilgios e em seguida Adicionar novo usurio

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

6) Selecione o banco de dados drupal e clique em executar.

7) Selecione todos os privilgios e clique em Executar.

8) Acesse a pgina de instalao do Drupal e informe os dados de acesso ao banco de dados.

9) Informe os dados do site e do administrador.

Clique em Save and continue.

Acesse: http://127.0.0.1/

Ps Instalao
Aps a instalao, crie os seguintes diretrios em sites\all: modules themes libraries

Exerccios
1. Realize a instalao do Xamp. 2. Realize a instalao do Drupal.

Administrao do Drupal

Administrao do Drupal
A administrao do Drupal dividida em 5 reas: Content management: gerenciamento do contedo do site. Site building: controle da aparncia do site. Qualquer alterao no layout pode ser realizada nesta rea. Site configuration: configuraes bsicas do site como o comportamento do site, nome, configuraes de email, cache, data e hora, etc. User management: gerenciamento de usurios do site, grupo e o acesso aos recursos do site. Reports: relatrios gerenciais sobre o site.

Fluxo Bsico de Administrao


1. Configurao do site (Settings) 2. Funcionalidades Adicionais (Modules)

4. Postagem de contedo (Nodes)

3. Customizao de layout (Themes)

Principais Configuraes

Principais Configuraes
Error reporting

Por padro, os logs de erro so gerados em arquivo e impressos na tela. Quando o site estiver pronto para produo recomendado alterar esta configurao para que os logs de erro sejam gerados somente no arquivo de logs. Input Format Voc pode configurar as formataes (xHTML e PHP) que sero aceitas quando os usurios digitarem tags nos formulrios. Como boa prtica de segurana recomendado que esta configurao seja Filtered HTML.

Principais Configuraes
Performance

Durante o desenvolvimento, recomendado que o cache esteja desativado. Quando o site estiver pronto para produo o cache deve ser alterado para normal. Site information Alm do nome do site, podemos adicionar um slogan, a misso do site e uma mensagem no rodap do site. Site maintenance Se o site precisar ficar indisponvel por algum motivo, podemos adicionar uma mensagem do tipo: Site em manuteno para os usurios.

Exerccios
3. Realize a alterao das seguintes configuraes: a) Gerao de logs de erro; b) Formato de tags aceitas; c) Performance; d) Informaes do site; e) Coloque o site fora do ar, e apresente a seguinte mensagem: Desculpe o transtorno....

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';

Instalao de Mdulos

Instalao de Mdulos
1. Faa o download do mdulo de sua preferncia na pgina oficial de mdulos do Drupal: http://drupal.org/project/Modules 2. Descompacte o arquivo do mdulo dentro do diretrio: modules Caso seja utilizado o recurso de multi-site, o arquivo deve ser descompactado em: sites/all/modules 3. Leia as instrues de instalao do mdulo no arquivo INSTALL.txt 4. Ative o mdulo em: Administrar Construo do site > Mdulos 5. Aps ativado, as configuraes do mdulo podem ser realizadas em: Administrar Configurao do site

Mdulos Essenciais

Administration menu
Este mdulo habilita um menu drop down de navegao com todas as opes administrativas.

WYSIWYG API (What You See Is What You Get)


Este mdulo habilita um editor HTML em modo visual no lugar do campo textarea dos formulrios.

Exemplo utilizando o editor FCKeditor

Content Constructor Kit (CCK)


Este mdulo auxilia na criao de: tipos de contedo (Content types); campos personalizados (Fields).

Content Types (Tipos de Contedo)


O que um tipo de contedo? a representao de algum tipo de informao. Exemplos: Pgina; Postagem de blog; Eventos; Galeria de Imagens.

Content Types (Tipos de Contedo)


Estrutura padro de campos de um tipo de contedo:

Content Types (Tipos de Contedo)


Campos podem ser adicionados aos tipos de contedo:

File field
Este mdulo adiciona um campo personalizado para o upload de arquivos.

Image field
Este mdulo possibilita a validao das dimenses e o upload de imagens via AJAX no formulrio de criao de contedo.

Configurao do campo em Content Type

Utilizao do campo em Create Content

ImageCache
Este mdulo permite o tratamento das imagens enviadas pelos campos de upload. As imagens podero ser redimensionadas, cortadas, convertidas em preto e branco, etc.

Lightbox2
Este mdulo habilita a abertura de imagens em elegantes janelas modais, de forma dinmica.

Views
Este mdulo possibilita a montagem listas, blocos e tabelas apenas informando o tipo de contedo, campos, ordenao, quantidade de itens por pgina, etc.

Galeria de Imagens
Mdulos utilizados: CCK Filefield ImageApi ImageCache ImageField Lightbox2 Views

Galeria de Imagens
1) 2)

1)

4)

Adicionar o Tipo de Contedo "Galeria de Imagens; Adicionar um presset com o mdulo Image Cache: Administrar Construo do site > ImageCache foto_miniatura: Add Scale 120 x 180 foto_ampliada: Add Scale 800 x 600 Adicionar em "manage fields" o campo File com o tipo Image. Administrar Organizar contedo > Galeria_Imagens > Manage fields Label: Imagem Field name: field_imagem. Em: Content management Galeria de Imagens > Manage fields > Display fields...

Gallery Assist
Este mdulo permite a criao de galerias de imagens customizveis de forma simples e transparente. No possui nenhuma dependncia dos mdulos: CCK, Views, ImageCache e Image/Image Gallery. Mdulos adicionais: Gallery Assist Lightboxes; Gallery Assist for the Cooliris viewer.

Gallery Assist com HighSlide

Gallery Assist com FancyBox

Webform
Este mdulo auxilia na criao de formulrios dinmicos.

Captcha
Este mdulo permite a adio de um Captcha (imagem ou clculo matemtico) nos formulrios.

Taxonomy (Taxonomia)
Taxonomia a cincia da identificao. O mdulo Taxonomy permite categorizar os contedos a partir de uma lista de vocabulrios; Podemos ter vrias classificaes diferentes para o mesmo tipo de contedo ou node; O uso da taxonomia facilita o acesso informao.

Taxonomy (Taxonomia)
Notcias

Vocabulrio

Esporte

Cultura

Lazer

Termos

Futebol

Basquete
Exemplo de Taxonomia

Taxonomy (Taxonomia)

Taxonomy (Taxonomia)

Taxonomy Blocks
Este mdulo possibilita a exibio de um bloco contendo os vocabulrios e seus termos.

Panels
Este mdulo capacita o site a ter uma visualizao em painis. Ele pea fundamental para a construo do layout da pgina.

Instalao de Temas

Instalao de Temas
1. Faa o download do mdulo de sua preferncia na pgina oficial de mdulos do Drupal: http://drupal.org/project/Themes 2. Descompacte o arquivo do mdulo dentro do diretrio: themes Caso seja utilizado o recurso de multi-site, o arquivo deve ser descompactado em: sites/all/themes 3. Ative o tema em: Administrar > Construo do Site > Temas

Desenvolvimento de Temas

O que um tema?
uma coleo de arquivos utilizados para criar uma

interface para o usurio final.

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

tema so distribudos em um espao limitado e definido previamente. Todo tema possui um template.

Definio do Layout para o Tema


Com o Drupal possvel 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.

Camadas do Layout
Legenda
HTML BODY CONTAINER HEADER SIDEBAR 1 MAIN CONTENT SIDEBAR 2 FOOTER

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>

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 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 cursus et, fermentum ut, sapien. </p> </div> eget,

eget,

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>

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.

Estrutura de um Tema

Estrutura de um Tema
.info

Este arquivo com extenso ".info" e com o nome do tema necessrio para que o Drupal encontre seu tema, e ele quem vai gerar o nome interno do tema. .tpl.php So os arquivos de templates processados pelo motor do tema. Cada arquivo .tpl.php responsvel por aplicar temas a fragmentos de dados.

Estrutura de um Tema
template.php

Este o arquivo que contm a parte lgica do tema, ou seja o cdigo PHP, para no mistur-lo com a parte de processamento e controle do layout. Nele podemos sobrescrever as funes usadas nos temas. logo.png a logomarca utilizado pelo tema.

Estrutura de um Tema
style.css

a folha de estilos a ser utilizada pelo tema. screenshot.png uma miniatura para dar uma visualizao prvia na rea de administrao de temas.

Estrutura de um Tema
page.tpl.php

Template responsvel por definir o esqueleto do tema. block.tpl.php Template responsvel por definir o layout dos blocos. node.tpl.php Template responsvel por definir o layout de um node.

Desenvolvimento de Mdulos

Desenvolvimento de Mdulos
Um mdulo uma coleo de arquivos contendo um

conjunto de rotinas escritas em PHP. Os mdulos possuem como caractersticas boa prticas de design e programao, alm da modularidade.

Informaes sobre o Mdulo


Todo mdulo possui um arquivo modulename.info

contendo informaes sobre o mdulo.

; $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"

Informaes sobre o Mdulo


Help Hook: este hook fornece um texto de ajuda e

informaes adicionais sobre o mdulo, disponibilizadas no Help (/admin/help/). A funo 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; } }

Funo integrante do arquivo taxonomia_em_bloco.module

Permisses de Acesso
Perm Hook: com este hook podemos definir quais

permisses sero disponibilizadas para o mdulo. A funo a ser implementada a hook_perm. Uma vez definidas as permisses do mdulo, o admin pode definir as roles que possuem estas permisses em: Administer User management Permissions
function taxonomia_em_bloco_perm() { return array('access taxonomia_em_bloco', 'administer taxonomia_em_bloco'); }

Funo integrante do arquivo taxonomia_em_bloco.module

Declarao do Bloco
Block Hook: com este hook podemos definir um

bloco para o mdulo. A funo a ser implementada a hook_block.

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

Funo integrante do arquivo taxonomia_em_bloco.module

Declarao do Bloco
A funo do bloco recebe como parmetro:

$op (operao): hook_block() fornece 4 tipos de operaes:


list: lista os blocos definidos no mdulo e como ele ser visto na pgina:

Administer >> Site Building >> Blocks view: processa o bloco quando habilitado em alguma regio apresentando o seu contedo. configure: formulrio de configurao para o bloco. save: salva as opes de configurao.

Declarao do Bloco
$delta: um mdulo pode definir mais de um bloco na operao list. Cada bloco possui um cdigo delta definido. O cdigo delta que identificar qual bloco do mdulo ser executado pela operao. O mdulo user (Drupal core) um exemplo de mdulo contendo mltiplos blocos.

Construo do Mdulo
if ($op == 'list') { $blocks[0]['info'] = 'Taxonomia em Bloco'; return $blocks; } Arquivo taxonomia_em_bloco.module

Construo do Mdulo
$blocks: varivel utilizada para armazenar alguma informao referente

ao bloco antes de retorn-la. $blocks[0]: a varivel $blocks um array. Cada item do array representa um bloco fornecido pelo mdulo. O item do array corresponde ao cdigo delta a ser utilizado pelas operaes. $block[0]["info"]: o ttulo do bloco a ser apresentado na pgina Administer >> Site Building >> Blocks

Construo do Mdulo
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

Construo do Mdulo
$vid: representa o ID do vocabulrio. $node_count: total de nodes. $num_term: nmero de termos a serem apresentados. $order_by: forma de ordenao. $order_type: tipo de ordenao.

Construo do Mdulo
A funo variable_get recupera o valor de uma

determinada varivel na tabela variable. Caso a varivel no exista, um valor padro atribudo.

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

Caso a varivel taxonomia_em_bloco_settings_vid ainda no tenha sido setada, o valor 1 atribudo varivel

$vid.

Construo do Mdulo
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

Construo do Mdulo
$block['subject']: representa o ttulo do bloco. $output: varivel que representar o contedo do

bloco a ser visualizado pelo usurio. db_query(): funo que executa uma instruo SQL no banco de dados. Caso ocorra algum problema na execuo do SQL, retornado FALSE.

Construo do Mdulo
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

Construo do Mdulo
db_fetch_object(): funo que recupera o resultado

de uma linha da query executada como um objeto. taxonomy_get_term(): funo que retorna um objeto Termo com base no ID do Termo. taxonomy_term_path(): funo que recupera o caminho do termo, podendo ser utilizado na URL do link. db_result(): funo que retorna o total de registros afetados por uma query.

Construo do Mdulo
t(): traduz uma string para a pgina de linguagens.

Todo texto que ser apresentado ao usurio fora de uma pgina deve ser executado atravs desta funo. l(): formata um link interno. Recebe como parmetro o texto do link e o seu caminho.

Construo do Mdulo
$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

Construo do Mdulo
$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

Construo do Mdulo
$output .= "</ul>"; $block['content'] = $output; break; } return $block; } }

Arquivo taxonomia_em_bloco.module

Construo do Mdulo
$block['content']: representa o cdigo HTML a ser

gerado para o bloco.

Pgina de Configurao
Aps a construo do mdulo, para deix-lo mais

flexvel, se faz necessrio a construo de uma pgina onde o mdulo possa ser personalizado. Uma pgina contendo um formulrio de system settings pode ser definida utilizando a API de Forms do Drupal. Por boa prtica, a funo que permitir a construo de um formulrio system settings dever estar localizada no arquivo: modulename.settings.inc

Construo da Pgina
<?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

Construo da Pgina
$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

Construo da Pgina
$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

Construo da Pgina
$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

Construo da Pgina
$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

Construo da Pgina
$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

Construo da Pgina
$form: array que define os elementos o formulrio,

fornecido pela API de Forms do Drupal. Cada elemento do array corresponde a um elemento do formulrio. system_settings_form(): funo que adiciona os botes padres (submit/reset) ao formulrio.

Adicionando a Pgina ao Menu


Uma vez definida a pgina de configurao,

precisamos definir uma URL de acesso para ela. Para isso a funo hook_menu deve ser implementada. Ela retorna uma array contendo:

Adicionando a Pgina ao Menu


title: ttulo que aparecer no menu. description: descrio do mdulo. access arguments: role que poder acessar a opo no menu. page callback: funo que ser chamada para apresentar a pgina

quando o usurio acessar a URL. page arguments: argumentos a serem enviados para a pgina de callback. type: propriedade do item do menu. file: arquivo que ser includo antes dos callbacks serem requisitados.

Adicionando a Pgina ao Menu


function 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

Você também pode gostar