Você está na página 1de 34

Manual

do
Primeiro Sinal

Autor
Rafael Bruno Costa dos Reis
Belo Horizonte, 2 de Abril de 2010

@orafaelreis
1. Acessos
1.1 Portal
Administrador do Site

O administrador é o usuário que tem total permissão no site.

1.2 FTP - Transferência de Arquivos


Existem dois modos de enviar arquivos para o servidor.

1. Através de ferramentas da própria conta de hospedagem.

2. Através de uma programa de FTP como o “Filezilla”

A pasta do site está no diretório “public_html”.


A pasta do site temporário está no caminho “public_html/temp”. Veja a imagem abaixo, obtida
pelo “Filezilla”.
1.6 Programas
Optamos por utilizar além de programas gratuitos, softwares que pudessem ser utilizados a partir do
pendrive.

Filezilla

Programa para transferência de arquivos do computador local para o computador servidor (cliente
FTP). O Filezilla suporta os protocolos FTP, FTP sobre SSL/TLS (FTPS) e SSH (SFTP), armazena as
configurações das contas sendo tambem intuitivo e fácil de usar.

Portável
http://portableapps.com/apps/internet/filezilla_portable

Normal
http://www.baixaki.com.br/download/filezilla.htm

Notepad++

Editor de códigos simples com suporte a múltiplas linguagens. Possui sistema de abas, customização
de extensão de arquivos e complementação de código.

Portável
http://portableapps.com/apps/development/notepadpp_portable

Normal
http://www.baixaki.com.br/download/notepad-.htm

Mysql GUI Tools

Esse pacote de programas da Mysql possui as seguintes ferramentas:

SQL Development (antigo MySQL Query Browser)

Permite através de sua IDE criar e visualizar as tabelas de um banco de dados de um modo amigável.
Pode-se também executar comandos SQL diretamente pelo software.

Database Administration (antigo MySQL Administrator)


Útil para todo o processo de administração do banco de dados, inclusive para o monitoramento do
servidor e gerenciamento dos usuários do banco. Durante o desenvolvimento do Portal foi muito útil
para o backup de todas as tabelas do banco de dados.

Normal
http://dev.mysql.com/downloads/gui-tools/5.0.html
2 Administrando o Portal
O Drupal é um framework para desenvolvimento de páginas web e tem como objetivo a criação e
atualização do conteúdo do site por pessoas que não possui conhecimentos em programação. Se por
um lado o Drupal se configura como um Sistema Gerenciador de Conteúdo (CMS), por outro, se
estabelece também como uma ferramenta provida de uma API, através de comandos próprios, que
aceleram a produção de uma página web.

Na construção do Portal as duas abordagens foram utilizadas.

2.1 Página de Administração

Abaixo é apresentada a página de administração, onde se encontram opções como configurar a


aparência do site, gerenciar os usuários e instalar novos módulos, em outras palavras, um painel de
controle do site.

Figura 1: http://www.primeirosinal.com.br/admin

A área de administração está dividida nas seguintes categorias:

Organizar conteúdo

Conteúdo para o Drupal é todo item postado para o site. Exemplos de conteúdos são “Cursos e
Oficinas”, “Dicas do Internauta” e “Opinião” que são encontrados em
http://www.primeirosinal.com.br/node/add. Formulários de cadastros não são considerados
conteúdos.
Construção do site

Permite gerenciar pela IDE do Drupal itens relativos à estrutura do site como o tema padrão,
módulos instalados, tradução e urls alternativas.
3. Organizar conteúdo
3.1 Content
Em “Content” é mostrado todos os conteúdos do site e opções para publicar, promover à página
inicial ou apagar o coteúdo.

Figura 2: http://www.primeirosinal.com.br/node/edit

3.2 Tipos de Conteúdo


Antes de explicar sobre os tipos de conteúdo é necessário definir o que é um Node. Um Node é objeto
que identifica um item de post, por isso ele contém:

 Um nid, identificador numérico do post.


 Um uid, identificador numérico do usuário que criou o post.
 Um title, campo de texto com o título do post
 Um body1, uma área de texto com o texto principal do post.

Um Tipo de Conteúdo é uma extensão de um Node, ou seja, é um Node contendo além de um title e
um body outros campos mais específicos.Todos os formulário da seção Agenda, por exemplo, foram
construídos com essa ferramenta.

A página “Tipos de conteúdo” possui as seguintes opções:

- LISTAR, que lista todos os tipos de conteúdos existentes.


- NOVO TIPO DE CONTEUDO, formulário que será usado para criar um novo tipo de conteúdo.
- FIELDS, lista todos os campos de todos os formulários presentes no portal e a qual tipo de conteúdo
esses campos pertencem.

1 Apenas o campo “body” pode ser deixado em branco em um Node.


Editar um Tipo de Conteúdo

Esta opção permite que alteremos informações gerais sobre o Tipo. Exige atenção nessa página o
campo “type” que é um identificador do Tipo para o Drupal, essa informação será usada em urls e
principalmente na seção “Views” (veja a 4.7) para filtrar os conteúdos exibidos de acordo com seu
Tipo; os campos “rótulo do campo título” e “rótulo do campo corpo” já define os dois campos padrões
de um Tipo (o “title” e o “body”).

Figura 3: Na página da esquerda, editando o Tipo “Cursos e Oficinas” e na direita, o formulário


criado.

Outro item importante é configurar o status padrão do conteúdo. O editor ao inserir um novo
conteúdo encontrará essas opções já preenchidas, embora possa modificá-las. “Dicas do Internauta”,
por exemplo, não é “publicado” por padrão, o que faz o conteúdo ser lido pelo Editor antes de ser
publicado.
Gerenciar os campos de um Tipo de Conteúdo

Esta opção permite o gerenciamento dos campos do formulário. As configurações de “title” e “body”
não podem ser modificadas, apenas a ordem que eles aparecem na tela. Na figura abaixo vemos três
campos do formulário “Cursos e Oficinas” e a opção de “Configurar” ou “Remover” cada campo.

Figura 4: Alguns dos campos do formulário "Cursos e Oficinas"

Logo abaixo temos a opção de criar novo campos, figura 5. É necessário definir qual tipo de dado será
armazenado, os tipos mais utilizados são “Text”, “Link” e “File”. Nota-se que é possível também
inserir elementos já criados em outros Tipos de Conteúdo. Isso aumenta a produtividade, uma vez
que mudamos apenas o rótulo para o novo formulário.

Figura 5: Criando novos campos

Após definir isso é preciso escolher qual elemento de formulário melhor representa os dados
inseridos. As opções existentes são mostradas na figura a seguir:

Figura 6: Principais Elementos de formulário existentes


Configurando um campo

As configurações obviamente dependem do tipo e elemento de formulário escolhido. As configurações


que mais se repetem são listadas abaixo (acompanhe na figura :

1. Tamanho (largura em pixel) do campo;


2. O Texto que explica como preencher o campo;
3. Se o campo é obrigatório;
4. O número de entradas permitidas. Isso diferencia um elemento “radios” de um “checkboxes”;
5. Se o campo é texto puro ou se exige um filtro (HTML, FULL HTML, PHP) ;
6. A quantidade máxima de caracteres permitido;
7. Uma lista de valores que são permitidos. O Drupal irá validar automaticamente o campo. Esse
campo geralmente é preenchido para “checkbox”, “radio” e “select list”.

Figura 7: Opções geralmente encontradas ao configurar um campo


Configurando a visualização dos campos

Essa opção está na aba “Display fields” da página “Manage fields”. Basicamente o que se define aqui é
se o rótulo de cada campo criado é mostrado na “mesma linha” ou “acima” da entrada daquele campo
e se as entradas são escondidas(<Hidden>), ou seus valores são de textos simples (Plain text) ou
elegante(Trimmed). Essa última opção exige que o campo criado utilize algum filtro de texto.

A figura abaixo mostra as opções explicadas. “Teaser” é a página que mostra o resumo do conteúdo e
“Full node” a página padrão onde se vê todos os campos preenchidos.

Figura 8: Página "Display field" de "Cursos e Oficinas"

Na visualização padrão do Drupal todo o conteúdo é mostrado exatamente como consta no


formulário de preenchimento,veja a figura abaixo. Na 4.7 será abordado como criar uma nova
visualização de um conteúdo.
4. Construção do site
4.1 Blocos
É comum no desenvolvimento web dividir a página em regiões como cabeçalho, corpo e rodapé, por
exemplo. Cada região recebe um ou mais blocos de conteúdos, assim o rodapé pode sempre exibir um
endereço e um telefone de contato, por exemplo. Isso contribui para a padronização da interface e
agrupamento dos conteúdos similares.

Na imagem abaixo é possível ver as regiões existentes no site. Para criar uma nova região leia a seção
4.7

Figura 9: Template atual mostrando as regiões do site


A página Blocos serve para configurar o que será apresentado em cada região. Cada linha da tabela
(Figura 4) é um bloco. A tabela está agrupada por regiões. Todos os blocos podem ser editados mas
apenas aqueles criados manualmente podem ser apagados.

Figura 10: admin/build/block

4.2 Menus
No tema “Cênicas” não se está utilizando a ferramenta de Menu fornecido pelo Drupal. O Menu que
se vê no site foi criado manualmente e portanto não existe uma área para sua configuração. Assim,
qualquer alteração deve-se recorrer ao código presente no arquivo template.tpl.php na pasta do tema
(“public_html/sites/all/themes/cenicas/”).

Os menus criados no Drupal são configurados na IDE. O menu que exige maior atenção é o menu de
Navegação (figura 5). Esse menu é o padrão do Drupal para a navegação no site. Em um menu é
possível criar um novo link, ativá-lo e inseri-lo em uma hierarquia de link.

Para tornar um menu visível deve-se configurar em Blocos qual região do site este aparecerá.

Figura 11: http://www.primeirosinal.com.br/admin/build/menu-customize/navigation

4.3 Módulos
Módulos são plugins para aumentar as funcionalidades da ferramenta. Muitos módulos já estão
prontos para instalar, configurar e usar (para saber mais veja a seção 8.1). Todo módulo tem uma
pasta com seu nome no diretório “public_html/sites/all/modules/”. Os módulos de sistema, padrão
da instalação, estão apenas no diretório “public_html/modules/” e não devem ter seus códigos
alterados.
A figura abaixo refere-se a umas das categorias de módulos do Drupal. Esses módulos foram
implementados durante o projeto e são específicos para os propósitos do site.

Figura 12: /admin/build/modules

4.4 Temas
Um tema é um conjunto de especificações em código acerca da apresentação do site. Assim como os
módulos, os temas também podem ser baixados e instalados. Para isso, basta descompactar sua pasta
no diretório dos temas. Por exemplo, “Cênicas” é o tema atual e sua pasta encontra-se no diretório
“public_html/sites/all/themes”. Para modificações do código de um tema veja a seção 6.

Na página dos temas é possível definir qual tema será o padrão a ser utilizado no site. As
configurações possíveis pela IDE são: ativar a visibilidade de certos elementos (logo, caixa de busca e
outros), configurar o cominho da logo e do ícone para o site. Veja a figura 7.
Figura 13: /admin/build/themes/settings/cenicas
4.5 Traduzir a interface
O idioma padrão do Drupal é o inglês. Portanto muitos módulos instalados exigirão a tradução de
itens que são de interface com o usuário. Portanto, nessa página é possível buscar essas expressões e
traduzi-las para o português.

Figura 14: Páginas em www.primeirosinal.com.br/admin/build/translate

4.6 Urls Alternativas


Algumas urls contém caracteres indesejados como a url original da página “Quem somos”
(http://www.primeirosinal.com.br/node/24). Essa url foi gerada automaticamente ao enviar o
conteúdo e foi alterada para uma url mais “amigável” (http://www.primeirosinal.com.br/quem-
somos). Para inserir uma url alternativa basta ir em Nova Url e digitar as duas urls (veja a figura
abaixo).
Figura 15: /admin/build/path/add

4.7 Views

Esse módulo permite construir novas visualizações para o Portal, assim é possível para um Tipo de
Conteúdo inserir, re-escrever ou excluir campos que foram cadastrados pelo formulário. Todas as
páginas da seção “Agenda” mais a seção “Dicas do Internauta” e seus respectivos blocos na página
inicial foram criados usando essa ferramenta.

A primeira página em Views lista todas as visualizações construídas para o portal, veja a figura
abaixo. Ao lado de cada “view” encontra-se as operações “editar”, “exportar”, “clonar” e “apagar”.

Figura 16 Todas as View's cadastradas do site

Inserindo uma View


Para inserir uma nova visualização clique em “Add” na página anterior. Dê um nome para a sua
View, uma descrição que aparecerá apenas na página de visualização das Views e escolha o tipo
“Node” (essa opção é para configurar o layout de conteúdos do site). Ao clicar em “Next” você será
redirecionado para a página de configuração da View (figura 20) e cada elemento de configuração
será explicado a seguir.

Display

O “Display” define o formato da visualização (as opções mais usadas no portal são “Página” e
“Block”). Ao escolher “Página”, por exemplo, é necessário preencher a url da página que será criada.

Figura 17: Aréa onde define-se os formatos que a View poderão ser exibidos.

Configurações Básicas

Título: Para o display “Página” será o título da página.

Style: disponibiliza 4 estilos de visualizar o conteúdo:

Grid – Uma matriz . Interessante para uma galeria de imagens, por exemplo;
HTML List – Usa listas de HTML;
Tabela – Usará o estilo de tabela padrão do site;
Sem formatação – Aparecerá um conteúdo abaixo do outro;

Row style: Diz se o conteúdo é incluído campo a campo (opção “Fields”) ou se é para usar a
visualização padrão de um Node. A primeira escolha exige que seja inserido ao menos um campo na
visualização, para adicionar clique no ícone “+” do bloco Fields.

Use pager: Para uma quantidade grande de conteúdos é interessante mostrar um paginador.

Items to display: Diz quantos itens mostrar por página. Essa e a opção anterior são muito usadas
nas páginas da seção Agenda.

Access: Seleciona os grupos de usuários que poderão visualizar o conteúdo.

Header: Insere qualquer texto, incluindo código, antes da visualização;


Rodapé: Insere qualquer texto incluindo código, após a visualização;

Empty text: Mostra um texto caso o conteúdo seja vazio. Isso pode ser usado como uma mensagem
de retorno para o internauta, informando-o de que “o conteúdo não foi encontrado”.

Theme Information: Exibe os diversos arquivos que podem ser criados para sobrescrever o
template utilizado pela View atual (figura 18). O código do template utilizado encontra-se no link à
esquerda (não é aconselhável escrever esse código do zero). O arquivo contendo o novo template
deve estar na pasta do tema (“public_html/sites/all/themes/”). A última tarefa é clicar em “Rescan
Template Files” para que o Drupal encontre o novo template e o associe a visualição que está sendo
criada.

Figura 18: Informações dos temas usados pela View em um dado momento

Argumentos

Argumentos são parâmetros passados pela url da página. No portal o endereço


http://primeirosinal.com.br/agenda/espetaculos/304 ,por exemplo, envia como argumento “304”
que é o NID do conteúdo que deve ser mostrado. A vantagem é que se tem uma configuração única e
uma página desempenhando o papel de duas (mostrando todos os itens ou apenas um específico).

Os argumentos usados no portal é um Node:nid mas também poderia ser um Node:title, por exemplo.

Ao adicionar um argumento é necessário especificar para o Drupal a qual objeto se refere o


argumento passado (veja a figura abaixo). É a partir dessa informação que dizemos ao Drupal que o
argumento 304, por exemplo, é um NID.

Após adicionar o objeto temos basicamente que alterar os seguintes dados:

Em Title, muda-se o título da página quando o argumento estiver presente.


Em Wildcard, configura-se uma palavra-chave para o argumento ser excluído.
Em “Validator options” pode-se restringir os grupos de usuários que poderão usar o argumento bem
como validar o argumento com código PHP.
Figura 19: Objetos que o Drupal pode utilizar para criar os argumentos. Esse formulário também será mostrado
ao adicionar ‘Fields’, ‘Sort Criteria’ ou ‘Filtros’.

Fields

Aqui é permitido incluir campos para a saída do conteúdo. Esses campos podem vir de informações
obtidas pelo Drupal sobre o próprio conteúdo (autor, nid, titulo, corpo do texto, data de criação, etc.),
estatísticas daquele view (n° de usuários que visualizaram o conteúdo) ou outros campos do conteúdo
que foram definidos com a ferramenta “Tipos de Conteúdo”.

Nota-se que as ferramentas “Tipos de Conteúdo” e “Views” juntas tornam muito mais fácil a
construção de um site.

Ao adicionar um campo, um Node:nid por exemplo, é possível:

- Em Label, redefinir o rótulo do campo.


- Excluir o item da visualização. O NID, por exemplo, não deveria ser visualizado na página. Ele pode
apenas ser incluído para participar de outros campos, o que acontece nos links da página inicial do
portal.
- Incluir um Link no campo para um URL qualquer.
- Reescrever a saída com qualquer texto, incluindo código HTML. Pode-se também usar um
“Replacement patterns”, que na verdade é usar as saídas de outros “Fields” já incluídos para fazer
parte da saída do campo atual (isso é exatamente o que foi feito para contruir os link para um
conteúdo específico da página inicial do portal).
- Incluir um Link no campo para a URL do seu node (ele será visualizado do modo padrão).

Essas são as opções mais utilizadas nas View’s do portal.


Sort Criteria

Constrói a lógica de ordenação dos conteúdos. O que se fez na maioria das visualizações do portal foi
definir um ordenação por data de modificação do conteúdo ( Node: Update Date).

Filtros

O filtro deveria ser o primeiro item a ser configurado. O filtro, como o próprio nome sugere, seleciona
qual conteúdo será mostrado de acordo com seu Tipo, seu NID, o usuário que o criou, etc. Como
anteriormente se alguns campos do conteúdo foram criados em “Tipos de Conteúdos” pode-se
também filtrar usando informações desses campos. Outra utilidade dos filtros é quando o marcamos
como exposto (botão “Expose”). Isso fará com que o próprio internauta na página de visualização do
conteúdo possa escolher qual conteúdo será mostrado. Nas páginas “Cursos e Oficinas”, “Festivais e
Eventos”, “Guias de Espetáculos” e “Dicas” isso foi utilizado.

Figura 20: A página de configuração da View


5. Configuração do site
5.1 Desempenho

Essa página possibilita ativar ou desativar o cache de páginas para os usuários do site (que não
possuem conta. Ativar a cache torna as páginas mais rápidas, uma vez que todo o processo de
construção da página é desnecessário pois o resultado final está armazenado no Banco de Dados. É
possível também estabelecer que todo os arquivos CSS e Javascript serão mesclados, isso diminui o
número de conexões com o servidor e contribui para a renderização rápida da página. Outro item
bastante utilizado no desenvolvimento é a opção de “limpar o cache” (veja a figura 10) . Algumas
vezes modificamos os códigos de algumas páginas anteriormente desenvolvidas e observamos que
essas não se atualizam. Uma possível causa para esse problema é a falta de atualização da cache.

Figura 21: /admin/settings/performance

5.2 Informações do site


Nessa página configura-se informações como:

 Nome do Site;
 Endereço de e-mail para contato;
 Slogan e Missão do Site;
 Nome para definir usuários que não possuem conta no site;
 Texto do Rodapé do Site;
 Endereço da página utilizada como página inicial.
6. Gerenciamento de usuários
6.1 Roles
Um papel é basicamente uma categoria na qual um ou mais usuários são classificados. Assim é
possível definir níveis diferentes de acessos ou responsabilidades de cada grupo de usuário, que é a
próxima opção. Os papéis “usuário anônimo” e “usuário autenticado” são padrão da ferramenta. Os
papéis do site são mostrados na figura abaixo.

Figura 22: /admin/user/roles

6.2 Permissões
Determina quais elementos da interface podem ser visualizados pelos papéis de usuário existentes.
Na página de permissões (figura 12) encontra-se uma tabela com as atividades (linhas) e os papéis
(colunas) do site.

Figura 23: /admin/user/permissions


6.3 Users
Área de gerenciamento dos usuários cadastrados no Portal. É possivel nessa página: bloquear,
desbloquear ou remover o usuário, adicionar ou excluir um papel do usuário (figura . Em “Edit”
obtém-se as infomações cadastradas da conta escolhida. Nessa última página é possivel também
atualizar a senha da conta.

Figura 24: Lista de Usuários do Portal.


7. Layout

7.1 Temas
Para o Drupal um tema consiste em uma pasta com o nome do tema localizada no diretório
“public_html/sites/all/themes/” e composto dos seguintes arquivos:

 nomedomodulo.info
 style.css
 screenshot.png
 page.tpl.php
 favicon.ico (opcional)
 template.php (opcional)

O arquivo “screenshot.png” é uma imagem miniatura do site quando aplicado o tema. Essa imagem e
as informações sobre o tema no arquivo “nomedomodulo.info” apareceram na página dos temas. O
arquivo style.css deverá conter os estilos principais do site. O arquivo “favicon.ico” é um arquivo de
imagem (geralmente 32x32) que apresenta um ícone que assimila a imagem do site para o usuário,
veja o exemplo abaixo.

Figura 25: Ícone do arquivo Favicon para o site do google

Em “template.php” pode-se colocar funções que sobrescrevem o que os módulos de sistema do


Drupal fazem. Veja o exemplo abaixo onde modificamos a apresentação do “breadcrumb”.

1 ; $Id: template.php, v 1.0 2008 Exp $


2
3 function cenicas_breadcrumb($breadcrumb) {
4 if (!empty($breadcrumb)) {
5 return '<div class="breadcrumb" style="background:#eee;">'. implode(' * ', $breadcrumb)
6 .'</div>';
7 }
8 }
9

Figura 26: Breadcrumb modificado pela função do tema

Como criar um tema do “zero” é complicado, o que se faz é adaptar um tema pronto. Esses podem ser
encontrados no site oficial do Drupal, especificamente no endereço
http://drupal.org/project/Themes.
Criando uma nova região

As regiões são utilizadas pelos blocos (veja a seção 4.1) e são criadas a partir do arquivo
“nomedomodulo.info”. Utilizando como exemplo o tema “cênicas” é mostrado abaixo o arquivo
“cenicas.info” contendo as informações pertinentes ao tema como o nome do tema e as 6 regiões
atuais.

1 ; $Id: cenicas.info,v 1.0 2008 Exp $


2 name = Cenicas
3 description = Tableless, multi-column, fluid width theme.
4 version = VERSION
5 core = 6.x
6 engine = phptemplate
7 stylesheets[all][] = style.css
8 regions[sidebar] = menu
9 regions[sidebarright] = menu_direita
10 regions[sidebarleft] = menu_esquerda
11 regions[footer] = rodape
12 regions[body] = corpo
13 regions[header2] = cabecalho2
14 regions[header3] = cabecalho3

O código para controlar a saída dos blocos está no arquivo “page.tpl.php”. A região “cabeçalho2”, por
exemplo, é controlada pelo seguinte trecho de código:

1 <!-- item cabecalho -->


2 <?php if ($header2){ ?>
3 <div id="header-region2"><?php print $header2></div>
4 <?php } ?>
5 <!-- end item cabecalho -->

O arquivo “page.tpl.php”

Esse é um arquivo muito importante na criação de um tema. As alterações nesse arquivo resultam em
alterações em todas as páginas do site. Assim, alguns scripts e estilos que servirão para todo o site
são inseridos diretamente nesse arquivo. Observa-se também que elementos comuns são as
marcações dos códigos das regiões usadas pelos blocos, como mostrado anteriormente. Pelo fato
desse arquivo juntar código PHP e HTML deve-se manter esse arquivo com o mínimo de informações
possível. Assim, devemos avaliar se códigos PHP inseridos diretamente aqui podem ser transferidos
para um novo bloco criado pela IDE do Drupal.
7.2 Sobrescrevendo visualizações
Em muitas ocasiões desejamos modificar o modo que o Drupal constrói a visualização de alguns
elementos da página. Essas modificações são feitas através de arquivos de templates, como o
“page.tpl.php”.

Criando novos arquivos de template é possível fazer modificações específicas na apresentação de uma
página, de um bloco ou de um node. Algumas modificações possíveis são:

 reordenar as saídas dos elementos


 inserir novos ou remover arquivos css ou js incluídos na página
 remover código desnecessário tornando o arquivo mais legível
 inserir código específico da página (embora seja o mesmo que criar um novo bloco)

A página “quem somos” (http://www.primeirosinal.com.br/node/24) , por exemplo, poderia ter uma


visualização diferente: o título poderia ser apresentado antes das imagens aleatórias (reloadlogos).
Para fazer isso criamos um arquivo de template que inicialmente é a cópia do arquivo “page.tpl.php” e
alteramos seu nome de acordo com a url da página: “page-node-24.tpl.php”. A modificação
necessária é reordenar os códigos abaixo

<h1><?php print $title; ?></h1> e <div id='reloadlogos'></div>

O resultado como teste é mostrado abaixo. Nota-se que foram removidos outros trechos de códigos de
algumas regiões2 e arquivos css.

Figura 27: Modificação da página "quem somos" através de template

Semelhantemente, pode-se sobrescrever a visualização:

 de um Node (arquivo “node.tpl.php”)


 de um Bloco (arquivo “block.tpl.php”)
 da página Inicial (arquivo “page-front.tpl.php”)
 de um comentário (arquivo “comment.tpl.php”)

2
Atenção: Após retirar o código de uma região de um arquivo template vá para a página de administração dos blocos e configure-o
para não ser construído para a tal página. Isso tornará a criação da página mais rápida.
8. Programando com a API
8.1 Módulos
Módulos são funcionalidades extras para o site. Existem vários módulos desenvolvidos pela
comunidade que estão prontos para serem instalados. Esses módulos podem ser obtidos em
http://drupal.org/project/Modules. É sempre bom instalar módulos recomendados para a versão
corrente do Drupal (no caso a versão 6.x)

Para instalar um módulo:

1. Descompacte a pasta do módulo no diretório “public_html/sites/all/modules/”


2. Vá para a página de administração dos módulos
http://primeirosinal.com.br/admin/build/modules
3. Procure pelo módulo na tabela e marque sua caixa de seleção.
4. Envie o formulário. O módulo estará na página de Administração caso necessite de
configurações.

Para criar um módulo:

Crie uma pasta com o nome do módulo. Utilizarei como exemplo o módulo “Opiniao”.

 Crie o arquivo “nomedomodulo.info”. As informações da página de administração dos módulos


fazem leitura desse arquivo.

1 ; $Id: opiniao.info,v 1.0 2008 $


2 name = Opiniao
3 description = Permite enviar e visualizar os artigos dos colaboradores.
4 core = 6.x
5 package = AA - Especificos
6 version = "6.x.1"
7 dependencies[] = content
8 dependencies[] = banco_img

 Crie o arquivo “nomedomodulo.install”. Esse arquivo conterá as duas funções abaixo.

1 <?php //$Id: opiniao.module,v 1.0 2008 $


2
3 function opiniao_install(){
4 drupal_set_message('O m&oacute;dulo opiniao foi instalado com sucesso.');
5 }
6
7 function opiniao_uninstall(){
8 drupal_set_message('O m&oacute;dulo opiniao foi desinstalado com
9 sucesso.');
10 }

 Crie o arquivo “nomedomodulo.module”. Esse arquivo conterá códigos da API e será aborda na
próxima seção.
8.2 Menus
Na seção anterior criou-se o arquivo “nomedomodulo.module”. Nesse arquivo deve se encontrar os
códigos que geram páginas e blocos, fazem consultas ao banco, criam formulários, etc. Também é
nesse arquivo que se encontra o código para criar o menu (ou apenas uma URL para uma página).

A função abaixo define um item de menu.

1 function nomedomodulo_menu( ){
2 $items = array();
3
4 $items['bdimagens/visualizar'] = array(
5 'title' => 'Pagina de Teste',
6 'description' => 'Veja um teste.' ,
7 'page callback' => „nomedomodulo_page_exemplo‟,
8 'page arguments' => array(1),
9 'access callback' => 'user_access',
10 'access arguments' => array('access content'),
11 'type' => MENU_SUGGESTED_ITEM ,
12 'file' => 'banco_img.pages.inc',
13 );
14 return $items;
15 }

A chave de cada vetor do vetor $items é a própria URL desejada. Cada item é abordado a seguir:

„title‟ – texto de saída do menu.


„description‟ – ao se colocar o mouse sobre o menu esse texto aparecerá.
„page callback‟ – função que será chamada quando o usuário entrar na URL.
„page aguments‟ – parâmetros a ser passada para a função definida acima.
„access callback' – define quem pode ver/acessar o menu.
'access arguments' – define quem pode acessar o conteúdo.
„type‟ – menus podem ser do tipo:

MENU_NORMAL_ITEM = viram item de Menu ativos;


MENU_SUGESTED_ITEM = viram item de Menu não ativos e editáveis;
MENU_LOCAL_TASK = viram Guias;
MENU_CALLBACK = são apenas URLs;
MENU_DEFAULT_LOCAL_TASK = define qual item é a opção default de várias Guias;

Para visualizar os resultados de qualquer modificação nessa função deve-se salvar o arquivo e
“compilar” o código na página de módulos do site
(“http://www.primeirosinal.com.br/admin/build/modules”).
8.3 Criando uma página
Para criar uma página primeiramente devemos criar sua URL, portanto veja a seção Menus, que se
segue. Após isso ser feito criamos nossa função:

1 function nomedomodulo_page_exemplo( ){
2 $html = „<BR>Qualquer codigo HTML</BR>‟;
3 return $html;
4 }

As funções que se seguem são chamadas de dentro da função “nomedomodulo_page_exemplo”.

título da página

1 drupal_set_title(„titulo da pagina‟);

adicionando CSS e Javascript

1 drupal_ add_css(„/sites/all/scripts/meuarquivo.css‟);
2 drupal_ e drupal_add_js(„/sites/all/scripts/meuarquivo.js‟);

Ainda existe a função abaixo que adiciona qualquer código entre a tag <header></header> do HTML

1 drupal_set_header(„string‟);
8.4 Formulários
Criar formulários utilizando a API é altamente recomendado. Abaixo é demonstrado como criar um
formulário para o envio de comentários, por exemplo.

Observe os padrões dos códigos:

$form[„ #action‟] – o link da página que tratará as informações do formulário.


$form[„nomeDoCampo‟] – nome do item do formulário. Esse nome é importante para a
recuperação do item.
'#title' – Um texto sobre o campo para o usuário.
#„type‟ – o tipo do campo: área de texto, campo de texto, botão de envio.
#„required‟ – define se é obrigatório o preenchimento do campo.
#„value‟ – valor inicial do campo.

1 function nomedomeumodulo_form_cadastrar() {
2 $form['#action'] = url('blog/cadastrar');
3
4 $form['nome'] = array(
5 '#type' => 'textfield',
6 '#description' => 'Seu nome',
7 '#required' => TRUE,
8 '#rows' => 10,
9 );
10
11 $form['comentario'] = array(
12 '#type' => 'textarea',
13 '#required' => TRUE,
14 '#description' => t('Comente sobre o nosso site') ,
15 '#rows' => 10,
16 '#cols' => 10
17 );
18 $form['Enviar'] = array(
19 '#type' => 'submit',
20 '#value' => 'Enviar'
21 );
22 return $form;
23 }

Para um formulário ser exibido como abaixo é necessário criar uma página como anteriormente e
utilizando a função drupal_get_form(„nomedomeumodulo_form_cadastrar‟). Assim, teríamos:

1 function nomedomeumodulo_page_bemvindos() {
2 drupal_set_title(„Meu Site‟);
3 $output = t('Seja Bem Vindo ao site!<br />') ;
4 $output .= t(„Envie-nos um comentario sobre o site!<br />') ;
5 $output .= drupal_get_form(„nomedomeumodulo_form_cadastrar‟) ;
6 return $output;
7 }

A figura abaixo mostra o resultado desse código.


Figura 28: Formulário de teste

Para obter os dados enviados utilizamos a função abaixo. Observe que o nome dessa função tem o
nome da função do formulário seguido de “_submit”. Os dados do formulário encontram-se na
variável $form['#post']. Após acessar esse vetor observa-se que cada campo do formulário está
igualmente como definido na função “nomedomeumodulo_form”.

1 function nomedomeumodulo_form_submit( $form ){


2 $f = $form['#post'];
3 print “Obrigado, ” . $f['nome'] . “ por se cadastrar!”;
4 }
8.5 Funções para o Banco de Dados
As funções de banco de dados são recomendadas para aplicações que podem utilizar tanto banco de
dados Mysql como Postgree. Quem já conhece os métodos da linguagem PHP para interação com
Banco de Dados não se surpreenderá com os nomes abaixo.

Executando um Consulta (query)

Executa uma query, uma consulta a uma tabela do Banco de Dados. Semelhante a mysql_query( ).

1 $sql = "SELECT * FROM nome_da_tabela" ;


2 $resultado = db_query($sql) ;

Resultado de um Campo da Tabela

Semelhante a função mysql_result( resultado, i, j ) que retorna o valor de um campo da tabela de


acordo com os índices i e j da tabela. No exemplo abaixo podemos mostrar uma mensagem a um
usuário cadastrado no banco. O resultado é observado na imagem que se segue.

1 $resultado = db_query( "SELECT name FROM users WHERE uid=0" ) ;


2 $nome_usuario = db_result( $resultado ) ;
3 drupal_set_message("Ol&aacute;, $nome_usuario !" ) ;
Glossário
FTP: Protocolo usado para transferência de arquivos entre diferentes máquinas. Utiliza-se
geralmente uma ferramenta como o FILEZILLA para essas transferências.

Hook: Uma função que será processada pelo Drupal podendo alterar configurações internas da
ferramenta.

NID: Um código numérico que identifica um Node.

Node: Um Node é um conteúdo que provêm de algum tipo de conteúdo e que pode ser identificado
por seu NID.

Role: Um perfil de um grupo de usuário contendo as permissões que esses usuários possuem no site.

Template: Um conjunto de definições (tamanho, cor, disposição) sobre a apresentação de um


documento qualquer.

UID: Um código numérico que identifica um Usuário.

View: Um conjunto de regras para definir a visualização de algo no Drupal.

Você também pode gostar