2. Sociedade da Informação
Vivemos 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.
3. Informação como Estratégia
No 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.
4. 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.
5. Principais Características
Facilidade no Gerenciamento de Conteúdo
Não é necessário saber programar para criar, editar e
gerenciar conteúdo.
Colaboratividade
Quem esta com a informação é o responsável por
publicá-la.
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.
8. Qual CMS Utilizar?
É a melhor escolha para sites simples, É recomendado para jornais e portais de
sem grande complexidade. comunicação. Exige diversas
configurações no sistema operacional.
É a melhor escolha para sites complexos.
Não é a melhor escolha para sites com
grande número de editores de
conteúdo.
9. 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.
10.
11. Qual o significado de Drupal?
{holandês} druppel quer dizer Drop {Inglês}
pronuncia-se Drupal {Inglês}
12. 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).
13. 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.
15. Drupal para os administradores
Fácil de instalar e configurar;
Intuitivo e auto-explicativo;
Altamente configurável.
16. Drupal para os usuários
Fácil de configurar;
Intuitivo e auto-explicativo;
Organizado.
17. Onde Utilizar o Drupal
Portais Corporativos;
Sites de Comunidades;
Sites Pessoais;
Sites Internacionais;
Educação;
Arte, Música e Multimídia.
25. Tecnologias Envolvidas
Linguagem PHP
Banco de Dados MySQL, PostgreSQL
Servidor Web Apache, lighttpd, IIS
Sistema Operacional Linux, BSD, Mac OS X, Windows, Solaris
26. Requisitos para Instalação
Linguagem PHP 4.3.5 ou superior
PHP 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
27. Núcleo do Drupal (Drupal Core)
Gerenciamento de Gerenciamento de Gerenciamento de Pseudônimo de
Conteúdo Usuários Sessão URL
Localização Templates Organização Log de Eventos
Biblioteca de Funções
28. Módulos
O 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.
29. Módulos
Galeria
Módulo
de E-commerce AdSense
Customizado
Imagens
Calendário Grupos
Editores
Fóruns de de
WYSIWYG
Eventos Trabalho
Gerenciamento
Gerenciamento Gerenciamento Pseudônimo
de
de de de
Conteúdo
Usuários Sessão URL
Log
Localização Templates Organização de
Eventos
Biblioteca de Funções
30. 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.
31. 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.
32. 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.
34. 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.
35. 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. .
36. 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.
37. Estrutura de Diretórios
Contém scripts para a checagem de sintaxe, limpeza de código, executar
comandos no Drupal via linha de comando e de manipulação com o
Crontab.
Contém os arquivos do tema do Drupal.
38. Estrutura de Arquivos
Arquivo utilizado para executar tarefas periódicas. Ex.: cálculo de
estatísticas, etc.
Arquivo principal que responde as requisições feitas no diretório raiz.
Arquivo responsável por iniciar a instalação do Drupal.
39. 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.
57. Administração do Drupal
A 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.
58. Fluxo Básico de Administração
1. Configuração 2. Funcionalidades
do site (Settings) Adicionais (Modules)
4. Postagem de conteúdo 3. Customização de
(Nodes) layout (Themes)
60. Principais Configurações
Error reporting
Por 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 Format
Você 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.
61. Principais Configurações
Performance
Durante 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.
62. Exercícios
3. 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...”.
63. 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';
65. Instalação de Módulos
1. Faça o download do módulo de sua preferência na página oficial
de módulos do Drupal: http://drupal.org/project/Modules
2. Descompacte o arquivo do módulo dentro do diretório: modules
Caso seja utilizado o recurso de multi-site, o arquivo deve ser
descompactado em: sites/all/modules
3. Leia as instruções de instalação do módulo no arquivo
INSTALL.txt
4. Ative o módulo em: Administrar › Construção do site > Módulos
5. Após ativado, as configurações do módulo podem ser realizadas
em: Administrar › Configuração do site
68. 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
69. Content Constructor Kit (CCK)
Este módulo auxilia na criação de:
tipos de conteúdo (Content types);
campos personalizados (Fields).
70. 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.
71. Content Types (Tipos de Conteúdo)
Estrutura padrão de campos de um tipo de conteúdo:
72. Content Types (Tipos de Conteúdo)
Campos podem ser adicionados aos tipos de conteúdo:
74. Image field
Este 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
75. ImageCache
Este 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.
77. Views
Este 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.
80. Galeria de Imagens
1) Adicionar o Tipo de Conteúdo "Galeria de Imagens“;
2) Adicionar um presset com o módulo “Image Cache”:
Administrar › Construção do site > ImageCache
foto_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 fields
Label: Imagem
Field name: field_imagem.
4) Em: Content management › Galeria de Imagens > Manage fields > Display
fields...
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94. Gallery Assist
Este 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.
99. 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.
100. Taxonomy (Taxonomia)
Notícias Vocabulário
Esporte Cultura Lazer
Termos
Futebol Basquete
Exemplo de Taxonomia
115. Instalação de Temas
1. Faça o download do módulo de sua preferência na página oficial
de módulos do Drupal: http://drupal.org/project/Themes
2. Descompacte o arquivo do módulo dentro do diretório: themes
Caso seja utilizado o recurso de multi-site, o arquivo deve ser
descompactado em: sites/all/themes
3. Ative o tema em: Administrar > Construção do Site > Temas
117. O que é um tema?
É uma coleção de arquivos utilizados para criar uma
interface para o usuário final.
118. 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.
119. 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.
120. Camadas do Layout
Legenda
HTML
BODY
CONTAINER
HEADER
SIDEBAR 1
MAIN CONTENT
SIDEBAR 2
FOOTER
121. 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>
122. 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>
123. 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>
124. 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.
126. 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.php
São os arquivos de templates processados pelo motor do
tema. Cada arquivo .tpl.php é responsável por aplicar
temas a fragmentos de dados.
127. 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.
128. 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.
129. Estrutura de um Tema
page.tpl.php
Template responsável por definir o esqueleto do
tema.
block.tpl.php
Template responsável por definir o layout dos blocos.
node.tpl.php
Template responsável por definir o layout de um
node.
131. 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.
132. 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ódulo é utilizado para listar as
Taxonomias em um Bloco em uma determinada região do site."
dependencies[] = taxonomy
package = "Módulos Personalizados"
core = "6.x"
project = "taxonomia_em_bloco"
133. 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ódulo é utilizado para listar as
Taxonomias em um determinado Bloco do site.";
return $output;
}
}
Função integrante do arquivo taxonomia_em_bloco.module
134. 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
135. 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
136. 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.
137. 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.
138. Construção do Módulo
if ($op == 'list')
{
$blocks[0]['info'] = 'Taxonomia em Bloco';
return $blocks;
}
Arquivo taxonomia_em_bloco.module
139. 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
141. 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.
142. 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.
143. 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
144. 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.
145. 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
146. 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.
147. 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.
148. 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
149. 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
150. Construção do Módulo
$output .= "</ul>";
$block['content'] = $output;
break;
}
return $block;
}
}
Arquivo taxonomia_em_bloco.module
151. Construção do Módulo
$block['content']: representa o código HTML a ser
gerado para o bloco.
152. 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
154. 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ário"),
'#default_value' => variable_get('taxonomia_em_bloco_settings_vid', 1),
'#description' => t("Selecione um vocabulário para ser utilizado
pelo Taxonomia em Bloco."),
'#options' => $vocab_array
);
Arquivo taxonomia_em_bloco.settings.inc
155. Construção da Página
$form['taxonomia_em_bloco_settings']
['taxonomia_em_bloco_settings_max_term'] = array(
'#type' => 'textfield',
'#size' => 3,
'#title' => t("Número má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
156. 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
158. Construção da Página
$form['taxonomia_em_bloco_settings']
['taxonomia_em_bloco_settings_order_type'] = array(
'#type' => 'select',
'#title' => t('Tipo de ordenaçã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
159. 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.
160. 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:
161. 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.
162. Adicionando a Página ao Menu
function taxonomia_em_bloco_menu() {
$items = array();
$items['admin/settings/taxonomia_em_bloco'] = array(
'title' => 'Taxonomia em Bloco',
'description' => 'Este módulo é utilizado para listar as
Taxonomias em um Bloco em uma determinada regiã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