ong asoc
Nota: Vou utilizar termos originais em inglês do Drupal
Neste sequência de tutoriais vamos criar um tema para um site em Drupal 6 e entender várias questões relacionadas à tema.
Um tema para Drupal 6 possui algumas diferenças em relação ao Drupal 5.
Como não é o objetivo deste tutorial trabalhar com outra versão do Drupal que não seja a versão 6, então vamos focar a criação de temas para Drupal 6 como se não tivéssemos qualquer conhecimento do assunto e começaremos do zero.
Vamos iniciar criando um template sem pensar no Drupal ainda, para termos uma noção de como adaptaremos futuros templates nossos ou de terceiros.
Por isto, caso você já tenha conhecimento de como o Drupal trabalha com os temas, e como são feitas as nominações dos arquivos, lembre-se que estamos apenas criando o que seria um "template" para o site primeiro, assim como você encontra nos sites de templates ou como você pode receber pronto de seu cliente.
Sempre gosto de citar algo importante quando trabalhamos com algo "OPENSOURCE":
Ao utilizar uma tecnologia OpenSource, sempre que possível "SOBREESCREVA" ou "EXTENDA" os recursos da mesma; nunca modifique!
E no Drupal encontrei muita flexibilidade considerando isto. Até mesmo os recursos usados pelos temas podem ser extendidos ou sobreescritos sem precisar mexer no código original do sistema.
Um tema é uma coleção de arquivos utilizados para criar uma interface para o usuário final do site ou aplicação.
Nele encontramos vários componentes de acordo com as necessidades desta interface.
Num tema para página HTML temos basicamente: uma arquivo HTML, um ou mais arquivos CSS, um ou mais arquivos Javascript e uma ou mais Imagens.
Todo tema possui um Layout que é a forma como os componentes ou elementos de um tema são distribuitos num espaço limitado e definido previamente.
Todo site precisa de um Layout, é claro! E esta definição pode poupar em muito o trabalho, pois o fato do Layout possuir 2 ou 3 colunas, navegação na esquerda ou na direita e assim por diante, torna mais rápido o desenvolvimento de um projeto.
Com o Drupal é possível ativar ou desativar as colunas esquerda ou direita , por isto, caso seu Layout precise usar 3 colunas, ou 2 colunas em alguma página ou seção do site, então é preciso projetar o site com suporte à 3 colunas.
Vamos pensar então que nosso site é um blog, e que o mesmo possui apenas 2 colunas, mas... que futuramente você planeja adicionar mais recursos ao seu site e precise ativar outra nevegação, então vamos deixar isto já preparado para que futuras modificações no seu Layout não se tornem um pesadelo!
Definido o Layout de 3 colunas, vamos pensar na estrutura HTML do mesmo.
Um Layout para uma página HTML possui várias camadas, que já veremos como são definidas.
Todo Layout possui 2 camadas que compoem desde já a estrutura do site ou aplicação e que fazem parte do documento HTML em si, e são: "HTML" e "BODY".
Estas TAG's tanto podem ser usadas para auxiliar no Layout de seu site, como também podem ser utilizados para estilizar seu site ou aplicação.
Em um site de 3 colunas, além delas temos o "CABEÇALHO" e o "RODAPÉ".
Nosso Layout está retido por um divisor (DIV) no documento que decidi nomear como "EXTERNO".
Dentro dele vamos então ter a estrutura que desejamos, ou seja "CABEÇALHO, ESQUERDA, CENTRO, DIREITA e RODAPÉ".
Veja na figura abaixo a estrutura de nosso Layout colorido para fins de distinção. Note que as tags HTML e BODY estão sendo usadas aqui também:
Imagem 1

Vale lembrar novamente que estamos criando somente o Layout por enquanto independente do Drupal ou preocupados com o visual ou design do site por enquanto.
Crie um arquivo chamado index.html e coloque o código abaixo:
Nota: O DIV com o id "direita" foi colocado antes do centro, pois assim é possivel trabalhar o posicionamento com as Folhas de Estilos.
Como precisamos criar a estrutura de nosso layout com posicionamentos precisos, vamos utilizar Folhas de Estilos (CSS) .
Crie um arquivo chamado estilo.css e coloque o código abaixo:
Nota: Para visualizarmos a estrutura inicial de nosso Layout, colocamos uma borda em todos os DIV's, posteriormente vamos retirá-las.
Atualmente, nossas camadas do Layout estão sendo exibidas uma baixo da outra dentro do DIV com id "externo".
Veja na imagem como está o resultado de nosso layout:

Podemos ter várias possibilidades de Layouts, não vou colocar um print para cada senão seria perca de tempo, mas vou listar abaixo algumas da possibilidades. Vou usar o nome das camadas aqui da esquerda para a direita indicando a movimentação das colunas com o CSS:
Vamos usar uma técnica CSS muito boa quando desejamos trabalhar com um mesmo Layout dinâmico como é o caso do Drupal.
Precisamos criar uma regra para que na ausência de uma coluna o Layout continue sempre inteiro e as colunas nos seu posicionamentos corretos.
A técnica é simples!
Colocamos um seletor de classe CSS na tag BODY do documento que irá fazer com que o CSS posicione os DIV's de acordo. Continue lendo que você vai entender.
Como vimos anteriormente, é possível ter várias combinações e obter vários tipos de Layouts diferentes, por isto, vamos decidir usar apenas os 3 mais comuns na maioria dos sites e blogs. Após terminado este tutorial você poderá criar outras combinações e fazer a festa!
Vamos então ficar com:
As classes CSS da tag BODY que vamos utilizar são:
Nota: Algumas empresas ou profissionais em si têm padrões para nomenclatura em seu código CSS, JavaScript, etc, por isto, este padrão se adapta bem à este tutorial, mas se preciso for modifique antes de apresentar à sua empresa ou cliente.
Por exemplo, quando eu colocar "lateral-esquerda" no atributo "class" da tag BODY, eu vou ter um conjunto de seletores CSS que já estão predefinidos para carregar o Layout sem a coluna da DIREITA, e extendendo o CENTRO; quando eu quiser mostrar a coluna da ESQUERDA e ocultar a da direita eu coloco "lateral-direita".
Tudo isto é feito pelo CSS, então você pode mudar isto à vontade depois, entretanto, vale lembrar que não estamos modificando aqui a posição da coluna, ou seja, a ESQUERDA é a coluna da esquerda; se quisermos mudar o conteúdo da ESQUERDA para a DIREITA precisaríamos criar outros seletores ou usar uma tecnologia dinâmica, e é claro, aqui entra o Drupal! Veremos isto mais adiante.
Então, para a lógica funcionar, vamos precisar acrescentar alguns conjuntos de seletores que irão alterar o posicionamentos das camadas ESQUERDA, CENTRO E DIREITA em nosso Layout.
A princípio parece muito código, mas o resultado final é mais do que o desejado.
Abaixo as modificações no arquivo estilo.css já com os posicionamentos para todos os casos acima:
Para testar agora é facil!
Crie um atributo "class" na tag BODY do documento e coloque o valor "laterais":
Você vai ver o layout como já estava antes, com três colunas.
Agora mude o valor do atributo class para "lateral-esquerda"; veja o resultado, e mude para "lateral-direita".
Se tudo ocorreu corretamente, então você deve ter notado a flexibilidade desta técnica.
Finalizamos aqui esta parte do Layout no formato de template. Vamos agora ver como o Drupal trabalha com templates e temas e como adaptar este template que criamos para o Drupal 6 transformando-o em um tema.
Primariamente, o Drupal possui um motor de temas interno e uma ferramenta de templates próprios ,chamado PHPTemplate; então quando os temas precisam ser processados pelo sistema o motor de temas do Drupal liga-se ao PHPTemplate e retorna uma interface para o usuário de acordo com as informações pré-definidas pelo administrador do sistema. Este processo torna o tempo de execução mais rápido.
No entanto, como o Drupal é um sistema muito flexível, ele pode utilizar outras ferramentas de templates, tais como: Smarty, PHPTAL, XTemplate entre outros disponíveis. Para adaptar uma nova ferramenta ao Drupal, visite http://drupal.org/project/Theme+engines e baixe os motores para a ferramenta desejada, caso ela exista. Vale lembrar, que estes motores não são parte de qualquer versão oficial do Drupal e por isto podem apresentar problemas e perca no desempenho no tempo de execução.
Vamos nos reter ao PHPTemplate que por si é muito rápido, prático e fácil de se usar.
Historicamente, o PHPTemplate foi criado por Adrian Rossouw. Apartir da versão 6 do Drupal algumas modificações foram feitas e a forma como o tema processa o PHPTemplate foi melhorado e algumas funções de tema não existem mais, entretanto são chamadas dinamicamente.
O PHPTemplate utiliza arquivos no formato "alguma-coisa.tpl.php".
Explicando melhor, "alguma-coisa" é pelo fato de que quase qualquer coisa na interface do Drupal poder ser tranformada em um arquivo de template pelo mesmo. Ou seja, temos como trabalhar separadamente no tema com os Blocks, Boxes, Comments, Nodes, Pages, etc...
O complemento ao nome ".tpl" indica o uso de um arquivo template explicitamente.
Todos os arquivos de template atualmente são arquivos com a extensão ".php".
Um tema no Drupal 6 possui uma estrutura padrão e alguns arquivos padrões deverão estar presentes no diretório onde o tema se encontra, veja a imagem abaixo:

Fonte da imagem: http://drupal.org/node/171194
Entendendo esta estrutura, temos:
Os demais são bem intuitivos, logo.png é o logotipo usado pelo tema, style.css é a folha de estilos e screenshot.png é uma miniatura para dar uma visualização prévia na área de adminsitração de temas.
Vamos agora ver como um tema é criado.
Primeiramente, vamos criar uma pasta dentro de sites/all/themes. Caso a pasta "themes" não exista, não perca tempo e crie agora mesmo.
Criada esta pasta, vamos criar o arquivo ".info" que vai ser responsável por passar as informações necessárias para o Drupal trabalhar com nosso tema.
Nosso tema será chamado "tutorial", logo o arquivo ".info" deverá ser nomeado como "tutorial.info".
Dentro da pasta em sites/all/themes/tutorial, crie o arquivo "tutorial.info".
Criado este arquivo vamos colocar nele as informações necessárias.
Nota: Seus temas devem ser salvos em "sites/all/themes" e jamais na pasta de temas do drupal.
Um arquivo .info é um arquivo .ini. Cada linha é um par chave = valor e comentários são precedidos por ponto e vírgula ( ; ).
Encontramos as seguintes chaves em nosso arquivo:
Vamos ver o que tudo isto significa:
name = Um Nome Qualquer description = Tema de 3 colunas em tableless para meu sitescreenshot = screenshot.png version = 1.0 core = 6.x engine = phptemplate base theme = garland stylesheets[all][] = outra-folha-qualquer.cssscripts[] = arquivo-javascript-qualquer.js php = 4.3.3Com toda esta quantidade de informação, vamos criar nosso arquivo "tutorial.info".
Coloque o código a seguir dentro do arquivo "tutorial.info":
Omitimos algumas chaves de nosso arquivo, pois não serão necessárias ou serão acrescentadas posteriormente.
Já informamos ao Drupal que temos um tema novo.
Se você acessar agora a administração de temas em "http://seusite/admin/build/themes", você já verá o tema "Tutorial" listado mais no final da listagem de temas disponíveis, entretanto sem uma imagem de pré-vizualização pois você não a criou ainda.
Depois do arquivo ".info", se não houver um arquivo "page.tpl.php" de pouco vai adiantar um tema, pois é neste arquivo que reproduzimos o Layout desejado.
Crie um arquivo com este nome na pasta do tema, e copie o código de nosso arquivo "index.html" do template que criamos anteriormente para este arquivo.
Remova as linhas que contem:
<link type="text/css" rel="stylesheet" media="all" href="estilo.css" />
e
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Crie um arquivo em branco e salve-o como "template.php".
Antes de mergulhar de cabeça em nosso tema, vou explicar a lógica de um template.
Uma ferramenta de template é responsável por separar a parte lógica da camada de apresentação do site ou aplicação.
Para que isto seja possível, no arquivo de template existem "chaves" que variam de ferramenta para ferramenta. O conteúdo do arquivo é obtido por algum recurso no sistema ou motor de tema e as chaves são substituídas em um novo arquivo que é gerado dinamicamente.
Para exemplificar melhor, o ELEMENTO "title" entre as tags HEAD do documento varia de acordo com a página ou seção; esta informação contém uma fonte de origem que está registrada em algum lugar, que pode ser um arquivo, um banco de dados, um array, etc... Mas, independente da origem, nossa ferramenta de template foi criada para processar tal origem e substituir esta chave a partir de um padrão, que nosso nosso exemplo pode ser #nome-da-chave# entre sustenidos, então bastaria colocar #title# entre as tags title que nossa ferramenta de template iria procurar o valor para tal chave no local onde ela foi instruída a processar.
No caso do Drupal, e mais especificamente, no PHPTemplate, as chaves utilizadas são variáveis PHP simples. Existem algumas variáveis-chaves pré-definidas no Drupal, mas você poderá criar as suas variáveis caso deseje, embora não haja necessidade aparente.
Utilidade Geral:
NOTA: Algumas variáveis usadas ai são somente para a área administrativa e o usuário final do site não terá qualquer acesso visual às mesmas; estão sendo citadas aqui para complementar estas informações. No arquivo page.tpl.php que estamos criando elas também serão usadas, mas sem muito foco nesta parte do tutorial, estamos trabalhando por enquanto em um tema para o site e não para a área adminstrativa em si. Em outra parte deste tutorial podemos continuar esta detalhação.
Agora que você já conhece todas as variáveis-chaves usadas n a página "page.tpl.php" que é a página principal do tema, podemos substituir algumas partes em nosso arquivo que somente possui HTML estático e substituir outras por algumas destas variáveis.
Veja nosso arquivo final. Leia os comentários para entender as alterações:
[ page.tpl.php ]
O Arquivo CSS padrão de todo tema para Drupal é o arquivo "style.css".
Crie um arquivo chamado "style.css" e coloque dentro da pasta do tema "tutorial".
Coloque o conteúdo de nosso arquivo "estilo.css" dentro de "style.css".
Estaremos incluindo alguns seletores a mais futuramente devido a colocação de novos DIV's dentro do Layout.
Se você prestou bem atenção até aqui, você já deve ter associado a linha do arquivo "tutorial.info" que contém:
Esta linha instrui o Drupal à incluir o arquivo "style.css" no tema em uso, neste caso tutorial.info.
Caso você queira adicionar novas Folhas de Estilo à seu tema, bastaria você acrescentar um linha trocando apenas o nome do arquivo:
Nota: Nosso tema não utilizará Javascript por enquanto, mas caso for preciso, a lógica seria a mesma; basta utilizar a chave "scripts".
Teoricamente, podemos dizer que nosso tema para Drupal 6 já existe. Para nosso tema ficar redondinho, vamos adicionar alguns arquivos mais básicos que vamos "copiar" da pasta do tema Garland, e que não precisam ser alterados por enquanto. Na próxima parte de nosso tutorial, vamos abordar estes arquivos e outros templates que fazem parte do Core (núcleo) do Drupal, e explorar um recurso chamado "suggestions" ou "sugestões". Os arquivos que vamos usar agora são:
Estes arquivos devem ser copiados e coloados em sites/all/themes/tutorial.
Por curiosidade e conhecimento, após copiar estes arquivos, abra-os e veja o conteudo deles. Você vai encontrar $variáveis-chaves parecidas com as do arquivo "page.tpl.php", entretanto, tais variáveis se aplicam ao conteúdo destes tipos de páginas e devem ser considerados isoladamente em cada arquivo que as contem.
Nosso tema não possui qualquer aspecto de design, imagens de fundo, etc... O objetivo deste tutorial não é criar um tema finalizado, profissional, com estilo visual "detonador". Por isto, sinta-se à vontade para criar o visual que desejar.
Após ter definido um visual para o tema, abra seu programa editor gráfico favorito e crie uma imagem de 150px por 90px. Dê um printscreen da tela com seu tema final sendo exibido, cole no seu programa de edição gráfica, e vá reduzindo até alcançar as dimensões acima. Salve este arquivo no formato ".png" com o nome "screenshot.png" dentro da pasta do tema.
Para seu tema alternar a exibição das colunas, abra o arquivo "template.php" dentro da pasta do tema do nosso tutorial, e coloque a função abaixo dentro dele:
Esta função, que já chamamos na tag BODY em nosso arquivo "page.tpl.php", verifica se o conteúdo da esquerda e direita existem ao mesmo, caso exista, define o valor do atributo class para "laterais" exibindo assim ambas as colunas; caso contrário, se o conteúdo da esquerda não estiver vazio, define o valor como "lateral-esquerda" e assim, se o mesmo não existir, define como "lateral-direita".
Para testar se o tema está funcionando, defina-o como padrão e veja o resultado. Ative blocos, na esquerda, depois na direita e em ambas as regiões e veja o resultado. Caso, o CSS apresente problema em algum navegador fique à vontade para modificar, afinal, este tutorial não é um tutorial de CSS, mas fico à disposição para receber possíveis informações de melhoramento através dos comentários.
Nota: Crie um Logotipo qualquer e salve como "logo.png" dentro da pasta do tema "tutorial".
IMPORTANTE: Para acompanhar todo esta parte do tutorial, você precisar ter conhecimentos em PHP razoáveis para entender como manipular funções.
Nesta segunda parte de nosso tutorial, vamos explorar uma ligação muito importante existente entre o arquivo ".info" de um tema, os outros arquivos templates fundamentais de um tema, os templates padrão e os "template suggestions" (alternativos).
Dica: No tutorial anterior me esqueci de dar uma dica importante. Quando estamos trabalhando com CSS, Javascript, ou mesmo os arquivos de templates nos temas do Drupal é preciso limpar o registro constantemente, caso contrário você não visualiza as alterações com facilidade. Para resolver este problema, abra o arquivo "template.php" do tema em uso, e coloque a chamada à função:
drupal_rebuild_theme_registry();
Uma vez feito isto, as atualizações constantes ficarão sempre disponíveis imediatamente. Entretanto, após terminado o processo de produção de um novo tema, retire a mesma linha do arquivo "template.php".
No Drupal é possivel utilizar um tema específico para a área administrativa e outro para o site em si. Navegue até "/admin/settings/admin" e veja que há um menu dropdown com os temas listados em ordem alfabética. Ao salvar as configurações com um tema diferente do site ao acessar as páginas administrativas você navegará com a interface usando o tema escolhido. Há um checkbox que permite ativar este tema para a área de edição/criação de conteúdos.
Para continuar com esta parte do tutorial, escolha o tema "Tutorial" e salve as configurações, embora o mesmo não esteja formatado corretamente ainda.
O arquivo ".info" possui um como que "segredinho". As chave "features" do arquivo ".info" de um tema para Drupal 6 tem um papel muito importante na área administrativa do Drupal.
Com elas é possivel ativar ou desativar o acesso à recursos no tema, como por exemplo o Logotipo, o Nome do Site, os Links Primários e qualquer Recurso (feature) existente no arquivo ".info" a partir de uma interface amigável.
O nosso arquivo "tutorial.info", que se encontra na primeira parte deste tutorial atualmente está sem qualquer chave "feature[]" e desta forma os valores padrões são assumidos e o acesso à todos estes recursos também.
Acesse a área administrativa do Drupal em /admin/build/themes/settings/tutorial e você deverá ver os seguintes checkboxes na página:

Se você notar, o checkbox "Site Slogan" está desmarcado e os checkboxes User pictures in posts, User pictures in comments e Searchbox estão desabilitados. Você deve estar se perguntando porque os três checkboxes estão desabilitados se eles são parte dos recursos padrões.
No caso de User pictures in posts e User pictures in comments, se dá pelo fato de a opção "Picture Support" estar marcada como "Disabled" por padrão. Acesse /admin/user/settings e altere esta opção para "Enabled" caso queira exibir imagens dos usuários em posts e comentários, e automaticamente os checkboxes ficarão habilitados.
Já no caso do "Search" é devido ao módulo não estar ativado. Ative o módulo que o checkbox será habilitado.
Vamos fazer um jogo rápido para comprovar a funcionalidade desta interface.
Abra o arquivo "tutorial.info", insira duas quebras de linhas após "engine = phptemplate" e coloque as chaves:
Agora comente as linhas:
Acesse /admin/build/themes/settings/tutorial e veja que os checkboxes comentados sumiram!

Eu alterei o arquivo ".info" e ao atualizar a página do navegador as alterações apareceram; caso você não veja alterações e todos os checkboxes continuem ali, vá em "/admin/settings/performance" e procure pelo botão "Clear Cached Data" logo no final do conteúdo desta página. Depois volte à "/admin/build/themes/settings/tutorial " e veja que os checkboxes sumiram. Isto é preciso pois estas informações ficam guardadas no cache do Drupal; uma nota interessante: o Drupal trabalha com Dados em Cache e tem um Registro de Temas, quando você trabalha com um tema e precisa limpar o Registro, você não está limpando o Cache do Drupal, senão estaria apagando outras informações relevantes ao sistema também armazenadas e vice-versão. Por este motivo não confunda o fato destas informações referentes ao tema estarem sendo armazendas em Cache e você ter que apagar todo o Cache para poder ver qualquer alteração.
Voltando ao nosso assunto. Estas alterações também são obtidas removendo as respectivas chaves no arquivo ".info" ao invés de comentá-las.
Vale lembrar aqui o seguinte: este recurso habilita ou não o usuário da interface de acessar tais recursos e ativar ou não os mesmos no site, entretanto, se você ocultar um item, ele não será desativado, somente não aparecerá na lista, e ainda, caso você oculte um item desmarcado isto quer dizer que não será permitido ao usuário da interface alternar para a ativação e vice-versa.
Algo que foi facilitado no Drupal 6 é a criação de Regiões personalizadas.
Uma região é um bloco de conteúdo existente e pré-definido pelo admistrador do site e que são passados ao tema pelas variáveis mais comuns: $header, $left, $right, $content e $footer.
As regiões são registradas no arquivo ".info" e podem ser acessadas pelas chaves regions[].
Os valores padrões não precisam ser especificados no arquivo ".info" entretanto, caso você queria personalizar seu tema e criar uma nova região, então você precisará inserir todas as regiões, pois ao inserir uma chave regions[] o Drupal vai analisar o conteúdo do arquivo, procurar pelos regions registrados e caso encontre uma ou mais de uma, o que ele não encontrar além disso entenderá que deve omitir da exibição.
Os valores padrões como já vimos na primeira parte de nosso tutorial são:
O que temos aí é simples de entender:
Então, para se criar uma nova região, como por exemplo, "publicidade" bastaria fazer o seguinte:
E logo você precisaria inserir as demais regiões padrões para não perder a visualização delas no tema.
Obrigatóriamente, limpe os dados em Cache em "/admin/settings/performance"; caso contrário, você não verá as alterações.
Uma vez feito isto, basta você criar um local dentro da estrutura de seu tema, e passar o nome da chave como variável, neste caso "$publicidade".
Para testar este recurso, altere o arquivo "page.tpl.php" do tema "tutorial" colocando o código abaixo logo acima do rodapé de nosso arquivo:
O arquivo "page.tpl.php" agora deve estar assim:
Depois de ter realizado as alterações acesse a área administrativa em "/admin/build/block" e veja que logo acima do rodapé apareceu uma nova região para o Block "publicidade" recém criado!

O Breadcrumb do Drupal não possui um local específico para ativá-lo ou desativá-lo, por este motivo algumas das soluções no caso de você não querer que o mesmo seja exibido em seu tema, são:
Agora que já temos uma boa base para entendermos os aspectos mais fundamentais de um tema para Drupal 6 podemos nos aprofundar no que há de mais belo no
Drupal: "o Poder Sobreescrever ou Extender quase tudo".
Podemos sobreescrever quase tudo em um Tema para Drupal 6 e isto nos dá muita flexibilidade.
Relembrando:
Ao utilizar uma tecnologia OpenSource, sempre que possível "SOBREESCREVA" ou "EXTENDA" os recursos da mesma; nunca modifique!
Imagine que você não goste da forma como o Drupal exibe algo por padrão nos módulos, usando o exemplo que se encontra na documentação do Drupal, você gostaria de colocar uma lupa no lado do formulário de buscas (Search Box). Então, você pode procurar pelo arquivo ".tpl" no diretório do módulo e copiá-lo para o diretório de seu novo tema. Feito isto, basta você abrir o arquivo e alterar livremente até obter o resultado desejado.
OBSERVAÇÃO: Como vamos estar trabalhando com atualizações constantes no tema a partir de agora, caso não tenha feito isto ainda, por favor, abra seu arquivo "template.php" e insira a linha abaixo na última linha do arquivo para que os registros de seu tema sejam limpos a cada atualização de página a fim de obtermos vizualização imediata das alterações.
drupal_rebuild_theme_registry();
O Drupal possui uma maneira bem simples de se sobreescrever algo:
NOTA: A auto descoberta de sobreescrita de temas é realizada pelo PHPTemplate, por isto é necessário que a chave "engine" no arquivo ".info" esteja com o valor para "phptemplate", caso contrário não irá funcionar.
Colocando isto em prática, caso você não tenha ativado o módulo Search, vá em "/admin/build/modules" e ative-o primeiro. Verifique se o formulário de busca está sendo exibido em algum bloco, caso contrário, vá em "/admin/build/blocks" e escolha uma posição para ele. Copie o arquivo "/modules/search/search-block-form.tpl.php" para "/sites/all/themes/tutorial/" e apague todo o conteúdo e insira o conteúdo abaixo:
Atualize sua página e você verá uma lupinha no lado do texto da busca igual à figura abaixo:.

Você viu como é fácil sobreescrever?
Vamos testar uma alteração realizada diretamente em uma função.
Abra o arquivo "template.php" e coloque o seguinte bloco após a funçao phptemplate_body_class():
Esta é a função intocada que gera o Breadcrumb padrão nos temas.
Renomeie "theme_breadcrumb" para "tutorial_breadcrumb".
Navegue até "/admin/settings/site-information" e caso você esteja utilizando outro tema para as páginas de edição de conteúdo, altere o tema para "tutorial" em "/admin/settings/admin" a fim de poder acompanhar esta sequência.
Você verá a seguinte exibição:

Como você pode ver o Breadcrumb está usando o separador " » ".
Note no código após o comando "return" da função "tutorial_breadcrumb" que o PHP está unindo (implodindo) as parte do array breadcrumb com o separador "»":
Embora isto seja legal, nós queros testar alguma alteração através de funções diretamente no arquivo template.php.
Modifique a função "tutorial_breadcrumb" conforme abaixo e atualize a página:
Você verá o breadcrumb alterado com imagens no lugar do separador:

O Núcleo (Core) do Drupal contém vários módulos que já vem pré-instalados. Alguns destes já são obrigatórios e outros permitem ser ativados depois da instalação, como é o caso do módulo Search.
Alguns dos módulos possuem arquivos templates e todos podem ser sobreescritos utilizando o procedimento que vimos anteriormente.
Segue abaixo a listagem completa dos arquivos templates padrões do Drupal. Para alterar um destes arquivos, basta copiá-lo para a pasta de seu tema.
"modules/block/..."
Na primeira parte deste nosso tutorial nós vimos as variáveis-chaves do arquivo "page.tpl.php".
Cada arquivo de template possui um conjunto de variáveis especificas.
Todas elas estão comentadas no cabeçalho de todos os arquivos ".tpl" e infelizmente estão em inglês limitando o total aproveitamente da interpretação somente por quem domina o suficiente do inglês.
Para salvar a barra dos amigos desenvolvedores que não dominam o inglês, vou deixar traduzido no final deste tutorial todos os termos encontrados em cada arquivo dos módulos no núcleo do Drupal. E se de alguma forma você precisar modificar algo no template destes arquivos, você poderá estar consultando futuramente como um guia de referência.
Além de ser possível extender os templates padrões da maior parte módulos do Drupal, também é possível ir um nível adiante e encontrar situações de personalização isoladas para um arquivo em especifíco a partir de uma sugestão gerada por um conteúdo criado sem precisar modificar todo o visual de um tipo de node, mas somente quando tal situação for encontrada. Complicou? Não! Veja o exemplo abaixo:
Suponha que você criou uma página (page) e que o "node" dela é "7", internamente o Drupal estará chamando o template padrão "node-tpl.php" para exibir o conteúdo.
Este "node" possui o tipo "page". Com estas duas informações já temos uma sugestão: "node-page.tpl.php". Bastaria você criar um arquivo com este nome, copiar o conteúdo de "node.tpl.php" dentro dele e modificá-lo para se adaptar às novas necessidades visuais. Com isto todo node do tipo "page" seria modificado de acordo com as alterações que você realizou no arquivo "node-page.tpl".
IMPORTANTE: Para que os Templates Alternativos funcionem é preciso que o template base (que é o template padrão usado para extender o tema) esteja no mesmo diretório do tema. Neste caso, por estarmos utilizando "node.tpl-php" este já deve estar em seu tema, mas caso você utlize outra sugestão de template, copie o template base para a pasta do tema em questão.
Vamos criar uma situação hipotética aqui onde você quer sua página limpinha sem nada além do título e conteúdo.
Crie uma "Page" com o Título "Currículo" e com o Conteúdo abaixo:
Agora crie um arquivo chamado "node-page.tpl.php". Copie o conteúdo do arquivo "node.tpl.php" para dentro deste novo arquivo.
Muitas coisas estão sendo exibidas ai, você somente quer o Titulo e o Conteúdo, então para agilizar o processo apenas copie o código abaixo para dentro de seu arquivo "node-page.tpl.php" removendo o que você colou anteriormente:
Você terá esta exibição:

Isto é muito interessante, mas não é a melhor solução em alguns casos!
Suponhamos que você criou 2 páginas para seu site (curriculo e servicos, respectivamente com os nodes de IDs 7 e 8) e que você gostaria de modificar somente estes dois nodes do tipo "page". Então encontramos uma situação isolada aqui, logo, o Drupal permite ir além e criar os seguintes arquivos templates isoladamente sem precisar alterar "todos" os nodes do tipo page como na situação anterior.
Agora, você pode criar estes dois arquivos e modificá-los isoladamente; copiando o conteúdo do arquivo node.tpl.php dentro deles e modificando-os.
IMPORTANTE: Neste caso você também precisa inserir o arquivo base "node-page.tpl.php" para a pasta de seu tema e criar uma função de pré-processamento, caso contrário não funcionará. Continue com o próximo tópico para resolvermos isto!
NOTA: NID é o Id do node em questão.
Vou tentar ser o mais breve possível aqui.
Uma função preprocess é usada para definir variáveis para um tema e se destinam somente à aplicação de temas em Hooks implementados como templates.
Para que suas funções pré-processadoras associadas como hook funcionem, os arquivos templates correpondentes devem existir na pasta do tema.
Existem algumas funções pré-processadoras no Drupal, entretanto, vamos nos ater à uma delas:
Em futuros tutoriais pretendo me apronfundar na criação de módulos para o Drupal e estarei tratando vários assuntos relacionados ao Núcleo do Drupal, mas por hora, basta saber que um "hook" é um conceito usado no Drupal que permite a extensão de módulos facilmente a partir de um conjunto definido de parâmetros e um tipo de resultado especificado.
No arquivo "template.php", insira o código abaixo:
Como você pode notar o prefixo da função foi alterado para "tutorial_" e o sufixo do hook para "_node". Como estamos implementando o node, então informamos ao hook que vamos altera-lo no tema "tutorial"; passamos a variável "$vars" por referência a fim de acessarmos as informações declaradas nela externamente. Foi criado uma variável $node a partir de $var['node'] para podermos acessar o id do node que vamos trabalhar.
Na linha:
é onde acontece toda a mágica, nós atribuímos à chave "template_files" o padrão referente que queremos transformar em template.
Queremos que o template pré-definido processe o node de determinado tipo com determinado id.
Feito isto, agora podemos criar o arquivo isoladamente.
O meu Page aqui gerou um id 8, então o NID aqui é 8. Dependendo do seu NID ai altere o nome do arquivo de acordo:
[node-page-8.tpl.php]
Atualize a página do seu node e veja que o arquivo "node-page.tpl.php" não está mais sendo exibido, embora ele exista ainda!
Você deverá ter a seguinte visualização:

Bom, agora fica fácil associar as coisas.
O módulo Devel é uma boa alternativa para inspecional os complementos de seu tema no processo de desenvolvimento. Ele funciona ao modelo do Firebug do Firefox e permite localizar precisamente informações relevantes aos nodes da pagina atual e oferecendo sugestões para funções de pré-processamento e templates alternativos.
Veja a imagem abaixo:

Fonte: http://drupal.org/project/devel
modules/aggregator/aggregator-feed-source.tpl.php
modules/aggregator/aggregator-item.tpl.php
modules/aggregator/aggregator-summary-item.tpl.php
modules/aggregator/aggregator-summary-items.tpl.php
modules/aggregator/aggregator-wrapper.tpl.php
modules/block/block-admin-display-form.tpl.php
Cada $data em $block_listing[$region] contém:
modules/book/book-all-books-block.tpl.php
modules/book/book-export-html.tpl.php
modules/book/book-navigation.tpl.php
modules/book/book-node-export-html.tpl.php
modules/commnet/comment-folded.tpl.php
modules/commnet/comment-wrapper.tpl.php
modules/commnet/comment.tpl.php
modules/forum/forum-icon.tpl.php
modules/forum/forum-list.tpl.php
Cada $forum em $forum contém:
modules/forum/forum-submitted.tpl.php
modules/forum/forum-topic-list.tpl.php
Cada $topic em $topic contém:
modules/forum/forum-topic-navigation.tpl.php
modules/forum/forums.tpl.php
modules/node/node.tpl.php
Outras variáveis:
Variáveis de status do node
modules/poll/poll-bar-block.tpl.php e
modules/poll/poll-bar.tpl.php
modules/poll/poll-results-block.tpl.php e
modules/poll/poll-results.tpl.php
modules/poll/poll-vote.tpl.php
modules/profile/profile-block.tpl.php
Cada $field em $profile contém:
modules/profile/profile-listing.tpl.php
Cadas $field em $profile contém:
modules/profile/profile-wrapper.tpl.php
modules/search/search-block-form.tpl.php
Chaves padrão dentro de $search:
modules/search/search-result.tpl.php
Chaves padrão dentro de $info_split:
modules/search/search-results.tpl.php
modules/search/search-theme-form.tpl.php
Chaves padrão dentro de $search:
modules/system/block.tpl.php
Variáveis auxiliáres:
modules/system/box.tpl.php
modules/system/maintenance-page.tpl.php
modules/system/page.tpl.php
modules/user/user-picture.tpl.php
modules/user/user-profile-category.tpl.php
modules/user/user-profile-item.tpl.php
modules/user/user-profile.tpl.php
Boas a todos!
Um problema relatado com certa frequência em fóruns que participo é o de erros na acentuação de textos.
Motivado por um post aqui no Drupal, resolvi colocar essa dica para outras pessoas que passem pelo mesmo problema.
Para que a acentuação e caracteres especiais apareçam corretamente é necessário configurar os 3 ítens abaixo da mesma maneira:
1. a página;
2. o banco de dados;
3. o editor.
Considerando o uso de utf-8 (o mais indicado), como isso deve ser feito ?
1. Na página:
1.1 Definir o idioma (opcional mas recomendado)
1.2 definir o charset
2. No banco de dados (MySql)
2.1 Conjunto de caracteres MySQL: UTF-8 Unicode (utf8)
2.2 Collation de conexão do MySQL: utf8_unicode_ci
3. No editor. IMPORTANTE, aqui é onde aparece muito problema.
Normalmente as pessoas não se ligam na codificação que seu editor usa. Editam o arquivo, salvam e pronto. Ao enviar para o servidor, mesmo estando correto o charset da página e do bd, o erro persiste.
No nosso exemplo, usando utf-8, nosso editor precisa salvar usando utf-8 também.
No Windows normalmente os editores salvam usando iso-8859-1, para não ter problema é necessário identificar onde mudar esse parâmetro e então salvar o arquivo em utf-8.
Um exemplo de como esse pequeno detalhe muda tudo, criei 2 arquivos html idênticos em conteúdo e o charset está setado como utf-8, que pode ser constatado no código fonte da página, porém ao salvar, um foi salvo com iso-8859-1 e outro com utf-8
Veja os exemplos aqui:
charset utf-8, gravado com codificação iso-8859-1
charset utf-8, gravado com codificação utf-8
Vê como muda tudo ? ;)
Segue alguns editores em Windows/Linux e onde mudar essa opção:
Windows (com a colaboração do gutomec- Luiz Gustavo) :D
Dreamweaver:
1 - Para trocar o file encoding vá em Modify>Page Properties... (ou Ctrl+j);
2 - Em Category selecione Title/Encoding;
3 - Selecione em Encoding o que desejar e dê um OK;
4 - Salve o documento.
EditPlus:
1 - Vá em Documents>File Encoding>Change File Encoding;
2 - Vai abrir uma janela pedindo para selecionar o file encoding, selecione o desejade e dê um OK.
3 - Salve o documento.
Linux
Geany
1 - vá em "documento"
2 - selecione "definir codificação"
3 - escolha a codificação desejada
Gedit
1 - vá em "arquivo"
2 - selecione "salvar como"
3 - selecionar na caixa select o código desejado
Eclipse
1 - vá em "preferences
2 - em "editors" procure a opção para definir codificação
Espero que ajuda e qualquer dúvida é só falar.
Abs
Este é um pequeno tutorial para usar o módulo Trigger, que acompanha a instalação básica do Drupal 6x.
Primeiro, vejamos para que serve o módulo, conforme sua própria descrição:
“Ações são tarefas individuais que o sistema pode realizar, tais como despublicar um conteúdo ou banir um usuário. Módulos, como o módulo trigger, podem disparar essas ações quando certos eventos de sistema ocorrerem; por exemplo, quando um novo conteúdo for adicionado ou quando um usuário se conectar. Os módulos também podem prover ações adicionais.
Existem dois tipos de ações: simples e avançadas. As ações simples não exigem nenhuma configuração adicional e são listadas automaticamente. Ações avançadas podem fazer mais coisas que as ações simples; por exemplo, enviar um e-mail para um endereço específico, ou verificar por certas palavras em um pedaço de conteúdo. Essas ações precisam ser criadas e configuradas antes de poderem ser usadas.”
Definições:
Trigger = Gatilho;
Actions = Ações;
Token = literalmente, símbolo. Tecnicamente: “é um segmento de texto ou símbolo que pode ser manipulado por um parser, que fornece um significado ao texto; em outras palavras, é um conjunto de caracteres (de um alfabeto, por exemplo) com um significado coletivo. - Wikipédia”.
Popularmente: “pedaços de marcação que serão substituídas por algum conteúdo”.
Vamos em frente com um exemplo prático.
Situação:
Toda vez que um usuário postar um comentário, o sistema deve enviar um email para um endereço informado, contendo no campo “assunto” o título do comentário e no “corpo” do email, a data do servidor (não é a da criação do comentário) junto com o texto do comentário.
Solução:
Primeiro precisamos criar a ação que será disparada.
1. Acessar a opção "Início › Administrar › Configuração do site › Ações"
>> http://seu_site/admin/settings/actions
Na tela irá aparecer algumas ações já disponíveis. No meu está assim:
Publicar post
Despublicar post
Descartar post
Cancelar destaque do post
Promover post para a página inicial
Remover post da página inicial
Salvar post
Bloquear usuário atual
Banir o endereço de IP do usuário atual
Como não há nenhuma ação para enviar email, vamos ter que criar uma.
2. No final dessa página, no campo “Tornar uma nova ação avançada disponível", selecione "Send tokenized e-mail" e clique em enviar.
3. Na nova tela (Configurar uma ação avançada) preencher como no exemplo:
Veja a tela da opção Configurar Ação
3.1 Descrição: "Avisar Admin Comentario Novo"
É o nome que vamos identificar a ação.
Obs.: nesse campo estará aparecendo o nome padrão “Send tokenized e-mail” que poderá ser substituído ou não, dependendo da preferência. No nosso caso, estou alterando para um nome mais sugestivo.
3.2 destinatário: webmaster@seusite.com.br
Aqui você tem 2 opções, ou informa um endereço de email (webmaster@seusite.com.br) ou um token, que poderia ser o [site-mail], digitando exatamente como está. Dessa forma, ao disparar a ação, o campo “[site-mail]” será substituído pelo email do site. Segue alguns só para conhecimento:
Global tokens
[user-name] Nome do usuário corrente que está logado
[user-mail] Email do usuário corrente que está logado
[site-url] A url do site
Para uma lista completa de todos os tokens disponíveis, basta clicar no final da página na opção: "Placeholder tokens”
3.3 assunto: [comment-title-raw]
Vamos usar um token, que vai informar o título do comentário
3.4 mensagem: Um novo comentário foi publicado em [site-date]: [comment-body-raw]
Usamos um token para a data do servidor, seguido de dois-pontos e do corpo do comentário.
3.5. Salvar e o sistema retorna a tela anterior.
4. Acessar a opção "Início › Administrar › Construção do site › Gatilhos"
>> http://seu_site/admin/build/trigger/comment
Opções disponíveis:
* Comentários * Conteúdo * Cron * Taxonomia * Usuários
Como nossa ação vai atuar nos comentários, vamos selecionar "Comentários"
Na nova tela, serão exibidos os gatilhos disponíveis.
5. Vamos ao que nos interessa, que é o "Gatilho: Depois de salvar um novo comentário" e na caixa select, a ação que nós criamos vai estar lá: "System >> Avisar Admin Comentario Novo". Selecione e clique em "atribuir".
6. The end :D
Abs e espero ter ajudado.
Nesse tutorial veremos como instalar e usar o editor WYSIWYG TinyMCE no Drupal.
O TinyMCE é um editor online designado WYSIWYG (What You See Is What You Get) em português "O que você vê é o que você tem".
Com ele é possivel editar conteúdo online sem precisar saber HTML, mas com formatação rica. Ele foi criado pela empresa Moxiecode, e pode ser baixado livremente no site da empresa em: http://tinymce.moxiecode.com/. Ele funciona independente do Drupal, mas aqui veremos como integrá-lo ao Drupal.
Atualmente existe um módulo para o Drupal que habilita o uso do TinyMCE para edição de conteúdo. Esse módulo está disponível em: http://drupal.org/project/tinymce
Como diz na página do módulo o mesmo não instala o TinyMCE em sí, então é preciso que você baixe, além do módulo para o Drupal, o TinyMCE.
Assim, o primeiro passo para a instalação do TinyMCE é ir até a página do módulo e baixá-lo. Em seguida, vá até a página do TinyMCE e baixe-o também.
Nesse ponto é importante observar, na página do módulo, qual versão do TinyMCE ele suporta. No momento em que eu escrevo esse tutorial, a versão suportada é a 2.1.2. Assim, quando for baixar, procure essa versão.
Com os dois produtos baixados, você deve descompactar o módulo na pasta modules da sua instalação do Drupal. Isso fará com que o módulo esteja disponível para o Drupal.
Isso, por si só, não faz com que o TinyMCE esteja funcional. É necessário também descompactar o TinyMCE na pasta do módulo tinymce. Assim, a estrutura de diretórios deve ficar semelhante a essa:
Antes:

Depois:

Isso feito, podemos habilitar o módulo para o nosso site.
Para tanto logue-se como administrador no seu site. Acesse Administrar -> Construção do site -> Módulos e habilite o módulo TinyMCE.

Pronto o módulo está instalado.
Nesse ponto você não verá o editor ainda pois, no caso do TinyMCE, você precisa configurar um perfil de usuário que terá acesso a esse editor. Isso é feito assim para evitar que usuários, sem os privilégios necessários, acessem o TinyMCE.
Então você deve criar um perfil (esse tutorial não irá cobrir esse procedimento) e ir até: Administrar -> Gerenciamento de usuários -> Controle de acesso e dê a permissão "access tinymce" para esse perfil. Obviamente que se o seu usuário pode fazer outras coisas, você deve dar as permissões necessárias.
Isso habilitará o usuário acessar o TinyMCE, mas precisamos configurar como o editor será exibido para o usuário. Ao contrário de outros módulos para o Drupal (como o FCKEditor) o nível de personalização do TinyMCE é muito grande.
Vamos configurar o TinyMCE. Para isso acesse o seu site e vá em: Administrar -> Configuração do site -> TinyMCE settings

A primeira vez que você acessa essa página lhe será mostrado um aviso de que ainda não há um perfil, e lhe será dada a oportunidade de criar um.
Clicando nesse link, você será levado a uma tela onde pode configurar cada parâmetro do TinyMCE.
Vamos dar uma breve olhada nessas opções.

Vamos por partes:
Basic setup
Você vai dar um nome para esse perfil.
Nesse ponto você pode configurar qual o perfil de usuário pode acessar esse conjunto de opções do TinyMCE (pode ser mais de um perfil).
É possível configurar outros itens relacionados ao o usuário.
Visibilidade
Você escolhe em quais páginas o TinyMCE vai ser usado. Ele vem, por padrão, para ser usado em páginas de conteúdo, comentários e perfil do usuário.
Buttons and plugins
Como o nome diz, você pode configurar os botões e plugins que fará uso.
Editor appearance
Configura as opções de visualização (posicionamento e alinhamento) do editor na tela.
Editor appearance
Aqui você configura como o editor irá tratar o código gerado ou colado. Você pode habilitar a limpeza e formatação do código, o que é uma boa opção.
CSS
Por último é possível configurar os estilos do Editor. Isso impacta diretamente em como o exitor é exibido. Recomendo escolher para o parâmetro "Editor CSS", a opção "tinyMCE default". Isso evita conflitos entre o CSS do seu site e o Editor.
Pronto. Ao salvar essa tela, o TinyMCE estará configurado para o seu site.
Uma nota importante. Se você tentar acessar, com o primeiro usuário que você criou para o site, alguma tela onde o editor deveria aparecer ele não aparecerá. Isso acontece porque você precisa atribuir a esse usuário o mesmo perfil para o qual você configurou o TinyMCE. Isso feito, estará disponível também para esse usuário.
Dúvidas, sugestões e comentários, por favor deixe abaixo.
Como uma das grandes vantagens de se trabalhar com o Drupal é a de que ele é altamente customizável, a autenticação não poderia ficar pra traz. Neste artigo vamos ver como é simples criar seu próprio sistema de autenticação para o Drupal.
Para tornar este artigo mais fácil de entender, vamos criar um módulo real que vai autenticar todos os usuários que estão em um arquivo texto. O nome do nosso módulo será fileauth.
Basicamente vamos apenas usar um hook para criar nosso módulo, o hook_auth.
Então chega de bla bla bla e vamos lá...
Primeiro crie o diretório fileauth onde os arquivos do nosso módulo vai ficar e crie o arquivo fileauth.info dentro dele.
Agora crie o arquivo usuarios.txt com o seguinte conteúdo:
Estando com tudo pronto, vamos para o módulo. Crie o arquivo fileauth.module e coloque o seguinte conteúdo. Em seguida vou explicar o que ele vai fazer...
Muito simples né? vamos à explicação...
Caso o drupal não ache o usuário em sua base de dados, ele executa nossa função passando o usuario e a senha que foram escritos no formulário. O parâmetro $server pode ser esquecido neste momento por nós pois não vai ter utilidade...
O módulo apenas abre o arquivo e procura por um usuário:senha... Simples né?
Você agora pode fazer o que quiser... validar com usuários de banco de dados, XML-RPC etc. O céu é o limite...
Até a próxima.
Esse tutorial mostra como transformar um template HTML em um tema do Drupal.
Como pré-requisito para entender esse tutorial você vai precisar entender um pouco de PHP, HTML e CSS para conseguir acompanhar tudo.
Update: Esse tutorial foi feito com base no Drupal 5.x assim não deve funcionar plenamente nas versões superiores sem algumas alterações.
Para esse tutorial também é necessário que você já tenha uma instalação do Drupal na sua máquina. Caso você ainda não tenha ou não saiba como fazer essa instalação pode ver esse tutorial e esse screencast.
Para o melhor entendimento desse tutorial, quando nos referimos a template estaremos falando de um layout feito em HTML e que ainda não tem funcionalidade no Drupal. Quando nos referirmos a tema estamos nos referindo a um template já funcionando no Drupal.
Então, antes de mais nada, precisamos encontrar um template. No nosso tutorial vamos pegar um template já pronto na Internet, no seu caso você mesmo pode fazer um ou pagar um designer para que o faça.
O template escolhido para esse tutorial foi o Standardized disponível em http://www.freecsstemplates.org/preview/standardized. Esse template é grátis, podendo ser baixado gratuitamente. Você precisará manter os créditos do tema, pois ele está licenciado sob a Creative Commons, mas isso não é problema pois estamos em uma comunidade se Software livre não é? :-)
Em seguida precisaremos montar nosso tema propriamente dito. Eu tenho por hábito partir de um tema pré-existente, mas você não precisa fazer isso, é uma questão pessoal. Para esse tutorial, vou usar como base o tema Bluemarine que já vem com toda instalação do Drupal.
Assim, a primeira coisa a fazer é baixar o template (acima você tem o endereço para download). Em seguida entramos na pasta themes da nossa instalação do Drupal e copiamos toda a pasta do tema bluemarine com um nome diferente, no nosso caso o nome do nosso tema será tutorial. O resultado final será algo como mostrado abaixo.

Em seguida copiamos alguns elementos do template para a pasta do nosso novo tema. No caso desse nosso tema, vamos copiar a pasta images e o arquivo default.css que estão na pasta do template para a pasta do nosso tema. Em seguida, apagamos o arquivo style.css que já estava na pasta do nosso tema e renomeamos o arquivo default.css para style.css. Isso é necessário pois o Drupal entende, por padrão, que o nome do arquivo de CSS do nosso tema se chama style.css. Obviamente podemos ter outros aquivos CSS, mas para o nosso tema vamos fazer seguindo o padrão. Uma outra coisa que podemos fazer é baixar um thumbnail para substituir o que já existe do bluemarine. Isso Não é imprescindível mas é importante pois é através desse thumbnail que vamos poder visualizar na área de administração de temas qual é o nosso tema. No caso do template que baixamos, ele já tem um thumbnail em http://www.freecsstemplates.org/download/thumbnail/standardized. Baixe esse arquivo e substitua o arquivo screenshot.png que está na pasta do nosso tema.
Com isso terminamos os preparativos e podemos partir para a construção do tema propriamente dita. Como eu disse me baseio em um tema para construir os meus, então o trabalho aqui é um pouco de copiar e colar, e vou mostrar como estava antes e depois até o resultado final.
Para começar o trabalho, primeiro renomeamos o arquivo page.tpl.php do tema que copiamos para algo como page.tpl.php.old e copiamos o arquivo index.html do template para a pasta do tema com o nome page.tpl.php. No final poderemos apagar o page.tpl.php.old. Em seguida abrimos os dois arquivos para montar o tema. Para facilitar o entendimento, dividi em partes de forma que podemos ir acompanhando pedaço por pedaço da construção do tema.
Começamos com a tag HTML do nosso tema. No tema original ela é assim:
![]()
Aqui vemos duas marcações em PHP, com a variável $language que é o código do idioma do site. Isso é usado para formatar o HTML de acordo com os padrões da W3C. No nosso template veio assim:

Perceba que aqui existe um comentário sobre a licença do template, e a tag HTML não tem designação de idioma, então modificamos para que fique assim:

Pronto, temos essa parte terminada. Em seguida vamos para os cabeçalhos. É nessa parte que são declarados os estilos, javascript e várias outras partes importantes do tema do Drupal. Abaixo o original, no tema bluemarine:
E abaixo o original no nosso template:

Por fim temos o resultado final:
Veja que o resultado final é igual ao original do bluemarine. Nem sempre será, no nosso tema vamos usar a estrutura básica, então não precisamos de alterações. Agora uma breve explicação do que é cada uma das variáveis nessa seção:
Agora vamos ver a parte do cabeçalho do nosso tema. Se você já deu uma olhada no tema que escolhemos como padrão, lembrará que ele tem um cabeçalho com o menu, em uma barra verde, e abaixo um título. Vamos então ver como fazer isso. Primeiro vemos como é no tema original, o bluemarine:
E depois como veio no template:
Por último vemos como ficou:
Vejamos o que é cada uma dessas variáveis:
Note ainda que mativemos a estrutura do HTML básico do nosso template. Isso porque podem haver elementos HTML que precisaremos para manter o estilo pretendido. No caso, deixamos o DIV com sua classe header que ele já possui.
Em seguida vamos para a seção que trata do menu. Vejamos como é o original no bluemarine
E como o template escolhido trata essa parte:
Por fim, como ficou com a alteração que fizemos:
Antes de mais nada, veja que cortamos algumas coisas no nosso código. O Drupal vem com dois níveis de menu, prontos para serem usados: o primário e o secundário. No nosso caso, só vamos usar o primário, e o secundário foi excluído. Outra coisa que excluímos foi a caixa de pesquisa, pois vamos usar um bloco para isso. Então vejamos o que significa cada uma dessas variáveis:
Agora vamos para a parte principal do nosso tema. O tema nos permite personalizar a apresentação do conteúdo do site. O Drupal entende que o conteúdo é tudo que é exibido na parte principal do do seu site, assim nem tudo que é exibido nessa seção é de fato conteúdo, mas coisas como os formulários de edição, configuração e etc. também são exibidos nessa área. Vejamos como é o original no bluemarine:
Em seguida como veio no nosso template. Note que não está tudo que há no template, apenas uma parte.
Por último como ficou depois de alterarmos:
Novamente veja que mudamos apenas o que precisamos do Drupal. Parte da formatação original do template ficou. Vejamos o que é cada uma dessas variáveis:
Veremos agora a nossa barra lateral da esquerda, que terá a caixa de busca, caixa de login, e, quando logado, o menu de administração (também conhecido como navegação). Vejamos então o original no bluemarine:
Como o template escolhido veio:
E como ficou no final:
Nesse caso temos apenas uma variável, $sidebar_left, que irá carregar todos os blocos que posicionarmos na esquerda. Nesse momento cabe uma explicação sobre como carregar os blocos no Drupal e quais variáveis são usadas para isso.
O Drupal trabalha com um conceito de região. Por padrão ele define 5 regiões onde podemos posicionar blocos. Essas regiões são mostradas no template page.tpl.php em forma de variáveis como abaixo:
É possível que se defina outras regiões, mas esse tutorial não irá cobrir isso. Num futuro tutorial falaremos disso.
Agora veremos a última parte do nosso tema, o rodapé. Abaixo a verão original no bluemarine:
E em seguida o template:
Por fim, a versão alterada no nosso tema:
Novamente, parte do template foi mantida, pois ela é fundamental para a formatação correta do site. Vejamos o que é cada uma dessas variáveis:
Pronto, para esse tema que escolhemos, isso é tudo que precisamos mexer com PHP/HTML. Veremos agora como deixar mais próximo do template original, pois ainda são necessários alguns pequenos ajustes de CSS.
Antes de mais nada, precisamos habilitar o nosso novo tema. Assim você deve se logar como administrador, e ir na parte de temas (Adminsitrar -> Construção do site -> Temas) e habilitar o nosso novo tema, e definí-lo como padrão:
Vejamos como ficou o site com essas mudanças que fizemos (clique na imagem para ampliar):
Veja que ainda existem coisas a serem feitas. Precisamos colocar o bloco de login, a caixa de busca e formatar o conteúdo.
Vamos criar um item que apareça no menu superior. Para isso crie uma página (Criar conteúdo -> Página) e preencha os campos que desejar e em opções de menu preencha como abaixo:
Isso fará com que apareça um menu na barra verde. Vejam que, como eu disse antes, o primary links é diferente do menu de navegação.
Agora nós temos um item no menu superior, podemos criar tantos quantos desejarmos.
Agora vamos habilitar a caixa de busca na barra lateral da esquerda, para isso vá até a página de adminstração de blocos (Administrar -> Construção do Site - > Blocos) e habilitamos o bloco da busca na esquerda conforme abaixo:![]()
Para que usuários anônimos acessem a caixa de busca, precisamos dar a permissão correta:
Pronto, temos todos os elementos que precisamos no nosso site.
Nossa caixa de busca ficou assim:
Agora faltam os ajustes de CSS. Precisaremos identificar quais as classes que definem a cor das duas caixas, login e busca além dos botões e caixa de texto.
Olhando o código fonte do template, identifiquei que a caixa de login, no template, tem aplicada a classe boxA e a de busca boxB. Olhando o código gerado pelo site até o momento, pude identificar que o bloco de login possui a classe block-user e o bloco de busca possui a classe block-search.
Assim, tendo mapeado as classes de origem e destino, editamos o arquivo style.css e trocamos todas as ocorrências de uma classe (no caso boxA e boxB) por outra (no caso block-user e block-search). Assim temos o resultado para a caixa de busca:
Mas ainda ainda não está como esperávamos. Nem o botão nem a caixa de texto está como esperávamos, para isso precisaremos trocar mais uma parte do CSS pelas classes corretas.
Vejamos então. A caixa de texto padrão do template utiliza a classe text que vamos ter que trocar pela classe que o Drupal utiliza, chamada form-text. Para isso, editamos novamente o arquivo style.css e procuramos or todas as ocorrências de input.text e trocamos por input.form-text. Igualmente com o botão, que no template tem a classe button e no Drupal a classe é form-submit.
Pronto, com todas as classes trocadas, temos como resultado final:
Então até o momento temos o seguinte com usuário anônimo(clique para ampliar):
E com usuário administrador(clique para ampliar):
No entanto não está 100% igual ao que desejamos, pois acima de cada bloco temos um título, coisa que não há no nosso template original. Assim precisamos desabilitar isso. Para tanto acesse a área de adminstração dos blocos (Administrar -> Construção do site -> Blocos) e escolha a opção "configurar" dos dois blocos que queremos tirar o título e troque o nome do título do bloco para <none>, como abiaxo:
Por fim, precisamos definir o nome do site, o slogan e a mensagem de rodapé. Para isso acesse a área de adminsitração do site na parte de informações (Administrar -> Configuração do site -> Informações do site) e altere os dados como abaixo e depois salve as informacões(clique para ampliar):
Isso por si só fará com que você tenha esses dados configurado. Porém o slogan do site depende do seu tema. Alguns desse elementos são controlados individualmente por cada tema, e o nosso tema está com o slogan desativado, então teremos que ativá-lo. Para isso acesse a área de configuração do tema (Administrar -> Construção do site -> Temas) e clique na opção "Configurar" do nosso tema e, em seguida, marque a caixa de "Slogan do site", conforme abaixo:
Pronto, isso termina com a configuração do nosso site, veja como ficará na versão final, com usuário anônimo(clique para ampliar):
E com o usuário logado(clique para ampliar):
Temos um template aplicado no nosso site. É bom lembrar novamente que esse não é o único método de fazer temas, e para algumas pessoas não é o melhor. Também deve-se lembrar que esse é um exemplo simples e que o Drupal te deixa fazer muito mais coisa do que foi mostrado nesse simples tutorial.
Abaixo você pode baixar o template pronto
Duvidas, sugestões e comentários são bem vindos.
Um abraço e espero que seja útil para você.
| Anexo | Tamanho |
|---|---|
| tutorial.zip | 14.14 KB |
Desenvolvendo Portais com o CMS Drupal
Este é um tutorial, do tipo passo-a-passo que ensina a instalar, configurar e adicionar conteúdo no CMS Drupal.
Não requer conhecimento do Drupal, nem de PHP, mas com conhecimento da criação de sites ou disposto a aprender.
Algo forte no Drupal são seus conceitos. Ele trabalha com conceitos próprios, diferente de outros CMS, portanto
é importante se acostumar com eles. Vamos ao tutorial...
O Drupal é um dos mais populares CMS.
O que é o Drupal?
É um Sistema Gerenciador de Conteúdos (CMS) open source em PHP distribuído sob a licença GNU. É um CMS que
foca no desempenho, segurança e recursos. A versão 5.5 tem apenas 736KB compactados, bem enxuto. Conta
atualmente com uma grande comunidade ao redor do planeta. Dos CMS populares é o único com um bom suporte
ao PostgreSQL.
Onde obter Ajuda?
Site oficial - http://drupal.org/handbooks
Site da comunidade Brasileira - http://drupal-br.org
Manual Traduzido pela comunidade brasileira - http://drupal-br.org/manual
Dicas no site Drupal Brasil - http://drupal-br.org/dicas
Online no site oficial - http://drupal.org/getting-started/5
Em PDF para Drupal5 - http://drupal.org/files/getting-started_2.pdf
Fórum em Inglês - http://drupal.org/forum
Fórum em Português (Brasil) - http://drupal-br.org/forum
Pré-requisitos
- Apache 1.3.x ou 2.x (se usar o mod_rewrite pode adotar URL limpas/amigáveis)
- PHP 4.3.3 ou superior ou 5.x. Para PHP 5.2 usar o Drupal 5.2 ou superior ou o 4.7.5 ou superior.
- MySQL - Com suporte redondo ao MySQL (4.5 ou 5.0). Requer no servidor de hospedagem os seguintes privilégios
para o usuário do banco no MySQL: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES.
- PostgreSQL - Suporte ainda com restrições ao PostgreSQL (7.3 ou superior). Atenção ao instalar alguns módulos.
Caso encontre problemas com alguns módulos, faça a migração do código que deve estar voltado para o MySQL.
- PHP XML extension
- PHP mbstring extension (processamento do texto em UTF-8)
- Biblioteca GD
- session.save_handler:user
- session.cache_limiter: none
- memory_limit: 24M (recomendado)
- Para PHP instalado como módulo o .htaccess deve ter AllowOverride None
- Banco com codificação UNICODE
- Servidor de e-mail: SMTP = localhost e smtp_port = 25
Downloads
4.x, 5.x ou 6.x (beta) - http://drupal.org/download
Criação do Banco de Dados
O banco de dados, idealmente, deve ser criado com suporte a UNICODE (UTF-8).
MySQL
Criar o banco com suporte a UTF-8.
PostgreSQL
Se num servidor de hospedagem, geralmente não terá opção para dar suporte a UNICODE.
Ainda por cima, nos servidores de hospedagem a versão do PostgreSQL já é bem antiga e com
suporte padrão a SQL_ASCII.
Em alguns testes, a codificação SQL_ASCII funciona bem com os módulos defaults nas versões
5.5 e 6.x.
A recomendação da equipe é que o banco tenha suporte a UNICODE (para evitar problemas com a acentuação),
pela linha de comando com:
createuser --pwprompt --encrypted --no-adduser --no-createdb drupal
createdb --encoding=UNICODE --owner=drupal drupal
Ou então na console do psql com:
CREATE ROLE drupal WITH ENCRYPTED PASSWORD 'drupal';
CREATE DATABASE drupal WITH ENCODING 'UNICODE' OWNER drupal;
No phppgadmin apenas escolhemos a codificação UNICODE.
Instalação
- Fazer o download da última versão e descompactar no servidor
- Criar o subdiretório "files" na pasta "drupal" e dar permissão de escrita se num UNIX
- Acessar via navegador http://localhost/drupal
- Interativamente instalar observando as recomendações.
Precisa ter cookies habilitados no navegador.
Versão 4.x
- Devemos criar o banco
- Importar o script que se encontra em database/database.pgsql ou database.mysql.
- Depois devemos configurar o script sites/default/settings.php com as informações do banco criado, na linha:
$db_url = 'mysql://nomeusuario:senha@localhost/nomebanco';
Versões 5.x e 6.x
- Apenas crie o banco
- E chame o navegador com http://localhost/drupal
Após instalado crie a sua conta de super usuário (UID1).
Instalação do Idioma Português do Brasil
- Faça o download do site oficial em
http://drupal.org/node/151248
- Descompacte localmente
- Abra o Drupal, Administrar, após ter habilitado o módulo de suporte, no Drupal 6 é Language, no 5 é Localization
- Clique em Add Language e indique português Brasil e Add
- Ative, coloque como default e Save
- Clique no link "Importing a translation" e indique o arquivo pt-br.po e clique em Import.
Instalação do Editor HTML WYSIWYG para ser usado nas textareas de conteúdo
- Baixar o módulo de http://ftp.drupal.org/files/projects/tinymce-5.x-1.9.tar.gz
- Faça o upload para a pasta modules do Drupal e descompacte
- Faça o download da versão 2.1.3 do tinymce de http://prdownloads.sourceforge.net/tinymce/tinymce_2_1_3.tgz?download
- Envie por upload para a pasta modules/tinymce do Drupal. Ficará assim: modules/tinymce/tinymce
- Faça o login como super usuário do Drupal
- Crie um perfil de usuário exclusivamente para acessar o TinyMCE (somente para acessar)
- Vá em Administrar - Configuração do site - TinyMCE (caso ainda não tenha um perfil crie) e faça algum usuário usar o tinymce
- Clique em Editar no perfil e em Basic Setup selecione o perfil e veja outras configurações
- Clique em Update profile abaixo
- Requer ainda Conteúdo do tipo HTML Full. Lembre de dar permissão de uso somente para usuários de confiança.
Para testar clique no menu Criar Conteúdo - Selecione um dos itens e verá o TinyMCE aparecer.
Obs.: Tive como base o tutorial do Drupal Brasil (Como instalar e configurar o TinyMCE no Drupal).
Ativação dos demais Módulos
O Drupal vem com vários outros módulos úteis, mas desativados.
Clique em Administrar - Módulos e selecione os que deseja ativar.
Atualização da versão atual
Clicar em Administrar - Módulos
Clicar no link "update.php" e seguir as instruções.
Configurações do Site
Existe uma grande quantidade de configurações que podemos alterar ou ajustar no Drupal:
Administrar - Configuração do site
Aí temos: data e hora, desempenho, idiomas, informações sobre o site e várias outras.
Informações do Site
Aqui definimos algumas coisas importantes sobre o site:
- Título do Site (que aparece na barra do navegador)
- E-mail do responsável
- Slogan do site
- Mensagem de rodapé
- Página inicial padrão (podemos escolher qualquer página como a inicial)
Alguns Conceitos do Drupal
- Blocos - são componentes da interface do Drupal, como o menu de navegação, como a área de login,
a área da enquete, o formulário de busca, etc. Podem aparecer ou não em todas ou várias páginas.
- Regiões - a página no Drupal divide-se nas seguintes regiões: cabeçalho, rodapé, conteúdo, barra lateral
esquerda e barra lateral direita.
- Taxonomia - através deste módulo temos como criar categorias e subcategorias (termos) para poder organizar
melhor o conteúdo. Na versão 5.x temos Categoria e na 6.x já é Taxonomia.
- Termo - Este é uma subcategoria.
- Livro - é o tipo de conteúdo que pode ser desenvolvido em colaboração, por vários autores.
- Página - Page não posta autor, data ou comentário por default
- Story - posta autor, data ou comentário por default
Ao publicar uma página de conteúdo podemos escolher se ela irá ou não para front page.
Configurar Blocos
Administrar - Blocos
Podemos definir a região em que cada bloco ficará, como também podemos escolher se ele não será exibido.
Instalar Módulo de Terceiros
- Fazer o download do módulos
- Enviar por upload para o subdiretório modules do Drupal
- Extrair
- Acessar a seção Adrministrar - Módulos e ativar (ao final)
Observe que alguns módulos tem dependências, que devem ser instaladas antes para que seja ativado.
Instalar Temas
De forma semelhante à instalação dos módulos.
Após a instalação podemos marcar como padrão para que seja usado no site.
Instalação do módulo "nice menus"
Este módulo permite a exibição de menus com submenus em árvore.
- Faça o download do site do Drupal http://drupal.org/...
- Faça o upload para o diretório modules do Drupal no servidor e descompacte
- Vá em Administrar - Módulos e ative o novo módulo Nice Menus
- Vá em Administrar - Nice Menus e configure. Escolha quantos menus utilizará. Default são 3.
- Agora vá em Administrar - Blocos e selecione o(s) nice menus que irá usar escolhendo a região.
- Lembre de ocultar o menu de navegação para usar o Nice Menu.
- A região mais adequada para o Nice Menu é a lateral esquerda.
Adicionar Conteúdo
Neste exemplo iremos criar uma estrutura para exibição de autores e artigos. Ou seja, aparecerá um item do menu
de navegação chamado Artigos, que ao ser clicado abre o leque de autores. Ao clicar num autor serão exibidos
os seus artigos, como a seguir:
Artigos
--AutorA
----Artigo1
----Artigo2
----Artigo3
--AutorB
----Artigo1
----Artigo2
----Artigo3
Vamos Criar uma Categoria chamada Artigos
Lembre que se estiver no Drupal 6.x não é Categoria mas Taxonomia.
- Clique em Administrar - Categorias
- Acima clique em Novo Vocabulário
- Em Nome do Vocabulário digite "Artigos"
- Em Descrição digite "Artigos sobre o Drupal"
- Em Texto de Ajuda também digite "Artigos sobre o Drupal"
- Em Tipos vamos marcar aqueles que poderão usar esta categoria.
Como quero que esta seção seja criada em colaboração, podendo vários autores trabalhar num mesmo artigo,
vamos selecionar apenas "Página de Livro"
- Em Hierarquia vamos selecionar "Múltipla"
- Marcar "Termos Relacionados" e clicar em Enviar
Criar As SubCategorias/Termos
Agora vamos criar as subcategorias para cada autor
- Clicar no link "Adicionar termos" correspondente a Artigos
- Em Nome do termo digite "Autor A"
- Em Descrição digite "Artigos do Autor A"
- Em Peso selecione "1" e clique em Enviar
De forma semelhante crie o termo do Autor B.
- Clicar no link "Adicionar termos" correspondente a Artigos
- Em Nome do termo digite "Autor B"
- Em Descrição digite "Artigos do Autor B"
- Em Peso selecione "2" e clique em Enviar
Observe que o Autor B tem peso 2, isso para separar em ordem.
Criar o menu e os dois submenus para nossos dois termos
Lembre que a categoria e os termos são apenas capas que serão administradas via menu e exibirão o conteúdo, ou seja,
sua finalidade é de organização.
- Clique em Administrar - Menus
- Abaixo de Navegação clique em Novo item
- Em Título digite Artigos
- Em Descrição digite "Artigos sobre o Drupal"
- Em Endereço entre com ""
- Em Peso entre com o número da ordem desejada para o Menu
- Clique em Enviar
Agora vamos criar um novo item de menu, agora para abrigar o primeiro Termo (Autor A):
Antes de criar os submenus temos que conhecer os links dos termos criados (Autor A e Autor B).
Para isso vá em Categorias e clique em Listar termos dos Artigos.
Basta pousar o mouse sobre o link de cada um dos autores, Autor A e Autor B, que aparecerá um link
mais ou menos com taxonomy/term/3 ou coisa parecida, dependendo de quantos termos já criastes.
- Abaixo de Navegação clique em Novo item
- Em Título digite "Autor A"
- Em Descrição digite "Artigos do Autor A"
- Em Endereço entre com "taxonomy/term/3" sem as aspas
- Em Item superior selecione Artigos, que será o menu deste item
- Em Peso selecione 1, para ser o primeiro
- Clique em Enviar
Observe que tem uma opção Expandido, que pode ser usada para criar menus que já aparecem abertos
De forma semelhante crie o item para o Autor B, apenas alterando o Peso para 2.
Criando o Conteúdo a ser exibido no Menu
- Clique no menu Criar Conteúdo e selecione Página de Livro
- Em Título digite "Primeiro Artigo"
- Na combo Artigos selecione Autor A
- Em Corpo digite o texto do primeiro artigo do Autor A
- Em Formato de entrada podemos selecionar o formato. Caso este autor seja de confiança e use o TinyMCE devemos
selecionar FULL HTML
- Em Peso selecione 1
- Em Configurações do endereço digite "primeiro" ou o que desejar para endereço do artigo.
- Em Configurações do Menu digite para Título "Primeiro Artigo" e o mesmo para Descrição
- Em Item superior selecione Navegação - Artigos - Autor A
- Em Peso selecione 1
- Clique em Enviar
Criando Menu tipo o Tutoriais do Drupal Brasil e do Drupal Ribafs
- Criamos uma categoria com um nome como "Colaborações"
- Criamos vários termos para esta categoria e anotamos seus endereços:
taxonomy/term/3, taxonomy/term/4, taxonomy/term/5, etc.
- Criamos tantos itens de menu quantos forem os termos, no caso, do tipo Primary Links, para cada um atribuindo o respectivo endereço do termo
- Então criamos o conteúdo para cada item de menu. Lembrando que cada termo e cada item de menu e conteúdo deve ter pesos diferentes.
Os pesos correspondem à ordenação dos mesmos.
Adicionar conteúdo com Imagens
- Habilite módulo upload
- Configurar o usuário/grupo para poder fazer upload
- Ver configurações do upload
- Habilitar o tipo de conteúdo para upload
- Criar conteúdo
- Anexar o arquivo (copie o path do arquivo na caixa de upload)
- Use
no conteúdo. Assumindo que o filtro permite usar .
Formatos de Entrada
O Drupal traz a opção de vários formatos de entrada:
- HTML Filtrado (padrão)
- Código PHP (onde o código digitado pode ser executado)
- HTML completo
Segurança
Atenção: qualquer direito que permita ao PHP administrar filtros deve ser delegado com extremo cuidado.
O HTML full só deve ser configurado para sites de extrema confiabilidade.
Caso tenhamos a segurança como importante para o site devemos assinar a lista de segurança do Drupal
http://drupal.org/security
Depois que o site estiver concluído é prudente criar uma outra conta para administrar o site, mas com restrições,
para evitar o uso como super usuário.
Gerenciamento de Usuários
Por default vem com dois grupos (roles, papéis) de usuários: anônimos e autenticados
O usuário UID1 é o super usuário, tem poderes para fazer qualquer coisa com o site.
Controle de Acessos - aqui temos acesso aos privilégios dos grupos de usuários atuais para cada seção do site.
Onde definimos as permissões dos grupos/papeis/roles de usuários.
Opções de Usuário - Onde decidimos como será o cadastro de usuários. Temos 3 alternativas:
- Apenas um administrador pode criar uma nova conta de usuário.
- Um visitante pode criar uma conta sem a aprovação de um administrador.
- Visitantes podem criar contas, mas será necessário a aprovação do administrador.
Papeis - Os papéis permitem que você regule e ajuste a administração do Drupal. Um papel define um
grupo de usuários que tem certos privilégios definidos nas permissões de usuário. Exemplos de papel
incluem: usuário anônimo, usuário autenticado, moderador, administrador, etc. Nesta área você pode
definir os nomes dos vários papéis. Para remover um papel, clique em "editar".
Perfis - aqui podemos personalizar o conteúdo visto pelos usuários, permitindo visualizar uns e ocultando outros.
Regras de acesso - Criar regras para nome de usuário e endereço de email, tanto para novas quanto para
aquelas previamente registradas (usuários que estiverem logados neste momento não serão deslogados).
Se um nome de usuário ou endereço de email for enquadrado em uma regra de proibição, então a conta não
será criada ou, se já registrada, não vai mais poder fazer login. Uma regra de host é efetiva para toda
requisição de página, não apenas para o registro de usuários.
Usuários - aqui podemos criar novos usuários e configurar os existentes.
Podemos criar usuários e grupos à vontade, passando ou retirando privilégios de acordo com nossas necessidades.
Para cada usuário podemos:
- escolher um ou mais grupos a que pertencerá
- idioma (ele até poderá escolher dependendo da configuração do site)
- escolher o tema
- além de outra opções como fuso horário, formulário de contato, etc
Observe que podemos criar um grupo de confiança, configurar o mesmo para usar o TinyMCE com HTML Full.
Para maior segurança permitir que apenas o administrador cadastre usuários.
Dicas extras
- Acesso ao site quando perdemos a página inicial, quando instalamos um template que não mostra o login (por não ter a região com o mesmo) ou por outro motivo qualquer:
http://localhost/drupal/?q=user
_________________________________________________________
Ribamar FS - http://ribafs.net e http://drupal.ribafs.net
1. Entre na administração do seu site em Drupal e clique em módulos (Modules).
2. Marque a opção Locale. Ela vai habilitar a interface para outras línguas além do inglês.
3. Agora é preciso baixar a tradução do drupal para o português do Brasil (pt-br). Vamos usar a linha de comando:
# cd /var/www
# wget http://ftp.drupal.org/files/projects/pt-br-5.x-2.00.tar.gz
# tar -xvzf pt-br-5.x-2.00.tar.gz -C /var/www/seu_site/
4. Na administração, vá em Site configuration e, depois, clique em Localization. Ou digite no Firefox http://localhost/seu_site/?q=admin/settings/locale
5. Clique em add language, escolha o português do Brasil e add language!
6. Agora vamos importar o arquivo de tradução, em Import. Procure o arquivo pt-br.po (Ele vai estar em /var/www/seu_site/pt-br/pt-br.po). Certifique-se que em Import into está marcado o português do Brasil. Import!
7. Habilite este idioma em Enabled e marque como padrão (Default). Clique em Save configuration.
Pronto! Reza a lenda que seu Drupal está em português :)
Estive testando algumas possibilidades de incluir imagens nas publicações do Drupal e sempre dava problema. A instabilidade dos módulos fazia com que eu desistisse de incluí-los nos projetos. Testei o Image Picker e tive dor de cabeça da integração deste com os editores de texto.
Ao instalar o FCKeditor sozinho, notei que ele tinha uma boa usabilidade e, ao integrar com o IMCE, rodou sem problemas. Neste pequeno tutorial farei a descrição da instalação destes dois módulos:
Em /modules/, baixe o módulo FCKeditor
# wget http://ftp.drupal.org/files/projects/fckeditor-5.x-2.1.tar.gz
Descompacte
# tar zxvf fckeditor-5.x-2.1.tar.gz
Entre na pasta fckeditor
# cd fckeditor
Baixe o FCKeditor
# wget http://ufpr.dl.sourceforge.net/sourceforge/fckeditor/FCKeditor_2.6.tar.gz
Descompacte
# tar zxvf FCKeditor_2.6.tar.gz
Em admin/build/modules, ative os módulos FCKeditor e IMCE.
Em admin/user/access, dê as devidas permissões aos usuários.
Em admin/settings/imce, ative FCKeditor no IMCE (Enable FCKEditor support); Abaixo, há as definições para cada tipo de usuário (Settings for the role) - ative a opção "Enable extras". Ative esta opção apenas para os tipos de usuários que poderão subir imagens para o servidor.
Em admin/settings/fckeditor, no Perfil Advanced, habilite os tipos de usuários que poderão usar o editor de texto. Você encontra esta opção em "Basic Setup".
As demais configurações do FCKeditor e do IMCE você personaliza de acordo com seu gosto.

É necessário instalar o módulo Localizer. Em seusitio/modules/, baixe o localizer:
Descompacte:
Entre no módulo Localizer:
Baixe as bandeiras das línguas:
Descompacte:
Entre em seusitio/sites/default/settings.php e adicione, no final, esta linha:
Note que o arquivo localizer_settings.php deve estar na pasta seusitio/sites/all/modules/localizer/
No meu caso, o arquivo localizer_settings.php estava em seusitio/modules/localizer/ e, então, a linha que incluí no meu settings.php foi esta:
include_once(’modules/localizer/localizer_settings.php’);
Agora abra seu navegador de internet no seu sítio, entre na administração e, em módulos, ative o Menu (Localizer), o Taxonomy (Localizer) e todos os módulos do Localizer. O Localizer pede, ainda, que estejam instalados os módulos Views e Token. Você precisa instalá-los e ativá-los.
Pronto. Deve estar funcionando. Desligue o computador e vá andar de bike :)
Obs: A dica de instalar esse módulo foi do efeefe :P
1) Entre no painel de controle do dreamhost.
2) Ir para Manage Domains > Add New Domains.
3) Em Full Hosted, preencha:
- Domain to Host: seusite.org
E clique em Fully host this domain now!
Ele criou uma pasta em /home/username/seusite.org/
4) Entre no seu servidor compartilhado via SSH (Você pode fazer isso por FTP, mas mostrarei apenas por SSH).
5) Entre na pasta do seusite.org
cd seusite.org
6) Baixe a última versão estável do Drupal:
wget http://ftp.drupal.org/files/projects/drupal-5.7.tar.gz
7) Descompacte:
tar -zxvf drupal-5.7.tar.gz 8) Renomeie a pasta:
mv drupal-5.7/ novosite
9) No painel do Dreamhost, ir em Goodies > Manage MySQL > Create a new MySQL database. Preencher:
- Database Name: dbseusite
- New Hostname: dbseusite . seusite.org
- First User: adminseusite
- New Password: suasenha
- New Password Again: suasenha
E clique em Add new database now!
10) Abra o navegador e digite www.seusite.org/novosite
11) Preencha:
- Database Name: dbseusite
- Database username: adminseusite
- Database password: suasenha
Em Advanced options, escreva em Database host:
dbseusite.seusite.org
E clique em Save configuration :)
Instalando, configurando, adaptando e utilizando o Drupal.
Vídeo-tutorial desmistificando o primeiro contato aos interessados em conhecer o Drupal.
Ensina como montar um site com as páginas:
- Home (exibindo resumo de todo conteúdo)
- Equipe (listar equipe do site com nome, thumb, foto e descrição)
- Novidades (matérias, textos, informativo divididos em categorias)
- Contato (formulário de contato)
Veja o vídeo e baixe tudo que foi produzido (drupal, coleção de módulos, banco de dados e tema) em:
http://drupal.planetaria.com.br
O vídeo foi feito bem caseiro e sem um grande planejamento. É de iniciante para iniciante.
Gostaria muito de saber se ajudou alguém, se não da pra entender, se ta ruim, qualquer comentário é bem-vindo.
Em breve estarei disponibilizando o vídeo no Vimeo, picotado em partes, pra ficar melhor de assistir.
Abraço,
Diogo.
Esse é um módulo que eu fiz para poder pagar por boleto bancário, por enquanto ele permite apenas pagamento pelo banco do brasil mas fazer adaptações nele para suportar outros bancos é possível.
Ele foi desenvolvido para funcionar com o ubercart, até a versão alpha8(última alpha) funcionou ok, nos betas que sairam não testei mas deve funcionar.
Quem quiser saber mais detalhes baixe e veja o arquivo leia-me, tem mais informações nele.
Como falei no outro tópico, comentários, melhorias, criticas, fiquem a vontade, a idéia é que vejam o quão útil ele pode ser e como podemos melhora-lo.
abraços
| Anexo | Tamanho |
|---|---|
| uc_boleto2.zip | 6.54 KB |
Digamos que você construi um módulo para controle de produtos, nesse seu módulo você possui uma página construída através do módulo, com o hook_menu, por exemplo: http://localhost/drupal/produto
No hook_menu você tem um callback que aponta para a função produto_get_content, essa função é responsável por trazer o nome do produto no título da página, através da função drupal_set_title, ela não busca mais nenhuma informação.
O que queremos é quando o usuário acessar http://localhost/drupal/produto/10 passando o parâmetro 10 seja buscada todas informações referente ao produto, para fazer isso podemos construir views do tipo bloco, cada view fica responsável por mostrar um tipo de conteúdo, uma mostra a descrição do produto, outra mostra as fotos, e podemos criar as views conforme a necessidade.
A página http://localhost/drupal/produto/10 será composta de vários blocos, o problema que temos é passar o parâmetro 10 para cada view, as views do tipo bloco não consegue pegar de forma automática o parâmetro da url para usar como argumento na view.
Nós podemos forçar a passagem desse argumento para view, isso pode ser feito usando uma opção mais avançada de argumento no Drupal.
Na construção da view você deve ir até o fieldset Arguments, escolher o tipo do argumento que você irá passar, no nosso caso nós precisamos do argumento do tipo código do produto, esse tipo de argumento não existe por padrão, você precisa que o seu módulo crie esse argumento, para fazer isso você pode visitar http://drupal-br.org/tutoriais/prover-campos-personalizados-para-o-views e http://drupal.org/handbook/modules/views/api nesses endereços você pode descobrir como fazer isso.
Agora precisamos pegar o argumento 10 da url http://localhost/drupal/produto/10 podemos fazer isso através da função arg(x) do Drupal.
Para forçar a passagem do argumento 10 para view do tipo bloco bastar ir no fieldset Arguments abrir o fieldset Argument Handling Code e inserir o código abaixo na textarea:
Esse código pega o parâmetro 10 da url insere no vetor $args e retorna o valor. Fazendo dessa forma a view do tipo bloco consegue obter o parâmetro.
Agora você consegue montar diversos blocos no seu site que trazem os conteúdos referente ao produto.
Você pode usar isso para as mais diversas funcionalidades.
Neste post estarei ensinando de forma amigável como proceder uma atualização de uma maneira correta e segura.
OBSERVAÇÃO
Antes de iniciar qualquer procedimento de atualização não importa qual software for sempre faça uma cópia de segurança(backup) de tudo que será afetado, no nosso caso, faça o backup do seu banco de dados e da pasta do seu website.
Para começar a primeira coisa que você deve fazer é acessar a Drupal.org e fazer download da versão mais recente que surgiu, este download sempre fica na página principal.
A versão atual do Drupal encontra-se na 6.12.
Com o download finalizado, por favor acesse o ambiente administrativo do seu site.
Siga para:
Por razões de segurança é necessário você deixar o site em modo offline.
Primeiro passo concluído!
Agora você precisa descompactar o arquivo que você tinha feito download. Se você perceber dentro desse arquivo compactado haverá uma pasta principal normalmente intitulada com este nome /Drupal6.x.
Dicas:
Se você perceber o sistema operacional (windows ou linux) vai pedir confirmação de substituição de arquivo, por favor, confirme essa ação.
Segundo passo concluído!
A partir de agora seu Drupal está praticamente atualizado, mas falta uma parte muito importante ainda. Se esta atualização abranger as correções de banco de dados não adianta só substituir os arquivos são necessários outros procedimentos.
Para iniciar estes procedimentos, por favor acesse o seguinte caminho:
Você irá para tela inicial de atualização do banco de dados do Drupal. Nesta tela você verá algumas informações referente a atualização, para continuar, pressione o botão continue.
A próxima tela será a de confirmação, você poderá ver uma série de itens que poderão ser atualizados ou não, por favor não mexa em nenhum dos campos de seleção por que poderá causar mal funcionamento de seus módulos. Somente pressione o botão Update.
Não próxima tela você perceberá que todos os passos da atualização estão concluídos, normalmente quando a uma real atualização de banco de dados nesta tela aparece um resumo do que foi feito, no caso da tela abaixo isso não ocorre porque foi feito uma atualização de teste do Drupal 6.12 para a mesma versão.
Siga para interface de administração do seu projeto e faça os mesmos procedimentos que foram feitos para colocá-lo em modo offline, mas agora deixo-o em modo online.
Para confirmar a atualização acesse a seguinte página:
Se apareceu a versão correta, parabéns! Você acaba de concluir todos os passos necessários para atualização do seu site.
Simples não?
Hoje vou mostrar como criar um pequeno módulo com um campo que é gravado em uma tabela própria, e em seguida disponibilizar esse campo para filtragem e ordenação no módulo Views.
Antes de começarmos, prcisamos nos ambientar. Para quem nunca criou um módulo para o Drupal, recomendo, antes de ler esse tutorial, ler essa documentação: http://drupal.org/node/508
Um outro requisito para entender plenamente esse tutorial(sua segunda parte, mais especificamente), é um pouco de conhecimento do módulo Views. Para baixar e testar esse módulo, acesse http://drupal.org/project/views Uma documentação inicial está disponível em http://drupal.org/node/47412
Ao final desse artigo, você poderá baixar o módulo de teste que vamos criar.
Sabendo essas coisas vamos lá.
Para esse tutorial vamos assumir alguns padrões:
Antes de mais nada precisamos criar um módulo e, para isso, precisamos criar uma pasta com o nome do nosso módulo.
Assim, acesse a pasta modules da sua instalação do Drupal e crie uma pasta chamada modteste. Dentro dessa pasta crie, a princípio, 3 arquivos: modteste.info modteste.install modteste.module
Cada arquivo desse tem um propósito:
Abaixo temos um exemplo do arquivo modteste.info (clique na imagem para ampliar)

Explicando:
name = modteste: Esse é o nome do módulo
description = Permite criar um tipo de teste: Essa é a descrição do módulo. Ela será mostrada na área de instalação de módulos do Drupal
package = Testes: Esse é o pacote do módulo. Na área de instalação de módulos do Drupal, esse será o nome do separador (fieldset) que conterá o seu módulo
version = VERSION: Aqui é a versão do seu módulo. Se você deixar VERSION ele pegará a versão atual do Drupal. É recomendável que você defina números de versões coerentes com o Drupal que você está utilizando. Assim, se a série do Drupal para a qual o seu módulo foi feito é a 5, utilize algo como 5.x-0.1, onde: 5.x é a série para a qual o seu módulo foi feito e 0.1 é efetivamente a versão do seu módulo. Uma coisa importante sobre as versões é notar que mesmo que você faça um módulo quando o Drupal estava na versão 5.3, utilize 5.x pois você está fazendo o módulo para essa série, e não para a versão específica, uma vez que o que vem depois do ponto é só o número de bugfixes da série.
A seguir o arquivo modteste.install (clique na imagem para ampliar):

Explicando:
Esse arquivo conta, essencialmente com duas funções:
modteste_install(): função que realiza o procedimento de instalação. É executada quando se marca o checkbox e envia o formulário na área de instalação de módulos do Drupal.
modteste_uninstall(): função que realiza o procedimento de desinstalação. É executada quando o módulo é desabilitado na área de instalação de módulos do Drupal, e em seguida marcado o checkbox e enviado o formulário na aba Desinstalar, também na área de instalação de módulos do Drupal.
Note que, no exemplo, só foram feitas a criação e exclusão de tabelas. No entanto pode-se realizar qualquer ação nesse momento. Isso vai depender do que o seu módulo precisa para cada momento. Esse arquivo só é necessário, efetivamente, se você vai realizar alguma configuração no momento da instalação/desinstalação.
Por fim temos o arquivo modteste.module. Vamos ver os pontos chave desse arquivo. Pretendo escrever um outro tutorial explicando, mais detalhadamente, como criar um módulo.
Primeiro a função modteste_uninstall() que montra o formulário em si:
Essa função implementa 3 campos. Dois desses campos são padrão para qualquer tipo de conteúdo no Drupal(node): o título e o corpo(title e body).
Todo tipo no Drupal possui um título e um copro. Esses dados são, por padrão, gravados na tabela node(somente o title) e node_revisions(title e body).
O terceiro campo do formulário é o nosso campo personalizado. Esse campo será, na verdade, um conjunto de radio buttons onde podemos escolher um valor.
Um princípio importante na hora de trabalhar com o Drupal é não mexer nos módulos e tabelas que ele cria, pois essas mudanças podem se perder quando você atualizar o Drupal na próxima vez. Só mexa no que o Drupal já traz se você estiver corrigindo um bug(correção que você deve enviar para os desenvolvedores do Drupal, para poder melhorá-lo para a sua próxima versão), caso contrário evite.
Tendo isso em mente, criamos uma tabela com o mesmo nome do nosso módulo (modteste). Essa tabela terá dois campos: um será o nosso campo efetivamente, e o segundo o nid(node id) que é o "elo"(foreign key) entre o nosso campo e o node dele.
Se você prestou atenção no arquivo modteste.install verá que ele cria uma segunda tabela, e já a popula. Essa é uma tabela auxiliar para o nosso módulo e será nela que iremos guardar os valores possíveis para o nosso campo.
Como já foi dito esse terceiro campo(meucampo) é um conjunto de radio buttons. Para tanto, a sua definição pede uma opção chamada "#options" que nada mais é que um array contendo o par chave/valor para cada um dos radio buttons.
No nosso caso, esses valores vêm de uma tabela auxiliar chamada modteste_options então fiz uma pequena função para carregar esses valores:
Note que essa função começa com o caractere _ .Essa é uma convenção do Drupal que significa que é uma função interna para esse módulo.
Por fim temos as seguintes funções:
Essas três funções fazem, respectivamente, a inserção, alteração e remoção do nosso campo na tabela auxiliar.
Note que não precisamos escrever nenhuma instrução SQL para a tabela node ou node_revisions. Isso é feito internamente pelo Drupal.
Esses são os pontos chave para o nosso módulo. Como dito antes, você pode baixar o módulo no final desse artigo e ver como é feito o restante do módulo.
Agora vamos ver como integrar nosso módulo com o módulo Views.
Nesse artigo não vamos cobrir o módulo Views, apenas a itegração do nosso módulo com ele.
O módulo Views permite criar visualizações personalizadas para determinadas situações. Existem diversas opções para criar Views, recomendo você dar uma olhada com mais calma nesse módulo. Em breve devo lançar um screencast só com o módulo views.
O módulo Views, assim como o Drupal inteiro, trabalha com hooks que nada mais são do que funções que podem ser extendidas.
Assim, o módulo Views implementa algumas funções que podemos extender para habilitar o nosso campo personalizado para construção de views. Vamos ver 2 dessas funções:
hook_views_tables(): Nessa função são definidas tabelas usadas para o relacionamento entr o módulo Views e o seu módulo
hook_views_arguments(): Nessa função são definidos os campos que podem ser usados como argumentos(via URL) para uma view.
Abaixo temos o código dessas duas funções:
Na função modteste_views_tables() nós definimos qual o nome da tabela que vamos utilizar para o relacionamento e como esse relacionamento se dará(veja o array join nessa função). Também definimos os filtros(filters) e as ordenações(sorts). Para esses dois ultimos, o módulo faz uso de funções callback, que nada mais são funções que são chamadas para executar e retornar um valor(ou conjunto de valores) sem precisarmos escrevê-la no local onde a chamamos.
É nessas funções callback que está o código a ser executado quando filtrarmos ou ordenarmos um campo.
A função modteste_views_arguments() tem um funcionamento semelhante. Ela especifica o nome de um campo(no caso acima modteste_meucampo) e uma função callback que será usada para executar a filtragem. Aparentemente ela é semelhante ao filters da outra função, mas a diferença essêncial é que ela implementa o nosso campo como um argumento para filtragem pela URL. Assim, eu posso chamar minha view, passando por argumento na URL o valor(no caso) do Meu Campo e a view fará a filtragem por nodes que tenham Meu Campo com esse valor.
Por fim, para manter as coisas organizadas, criamos um arquivo chamado views_modteste.inc e colocamos todas as funções de view nesse arquivo(as duas funções que estamos extendendo e suas callback). No arquivo modteste.module criamos então um mecanismo para que o Drupal encontre esse arquivo, criando uma função hook_init() como a abaixo:
Assim concluímos esse tutorial.
Espero que ele sirva para você.
Esteja à vontade para comentar.
Abraço
| Anexo | Tamanho |
|---|---|
| modteste.tar.gz | 2.69 KB |
O objetivo desse tópico é que as pessoas façam relatos sobre como construíram seus sites (o que, como, de que jeito, etc.).
Muitos novatos não sabem como usar muitas funções e recursos do drupal e dessa forma sentem uma redobrada dificuldade no contato inicial com o cms. Existindo à disposição relatos individuais da construção de variados sites e diferentes módulos e recursos possam sentir-se mais seguros no caminho das pedras.
Para inaugurar a seção, apresento o site que estou construindo!
Pessoal, estou construindo o site do meu antigo curso de graduação (http://www.economia.ufma.br/) e, como todo novato, tenho sentido dificuldade em entender detalhadamente o funcionamento de todos os recursos do drupal. Aqui, disponibilizarei progressivamente os procedimentos que adotei/estou adotando na construção do site. Com isso, espero disponibilizar a outros iniciantes casos reais detalhados do que e como se fez no site. Ademais, pretendo publicizar o conjunto das dificuldades e desafios nessa fase de aprendizado e familiarização com o Drupal.
SITE: Curso de Ciências Econômicas da UFMA
ÁREA: Educação
FOCO: Interatividade entre usuários; Auto-gestão de equipes; Produção descentralizada de conteúdo.
Público-Alvo: Alunos, Professores, Servidores;
Papéis de usuário: Aluno, Professor, Servidor, Coordenador do Curso, Chefe de Departamento, Grupo de Pesquisa X (como não sei fazer de outra forma, cada grupo de pesquisa receberá um papel de usuário), Coordenador do Grupo de Pesquisa X.
Opções de criação de conteúdo:
- Fórum: todos postam;
- Comentários: Todos comentam;
- Mensagens entre usuários: todos enviam;
- Agenda/Eventos: Professores, Servidores criam;
- Enquetes: Professores, Servidores criam;
- Matérias (Stories): Professores, Servidores criam;
- Páginas estáticas: Professores, Servidores criam;
- Páginas de livros: Professores, Servidores criam;
- Projetos: Professores, Servidores criam;
Obs.: Na fase inicial de operação do site os alunos não terão permissão de criação de conteúdo, mas à medida em que o uso do site evoluir pode-se modificar isso.
Há questões acerca da utilização do Drupal e da operacionalização do site que tive de raciocinar bastante e vasculhar em muitos locais (Sites Drupal Brasil, Hispanico, durpal.org, Cocinando con drupal, Italia, ...). Eis algumas soluções encontradas:
- Agendador de Tarefas: Minhas tarefas agendadas (Atualização das notícias rss, backup do banco de dados) só estavam sendo executadas manualmente porque o site não estava incluído no corn.php do servidor. Para evitar os trâmites burocráticos preferi instalar o módulo "poormanscron" que executa o agendador do site. Agora tudo está sendo atualizado devidamente.
Em breve postarei outras soluções encontradas para o meu site.
Tenho descoberto muitas coisas do drupal mexendo e remexendo muitas vezes dentro do site e dentro dos sites do drupal mundo afora. Por conta disso, gostaria de compartilhar as descobertas que estou fazendo sobre detalhes do uso e operação do drupal, espero que seja útil a outros como tem sido para mim.
Como estou construindo um site onde diferentes papéis de usuário postam conteúdo precisava restringir os locais onde poderiam inserí-los para não bagunçar o site.
Descobri que em "Início » Administrar » Construção do site >> Configurações" é possível se determinar isso. Para tanto, deve-se definir qual menu os usuários terão acesso para alocar os conteúdos.
Organizei os links para que todos os locais onde os usuários irão postar conteúdo estejam no mesmo menu, no meu caso o Menu Atividades. Quando o usuário entra em "Criar Conteúdo" a única opção disponível de menu é o que eu defini.
Ainda estou testando essa descoberta pois preciso saber como vou, como administrador, postar conteúdo em outros locais do site. Também vou tentar descobrir como fazer isso para cada papel de usuário.
Como num curso universitário há constante produção de textos e documentos, a idéia é permitir que os professores possam criam diferentes formas de textos em diferentes seções do site, cada qual com um objetivo diferente, assim:
==>Utilizando o tipo de conteúdo Página de Livro:
- Seção Textos para Discussão
> Um autor: Um professor cria e edita individualmente um texto;
> Vários Autores: Professores editam textos de outro professor caso este permita; podem também páginas dentro de um texto;
>> Em ambos os casos, podem enviar arquivos diversos para dentro dos textos (pdf, doc, xls, jpg...).
>>> Há categorias específicas para a seção.
- Seção Artigos:
> Todas as opções válidas para os Textos para discussão, mas com categorias específicas para a seção.
- Seção Grupos de Pesquisa:
> Todas as opções válidas para os Textos para discussão, mas com categorias específicas para a seção.
>>Apenas membros de um grupo de pesquisa podem criar e editar conteúdo.
>>Qualquer professor pode criar um grupo de pesquisa e selecionar os usuários que farão parte.
- Seção Disciplinas do Curso:
> Todas as opções válidas para os Textos para discussão, mas com categorias específicas para a seção.
>> Professores podem disponibilizar materiais didáticos complementares para uma disciplina;
>> Publicar avisos aos alunos;
>> Publicar as notas, etc.
- Arquivos e Imagens:
> Quando enviados pelo IMCE/TinyMCE:
>> Só podem ser acessados diretamente ou editados por quem fez o upload;
> Quando enviados pelo FileManager:
>> Podem ser acessados diretamente por todos;
> Quando enviadas fotos pelo Image:
>> Idem. As imagens são também disponibilizadas para as galerias de imagens e imagens randomicas.
- Seção Projetos:
> Professores e Servidores criam e selecionam os usuários que farão parte.
- Agenda:
> Há a agenda geral do curso onde professores e servidores criam eventos, etc.;
> Grupos de pesquisa: Cada grupo de pesquisa tem sua agenda própria, independente da agenda geral do curso.
VERSÃO DRUPAL: 5-7
MÓDULOS INSTALADOS:
==> account_reminder: relembrar aos usuários os dados da conta de acesso ao site;
-akismet: proteção conta span;
-backup_migrate: backup do banco de dados. Só funciona se você tiver acesso às páginas fora do raiz do site, como eu não tenho essa permissão não consigo utilizar o backup automatico, só o manual, fazendo o download do arquivo .sql;
-biblio: lista de bibliografias dos professores do curso;
-blockanonymouslinks: proteção contra span;
-bookmarks2: lista de sites recomendados pelos professores do curso;
-calendar: módulo para calendário. Mas não estou utilizando porque o event também tem um calendário integrado;
-captcha: para impedir robots nos formulários e nos cadastros;
-cck: ajuda a criar conteúdo... não sei detalhes... só sei que ajuda, hehehe;
- dba: acesso ao banco de dados diretamente do site. Permite fazer backup programado do banco de dados... e está funcionando;
-devel: sei que ajuda no desenvolvimento do site, mas ainda não sei como utilizá-lo;
-docs: gerenciador de documentos. Ainda não sei bem utilizá-lo porque tenho que associá-lo a um tipo de conteúdo...;
-drupal_ftp: (até agora não sei usá-lo...)
-ecard: cria um ecard da agenda e de outros módulos
-event: para criar eventos;
event_manager: complementa o event;
filemanager: configura como serão enviados arquivos para o site. também gerencia esse envio;
-image: envio de imagens para o site;
-imce: envio de imagens para o site. Pelo que andei lendo esse é o melhor que tem. Por enquanto vou manter os dois (junto com o image), depois vejo se posso desabilitar o outro;
-mimemail (não está funcionando porque ainda estou sem as configurações do servidor, que não é o mesmo onde está o site)
-multforms: ainda não tive uma oportunidade de usá-lo, mas parece ser muito útil para a criação de formulários mais complexos;
-nodefamily: tô voando;
-nodeprofile: idem
-pageroute: na prática, ainda não sei o que é, nem para que serve;
-pin: recurso legal para só permitir inscrições no site somente a pessoas que tenham um número de autorização. No momento está desativado, mas quando o site estiver em operação acho que ficará habilitado, de forma que os calouros do curso recebam um número que permita o cadastro no site;
-poormanscron: como não tenho o site inscrito no cron.php do servidor tive que instalar esse módulo para fazer funcionar os agendamentos existentes (rss, backup, etc.);
-privatemsg: Excelente módulo para troca de mensagens entre os usuários. A única limitação é não enviar mensagens para grupos de usuários (ex.: alunos de uma disciplina, professores de um grupo de pesquisa, somente para professores, somente para alunos, etc.);
-project: No curso há diversos projetos em execução (projetos de pesquisa, projeto de mestrado, projeto de PET, etc.) e acredito que esse módulo será útil para ajudar nesse gerenciamento;
-project_issue: complementar ao prject;
-project_permissions: complementar ao prject;
-tinymce: para trabalhar com imagens nos conteúdos. Segundo li é o melhor;
-token: não sei o que é, mas ele é requerido por vários outros...;
-urlist: lista de sites do professores. Estou decidindo se mantenho esse ou o bookmarks2;
-views: Esse é um dos módulos mais importantes do drupal, mas estou viajando na maionese total, mas um dia eu aprendo, hehehe.
Para cosntruir o site estou utilizando muitos módulos e quase nenhum está em português, assim, passei a traduzí-los. Não os disponilizei no site porque ainda estou treinando, quando me sentir mais seguro posto todos:
São eles:
- Biblio;
- Blockanonymouslinks;
- CCK;
- OG (Organic Groups);
- Poormanscron;
- PrivateMsg;
- Project;
- Project_Issues;
- Scheduler;
- Site map;
- Taxonomy User Access;
- Technorati
Se alguém tiver interesse em algum deles é só me contatar que envio para o email.
Nesse novo tópico, disponibilizarei alguns problemas e as soluções que encontrei...ou não.
Uma maneira muito prática de constuir-se um menu lateral para exibir links favoritos e/ou recomendados de um site é a criação de um Bloco. O procedimento é muito simples (extraído a partir de http://drupal-br.org/geral/drupal-brasil/lista-de-sites-sugeridos):
1) acessar Início » Administrar » Construção do site » NOVO BLOCO
2) Descrição do Bloco: Um título para o bloco
3) Corpo do Bloco: neste campo deve-se adicionar tag's html para chamar o link e a imagem do site desejado:
No link abaixo há três exemplos de como proceder:
O resultado desse procedimento no site que estou construindo ficou assim:
http://www.economia.ufma.br, seção Sites relacionados, à direita.
Problema: Estou enfrentando uma série de contratempos com a utilização do módulo Organic Groups (http://drupal.org/project/og), pois ele interferiu em vários módulos pré-instalados, fazendo com que apresentassem problemas ou que deixassem de funcionar, caso do TINYMCE que estava ativo para todos os usuário mas simplesmente não aparecia na caixa de criar conteúdo.
Solução: Para que o Tinymce voltasse a funcionar, excluí o perfil de usuários dentro do próprio Tinymce; depois criei outro perfil com as mesmas características. Resolvido. Solução simples porém de trabalhosa descoberta, hehe.
Para um novato, a intensidade e quantidade de desafios são grandes na familiariazão com um cms tão poderoso como o drupal. Num ambiente assim caracterizado e com inúmeras possibilidades de personalização, e na ausência de uma documentação em português ou espanhol, especificamente no que se refere às VIEW's e às permissões de acesso às diferentes Formas/Tipos de conteúdo (stories/matérias, páginas estáticas e Páginas de Livros), seja pelas permissões normais, como pelas taxonomias/categorias.
Sobre estas duas questões assentam 70% de todos os desafios que tenho para aprender a utilizar o drupal e o mesmo se repete com todos os usuários iniciantes que abrem tópicos nos foruns do site.
Atualmente estou engajado na tentativa de entender como funcionam as view's para, a partir daí, conseguir gerar outras formas de visualização da informação do site. Ontem consegui descobrir um pedaço da roda, cheguei à conclusão que uma view é apenas uma consulta feita ao banco de dados, um forma de filtrar a informação e exibí-la num formato específico desejado pelo criador do site.
Já criei algumas view's para testar e me complico com a quantidade de opções de personalização das mesmas, bem como de saber como utilizá-las depois de prontas (e estou batendo muita cabeça sobre isso).
Pois bem, vamos às questões:
- Como ativar RSS para todo o site, por categorias (RSS dos avisos, das agendas, das páginas, das postagens, etc.)?
- Como fazer com que a foto do usuário só apareça na lista de usuários logados, no perfil, nas postagens dos foruns e nos comentários (e não nas páginas, livros e matérias [stories])?
- Qual módulo permite enviar mensagens para grupos de usuários de uma só vez?
- Tenho o Sistema de Editoração de Revistas Eletrônicas (SEER/OJS) do IBICT instalado, como aproveitar o cadastro dos usuários do site? É através do OpenId, widget do blogger, ou o que?
- Como programar o dia/horário que uma página/nodo irá ao ar, assim como pode ser feito no wordpress?
- Como fazer com que o criador de um Grupo de Pesquisa receba automaticamente a atribuição do papel de Coordenador do Grupo?
- Como encerrar o login após o navegador ser fechado ou quando o computador ficar inativo por X minutos?
- Como trocar algumas Mensagens de Informação do Drupal por Mensagens de Alerta ou de Exclamação?
Ou "Quem não tem cão caça com gato"
Na minha atual limitação em trabalhar com o view's e com as permissões de acesso por taxonomias/categorias estou testando uma forma muito peculiar de tipos de conteúdo, criando um tipo para cada grupo de papéis de usuários, como se vê abaixo:
<>Permissões para criar conteúdo para cada local de publicação de conteúdo:
- Textos para Discussão:
> Criei um novo tipo de conteúdo para cada local de publicação de conteúdo;
>> "Texto individual": Página de livro que os professores só podem alocar no respectivo item de menu;
>> "Texto colaborativo": Página de livro que só pode ser alocada pelos autores no respectivo item de menu;
- Artigos:
> "Artigo individual": Página de livro onde o professor só pode alocar neste item de menu;
> "Artigo colaborativo": Pagina de livro onde os professores só podem alocar neste local;
- Grupos de Pesquisa:
> "Página X" (Com o nome do grupo) -> Os membros do grupo criam páginas estáticas vinculadas a este item de menu;
> "Texto X" (...) Página de livro que os membros do grupo publicam apenas neste item de menu;
- Disciplinas do Curso:
> "Cadastrar Disciplina": Página estática onde apenas o Coordenador do Curso e o Servidor (funcionário) têm acesso. A página criada não aparece em nenhum item de menu, mas em link na página "Grade Curricular", editada manualmente. Possui campos de categorias específicas (Semestre da disciplina, papel da disciplina [Núcleo do Curso, Complementar, Optativa] e Departamento a qual está vinculada [Deptos de Economia, Computação, Direito, Matemática, Sociologia, Contabilidade, Letras]);
- Agenda (event):
> Criei uma view para cada papel de usuário, mas ainda não sei como utilizá-las no site;
- Project:
> Defini que os professores podem criar um projeto. Defini também que podem selecionar quem fará parte do mesmo;
Um aluno do último Treinamento Mão na Massa Drupal me procurou perguntando como fazer uma mini galeria anexada a uma página. Como não é uma coisa muito trivial para quem está começando com o Drupal mexer com o módulo Views e como essa é uma pergunta que pode ajudar outras pessoas resolvi fazer um Screencast para tentar ajudar.
Abaixo o vídeo
E quem quiser baixar o vídeo para ter consigo basta clicar aqui. Está em formato MP4.
Olá pessoal,
Como prometi no canal #drupal-br semana passada, gravei um screencast sobre views. Na verdade há mais dois semi-prontos que devem ir ao ar até o meio da semana.
Quem quiser assistir online o vídeo está aí abaixo:
Quem quiser fazer o download basta clicar aqui(o vídeo está em formato MP4)
Como de costume peço desculpas pela gagueira e pelos eventuais erros de pronúncia do nome do nosso amado CMS.
Dúvidas, erros encontrados, sugestões e qualquer outra coisa que você acha pertinente, sobre esse screencast, é só falar aí nos comentários.
Abraços.
Para ter acesso a uma lista de tutoriais em inglês acesse o tópico Lista de sites com tutoriais, screencasts, etc...
Neste tutorial, colocarei passos rapidos para a construção de um site e sua publicação online, no final o site ficará em inglês, mas traduzi-lo para portugues é facil e existem vários tutoriais na net (tem um video que eu coloquei no youtube explicando como fazer isso) e depois eu adiciono no final desse tutorial se for o caso. O objetivo é construir um site rapidamente, deixando o ambiente de trabalho online e não local.
O nível do tutorial é intermediario, mas acho q iniciantes conseguirão segui-lo bem.
Para esse tutorial, adote os seguintes termos
---------------------------------------------
username = o nome de usuário que você criar
password = a senha que você inventar
databasename = o nome da base de dados do seu site
meusite = o nome do site que você criar
seusite = o domínio que você contratou
Tutorial
----------------------------------------------
a. Instalar programas
* XAMPP 1.6.8 (a nova versão dá problema com o Drupal 6.1X, baixe a antiga em http://sourceforge.net/projects/xampp/files/
* FileZilla 3.2.X.Y http://filezilla-project.org/download.php?type=client
* Crie uma conta em um host qualquer (recomendo http://www.hostsh.com.br que dá suporte ao Drupal)
b. Preparar instalação
* baixar drupal 6.14 http://drupal.org
* descompactar na pasta C:/xampp/htdocs e renomear para meusite
* copiar, colar na mesma pasta e renomear o arquivo em meusite/sites/default - default.settings.php para settings.php
* iniciar Apache e MySql no Xampp
* no navegador ir em http://localhost/phpmyadmin
* em criar base de dados, digitar databasenamee dar OK
c. Instalar o site
* no navegador ir em http://localhost/meusite
* na instalação em base de dados, escolha mysqli, nome databasename, usuario root e deixar senha em branco
* nome do site meusite, usuario #1 username senha password
* ao terminar de instalar e se vc ver uma pagina dizendo WELCOME TO YOUR NEW DRUPAL WEBSITE, vc terminou a instalação com exito, pode dar um erro de envio de email, mas isso não atrapalha
d. Preparar a BASE DE DADOS para Exportação
* no navegador digite http://localhost/phpmyadmin
* clique em databasename no canto esquerdo
* clique no botao exportar
* no final da pagina, marque compactar com Zip
* salve o arquivo no desktop databasename.sql
e. Importar Base de Dados online
* Entar no endereço cpanel do host que você contratou
* procurar o ícone Base de Dados MySql
* clique em Criar a base de dados e digite databasename
* clicar no icone PHPMYADMIN
* na nova janela, clique na databasename no canto esquerdo (o nome pode variar dependendo do host, alguns adicionam username_databasename)
* clique no botão IMPORTAR
* envie o arquivo no desktop chamado databasename.sql e aguarde a criação das tabelas
f. Preparar os arquivos para envio
* abrir, em um editor o arquivo settings.php na pasta xampp/htdocs/meusite/sites/default
* na linha 92 faça alterações de acordo com como ficara no host, altere
$db_url = 'mysqli://username@localhost/databasename';
* por
$db_url = 'mysql://username:password@localhost/databasename';
* onde username e password são os dados da conta que você contratou e databasename o nome da base de dados que está no host
* salve e feche o arquivo
g. Enviando os arquivos
* Abra o programa FileZilla
* host: seusite usuario: username senha: password
* clicar em conectar
* do lado direito clicar 2x em public_html
* do lado esquerdo navegar ate a pasta xampp/htdocs/meusite, clique duas vezes para abrir a pasta, selecione todo o conteudo e com o direito do mouse, clicar em ENVIAR
quando terminar, visite o endereço do seu site para ver ele online ou visite o endereço do host/~suaconta para ver se tudo esta ok
Quaisquer dúvidas é só postar ai abaixo
Alan
Esse tutorial foi escrito para suprir a necessidade de várias pessoas na comunidade Drupal Brasil. São pré-requisitos para realizar esse tutorial um pouco de conhecimento da língua inglesa e alguma familiaridade com o Drupal.
O objetivo desse tutorial é mostrar como construir um site com caixas (boxes) onde serão carregadas informações que desejamos.
Pare esse tutorial, iremos carregar em uma página, algumas notícias que vamos definir como destaque e ao lado delas itens de um determinado tipo, que vamos chamar de artigo. Esse é um exemplo simplificado, podendo ser melhorado e expandido.
Esse tutorial foi feito com base no Drupal e módulos nas versões abaixo:
Ele pode funcionar com versões mais novas desses módulos, mas é provável que com versões anteriores não funcione.
Antes de começar o tutorial você já deve ter instalado o Drupal. Caso você não saiba como instalar o Drupal veja o screencast de instalação do Drupal também feito por mim.
Para começarmos temos que baixar os módulos que utilizaremos nas suas respectivas páginas no Drupal.org
Após baixar esses módulos, vá até a pasta sites/all da sua instalação do Drupal e, alí, crie uma pasta chamada modules. Dentro da pasta modules descompacte o conteúdo de cada um dos 3 módulos que baixamos. Isso fará com que você possa instalar esses módulos no seu site.
Tendo feito isso e, assumindo que o seu site esteja rodando em http://localhost e com as Urls limpas (clean urls) ativadas, vá até http://localhost/admin/build/modules.
Nessa página são mostrados todos os módulos disponíveis para instalação. Você verá que, apesar de termos baixado 3 pacotes, existem vários módulos novos para instalação. Isso se dá porque cada pacote que baixamos pode ter vários módulos.
Você deve então habilitar os módulos que usaremos que são:
Para habilitar basta marcar a caixa de texto na em frente ao nome de cada módulo, e depois clicar no botão Salvar configurações (Save configurations) no final da página.
Uma vez habilitados os módulos, já temos os módulos necessários para a construção do nosso site personalizado, mas a simples instalação não faz o que precisamos. Nesse momento vamos ver o que cada um desses módulos faz para entendermos porque os habilitamos.
Ele capacita o site a ter uma visualização em painéis (panels, em inglês). Ele será a peça fundamental para a construção do layout da página.
Complemento para o Panels. Ele possibilita criação de páginas com painéis, que é o que queremos.
Esse é um dos módulos mais utilizados com o Drupal pois possibilita uma grande flexibilidade na extração de dados. Ele será usado para montar as listagens que usaremos no nosso site.
Esse módulo não é essencial para uma construção de site no formato que queremos, mas o utilizaremos por ele trazer uma abordagem mais simples para a promoção de páginas a destaques.
Uma vez que vamos construir uma página que carregará os nossos destaques, precisamos definir o que seria esse destaque. Isso será feito usando-se o módulo Node Queue. Esse módulo permite que adicionemos determinados conteúdos a Queues (filas). Em conjunto com o módulo Views e o Panels ele vai realizar o efeito que queremos. Assim, o primeiro passo é criar um queue.
Para criar um queue acesse http://localhost/admin/content/nodequeue ou vá navegando pelo menu em Administrar > Organizar conteúdo > Node queue .
Aqui podemos adicionar um novo queue ao clicarmos em Add node queue.
Ao acessar a página de criação de queues você deverá preencher alguns dados:
Por fim, envie o formulário, e teremos o nosso queue pronto.
Somente essa configuração não é suficiente para termos o efeito desejado, mas é o primeiro passo.
Agora vamos adicionar o nosso tipo Artigo que será carregado ao lado dos destaques, conforme especificamos no inicio do tutorial.
Àpartir do Drupal 5 você pode criar quantos tipos achar necessário, sem precisar programar nenhuma linha de código. Isso foi criado para facilitar a vida de pessoas que ainda não têm conhecimento suficiente de programação mas precisam de algo fácil.
Para o nosso tutorial, vamos criar um tipo Artigo que será, automaticamente, listado ao lado dos destaques na nossa página de destaques.
Para criar um novo tipo acesse http://localhost/admin/content/types/add ou Administrar > Organizar conteúdo > Tipos de conteúdo > Novo tipo de conteúdo.
Aqui serão solicitados alguns campos, mas vou detalhar somente os mais importantes:
Ao final, salve esse formulário.
Agora teremos a opção de adicionar o nosso novo tipo no menu Criar conteúdo. Crie uns dois ou três artigos (esse novo tipo que adicionamos) e umas duas ou três notícias (tipo story) pois usaremos esses conteúdos mais na frente.
Como já expliquei no inicio, o módulo Views é o responsável por carregar informações em formatos que desejamos, sem que precisemos escrever instruções SQL ou código PHP. Esse módulo será usado tanto para carregar os destaques quanto para carregar os nossos artigos.
Na verdade, ao criar um queue com o módulo Node Queue ele já realizou parte do trabalho. Esse módulo já criou a view que carregará as informações de destaque, e assim só precisamos ativá-la. Para isso acesse http://localhost/admin/build/views ou Administrar > Construção do site > Views , e localize a linha onde está a view chamada nodequeue_1 e clique no link Enable dessa view.
A
ssim teremos a view dos destaques devidamente habilitada e agora poderemos criar o nosso painel, onde, efetivamente, estará a visualização que desejamos.
Para criar um painel, acesse http://localhost/admin/panels/panel-page/add ou Administrar > Panels > Panel pages > Add.
A criação de um painel se dará em forma de Wizard (telas passo-a-passo). De forma a facilitar o entendimento vamos ver cada uma dessas telas, mas nos atendo ao que for necessário para o nosso tutorial. Você verá que existem várias configurações que não exploraremos mas que fazem com que o poder de construção de paineis seja maior.
Então vamos à primeira tela.
Aqui podemos escolher a forma como o nosso painel será exibido. Como definimos no começo, o nosso painel será composto de 2 colunas, cada uma contendo o bloco que desejamos (destaques e artigos). Assim, escolhemos a opção Two column.
Na segunda tela, temos algumas informações, das quais prencheremos:
Por enquanto só iremos preencher esses dados, e vamos clicar no botão Next para irmos para a próxima parte do nosso painel.
Nessa próxima tela, Advanced, não vamos preencher nada, apenas clicar no botão Next.
Novamente iremos passar pela tela Context sem preencher nada, pois no nosso tutorial ela não será usada. Clique no botão Next.
Chegamos, finalmente, à tela Conteúdo. Aqui é onde adicionamos o que desejamos que seja carregado no nosso painel. É onde a ação acontece.
Você pode ver que há dois espaços, um chamado Left side e Right side, que nada mais são que os locais onde as informações serão carregadas. Esses dois espaços são exatamente as duas colunas que escolhemos ao iniciar a criação do nosso painel(se lembra de escolher Two Column no início?). Se houvessemos escolhido 3 colunas, teríamos aqui 3 espaços.
Agora clique ao ícone de + no Left side e você verá que se abrirá uma tela para escolhermos qual bloco iremos carregar nessa nossa região.
Se você reparar na seção Contributed modules dessa pequena janela, verá que há um bloco alí que nos é familiar, o bloco Destaques que criamos ao adicionar o nosso node queue.
Clique no ícone desse bloco para adicioná-lo.
Você irá para uma nova janela, onde não preencheremos nada, e só clicaremos no botão Add pane no final dessa janelinha.
Por equanto não temos o que carregar na outra área, por isso vamos deixá-la sem nada, e clicar no botão Save para criar nosso bloco.
Agora se acessarmos http://localhost/destaques veremos como ficou nosso painel.
Lembre-se que só será carregado nesse painel notícias (story) que você clicou no link Adicionar aos destaques. Se você não criou nenhuma notícia ou se não adicionou nenhuma aos destaques, a página ficará vazia.
Bacana, temos o nosso painel, mas não é ainda o que prometemos para esse tutorial. Afinal, ele não está carregando os nossos artigos (você se lembra que criamos um tipo artigo não é?).
Pois bem, então vamos adicionar esse recurso ao nosso painel.
Como já disse, o módulo Views permite uma grande flexibilidade de carregamento de dados do nosso site. Nós já vimos isso em ação pois o bloco de destaque que está sendo carregado no nosso painel é uma view. O que precisamos é criar nossa própria view, com os dados que queremos.
Vamos lá então!
Acesse http://localhost/admin/build/views ou Administrar > Construção do site > Views e clique na opção Add para adicionar uma nova view.
Uma view pode ser algo muito complexo, por isso não vamos abordar todas as opções disponíveis, apenas aquelas necessárias para o nosso tutorial. Vamos aos campos, separados por cada uma de suas seções:
Nessa seção preenchemos as informações básicas da nossa view.
Aqui vamos preencher as informações de bloco. Como vamos usar nossa view num painel só vamos adicionar um bloco e não uma página.
Aqui podemos filtrar o que será carregado no nosso bloco. Como só queremos objetos do tipo Artigo será aqui que iremos definir isso.
Aqui é a nossa última opção, que nada mais é que a forma como os dados serão ordenados para exibição. Como queremos ver os últimos artigos no topo da lista precisamos configurar isso. Para tanto proceda assim:
Pronto, agora é só salvar a nossa view e ela já estará disponível para utilizarmos no nosso painel.
Agora vamos à parte final do nosso painel. Acesse http://localhost/admin/panels/panel-page ou Administrar > Panels > Panel pages e veja que o nosso painel foi listado.
Clique no link Editar e em seguida na aba Conteúdo.
Essa tela nós já vimos. Agora clique no ícone + da região Right side e na tela que se abrirá escolha, na seção Contributed modules, o nosso recém criado bloco de artigos. Da mesma forma, na tela seguinte ao se clicar no ícone do nosso bloco, não preencha nada, e apenas clique no botão Add pane.
Por fim, clique no botão Save no final da página e em seguida acesse http://localhost/destaques.
Pronto, temos a nossa página personalizada, com informações relevantes.
Vimos como criar uma página diferente para o nosso site, usando módulos já existentes e sem programar nenhuma linha de código.
Obviamente que algumas pessoas vão querer personalizar ainda mais essas informações.
Os módulos utilizados nesse tutorial permitem um enorme grau de personalização mas que exigem um pouco mais de conhecimento tanto de PHP e HTML/CSS quanto de Drupal.
Também existem outras formas de se obter esse mesmo efeito, sem esses módulos. Mas nem sempre são tão simples ou tão rápidas.
Você encontará, em inglês, toda documentação desses módulos em:
Se esse tutorial foi útil para você, e se você pode contribuir com alguma informação/experiência, sinta-se à vontade para comentar. Se você encontrar erros ou inconsistências, os comentários também estão abertos para sua contribuição.
Às vezes você precisa exibir um determinado tipo de conteúdo com uma aparência um pouco mais trabalhada, para valorizar o seu conteúdo. Com o Drupal isso pode ser feito de várias formas, e nesse tutorial vamos ver uma, usando o módulo Panels.
Esse tutoria irá mostar como exibir partes de um determinado tipo de conteúdo em duas colunas como no exemplo mostrado abaixo.

Nesse exemplo estamos mostrando, em duas colunas, o conteúdo que seria exibido um embaixo do outro. É esse exemplo que vamos reproduzir.
Antes de começar você deve ter o Drupal instalado, bem como o Módulo Panels e suas dependências. Não vou cobrir aqui a instalação apenas o uso dos mesmos.
Para esse tutorial também habilitei o módulo blog e criei posts para blog, mas isso não é obrigatório
Após ter instalado tudo, o primeiro precisamos criar algum conteúdo.
Depois de criar conteúdo, acesse a página de gestão de Painéis em Administrar > Construção do site > Páginas e procure pelo painel node_view e clique em Editar para esse painel.

Você será direcionado à tela de edição desse painel. Como ele é um painel zerado, você precisa adicionar uma variante para ele. Isso irá, efetivamente, criar o visual que desejamos.
Para isso, clique no link Add a new variant

Ao adicionar uma variante lhe será solicitado que dê um título administrativo (para que você a localize quando for necessário) a ela, que escolha um tipo de variante (que no caso será Panel) e quais recursos opcionais você deseja. No caso, marque os dois itens padrão (Selection Rules e Contexts).

O próximo passo é escolher as regras de seleção (Selection Rules) para esse painel. No caso, eu escolhi uma regra por tipo, você pode escolher a que melhor lhe interessar.

Caso você tenha feito como eu, ele irá te solicitar a quais os tipos de conteúdo você deseja atrelar esse painel. Eu escolhi Post de blog e Artigo, escolha qual lhe for mais conveniente.

O passo seguinte você poderá adicionar os contextos. Como editamos um painel com contexto já pré-configurado (o contexto é o node) podemos só continuar para a tela seguinte.

Em seguida, escolhemos o layout. Para o meu exemplo escolhi um layout de 2 colunas. Você pode escolher qual achar melhor.

Estamos quase no fim! Agora vamos escolher o que queremos exibir em cada uma das regiões do nosso painel.

No meu exemplo, escolhi para o pane da esquerda o conteúdo do node e para o da direita os comentários do node. Mais uma vez, fica a seu critério escolher o que achar melhor.

Após isso você precisará clicar em Create variant e por fim no botao Salvar que fica logo mais abaixo.
Pronto, com isso você terá o resultado abaixo para os tipos de conteúdo que você escolheu mudar a visualização.

Comentários e sugestões são bem vindas. Abaixo você pode baixar essa variante para pode importar, caso deseje.
| Anexo | Tamanho |
|---|---|
| Exportação da variante | 2.34 KB |
?q=

O Drupal traz 3 menus configurados por padrão: Navigation (para usuários do site), Primary e Secondary Links.
Navigation = traz links para a administração, e links úteis como procurar ou ver os usuários do site,
Criar um novo Menu
Em menu, clique em criar novo menu, digite um nome sem caracteres especiais, um título - nesse título pode espaços, acentos, etc - e uma descrição.
Ao terminar de criar o menu você verá um aviso do tipo "Não há itens de menu ainda." (There are no menu items yet.) pois o menu está vazio. Seu novo menu também virou um bloco (visite a seção bloco para conferir)
Criar itens do Menu
clique em qualquer item de menu e clique em NOVO ITEM. Digite o endereço da página (algo do tipo node/4 onde 4 aponta para a quarta página ou node criado por você), o Título, descrição, escolha Ativar ou não, Expandir ou não e o Parentesco (Parent Item).
sobre menus expandidos e parentesco: olhe para o bloco a direita desse site chamado Manuais... em Manual Drupal 6 você verá uma "seta para baixo" e subitens... em teoria é como se o menu "Manual Drupal 6" estivesse com a caixa EXPANDIDO ativada. Os itens "Instalando o Drupal" e "Administrando o site" são parentes de "Manual Drupal 6"... se você alterar o parentesco, os itens mudam de lugar indo de um menu para outro.
Apagar um menu
em Editar Menu escolha Apagar, mas cuidado, os lnks desse menu também serão apagados mas não os nodes (conteúdos) criados
Observações
Dependendo do tema, não haverá espaço para colocar Primarys links ou apenas para Primary e não para Secondary.
Outro problema comum é que por mais que você deixe um menu expansivel, você não vê os filhos ao passar o mouse por cima em um tema que não permita isso. Você pode solucionar isso baixando um módulo chamado NICE MENU que traz um css de menu.
Você verá 2 opções nessa tela
Filtered HTML = permite que apenas formatações básicas como <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> sejam aceitas quando o usuário digitar tags HTML em seus formulários, URLs viram links automaticamente. Enfim, é o mais seguro para seu site, caso você não deseje que visitantes façam a festa em seu site, postando comentários coloridos e etc.
FULL HTML = essa opção permite toda e qualquer tipo de formatação HTML. O visitante ou membro de seu site pode muito bem abrir uma tag <table> e montá-la em seu post.
PHP Code = você tem que ativar o módulo PHP Filter para ter essa opção disponível. Essa opção só deve ser usada pelo membro #1 (super admin), permite que você injete código PHP na sua página, o que pode, se você não souber o que está fazendo, avacalhar seu site como um todo.
Criando um novo formato
supondo que você queira digitar código Javascript no post, os módulos acima podem não rodá-los apropriadamente, então, você deve criar um novo formato e não marcar nenhuma opção onde está escrito Filtros. Dê um nome do tipo "scripts" para você lembrar que esse formato foi feito para rodar seus códigos javascript
Qual é a finalidade de ter mais de um input format?
Quando você estiver trabalhando com módulos como CCK ou FCKeditor por exemplo, esses módulos dependem de uma correta configuração dessa seção para funcionarem corretamente, por exemplo, o CCK permite que campos criados sejam "travados" para um dos formatos de entrada existentes e o FCKeditor funciona melhor com FULL HTML ativado.
Node = conteúdo primario
Comentário = conteúdo para comentarios
File = conteúdo para arquivos
Node = usando node como newsletters
Node revision = histórico de mudança do node
Term = esta anexado com o node
Usuário = usuarios que criaram conta no site
Mas geralmente usamos o primeiro(Node)...
Seguindo a numeração da imagem acima temos:
1- Aqui estão os display, quando bloco ele aparece na parte dos blocos pra que voçe possa coloca-lo no lugar que deseja.
2- Nome: Esse é o Nome do Display, pode ser qualquer coisa.
3- Título: O título aparece na pagina da views... então é melhor deixar em branco
4- Aqui voçe escolhe o estilo da linha, escolha sempre node.
5- Abilita e dessabilita o uso de paginação...
6- Quantidade de Itens que será exibido.
7- Aqui ele vai te dar as informações necesarias para quando for criar os arquivos TPL.PHP, e é aqui que voçe vai atualizar o tema quando acabar de criar os arquivos TPL.
8- Escolher a ordem do conteúdo conforme deseja. Exemplo clássico: Ordenar as notícias pelas ultimas atualizadas.
9- Filtrar o conteúdo que vai ser utilizado.
obs: Os campos obrigatórios que é preciso para a views ser criada é o "Row style" e "Endereço".
1º Baixe os módulos Taxonomy Theme e ThemeKey.
2º coloque o módulo na pasta de módulos e o ative na parte administrativa do site.
3° Acrescente a extensão /update.php e atualize os módulos.Irá aparecer um link(ThemeKey) do menu de navegação em Administrar/configuração do site.
4° A primeira coisa a se fazer no módulo é configura-lo.
Let's go!!!
Clique em Configurações, vai aparecer essa tela aew:
Tem que estar com essas configurações...
Marcando a caixa "Provide all themes for selection" voçe vai deixar disponivel todos os temas que foram instalados no Drupal.
Marcando a caixa "Discover all node properties for selection" permite que voçe escolha que tipo de propriedades que quer que o thema seja exibido. E o que importa pra gente ai é o "type", entao nao esquece de marcar esse cara aew...
Agora tu vai em Properties(propriedades)...

Agora a gente pode escolher um tema para um tipo de conteúdo com o "type" que abilitamos nas propriedades.

Selecione o "type" nas "Property" ao lado de Valor, e em Valor voçe coloca o tipo de conteúdo que vai ser exibido com tal tema ^^
Esse "nid" é criado automaticamente, entao nao se preocupe em adiciona-lo =D
Mas se quiser colocar uma pagina com outro tema... vá em "Paths".

Coloque o endereço e escolha o tema, e pronto... Essa parte é apropriada para alterar o tema de uma Views.
O que fazer quando a edição de um node está sendo exibida no tema externo. > Entrar em /admin/content/nodewords e desmarcar a opção "Use the teaser of the page if the meta description is not set."
Bom está é a noção do que eu tenho do Drupal, uma grande ferramenta, mais que ainda falta muito para eu aprender!!! Estou aceitando criticas e sujestões.
Me perdoem se eu cometi algum erro, por isso sintam-se a vontade para me corrigir. Agradeço a toda galera do Drupal Brasil, em especial minha Parceira Laila, que sempre está me dando uma força.
Muitas pessoas têm instalado o Drupal com sucesso, mas algumas têm tido problemas em colocá-lo em português do Brasil.
Para desmistificar esse processo esse tutorial simples foi criado.
Esse tutorial foi feito para o Drupal 6.x e o único requisito é ter o Drupal nessa versão. Para instalação do Drupal 5.x em português, veja o screencast que eu fiz a respeito disso.
No Drupal 6 existem duas formas de instalar um idioma: durante o processo de instalação ou depois da instalação. Nesse tutorial vamos ver primeiro a durante a instalação e em seguida a que é tida como a tradicional.
A tradução mais completa e que está sempre sofrendo atualizações é a que está no servidor de traduções do Drupal Brasil em http://traducao.drupal-br.org. É a partir desse servidor que iremos baixar a tradução para o nosso site.
Após acessar o servidor, no menu lateral direito clique na opção Exportar.
Você será remetido a uma tela onde escolherá algumas opções:

Choose a project: O projeto que deseja exportar a tradução. No nosso caso queremos a tradução do Drupal, então digitaremos Drupal(se já não vir preenchido).
Release: Escolha o último release disponível, ainda que ele seja diferente da sua versão atual (por exemplo, no momento que escrevia esse artigo a última versão do Drupal era a 6.6 mas o release disponível era o 6.4).
Type of export: Tipo de exportação. No nosso caso queremos a tradução e não um template. Então escolha Tradução.
Format used: Aqui temos 4 opções:
Depois de escolher as opções mencionadas, basta clicar no botão Exportar e salvar os arquivos que ele irá gerar.
Nesse processo você vai precisar ter o Drupal pronto para instalar. Aqui não será abordada a instalação em si, somente como fazer a instalação em português. Assim, você já deve ter baixado e descompactado o Drupal em um local onde o seu servidor Web consegue acessá-lo.
Você também deve ter o arquivo que exportamos do servidor de traduções, no formato de pacote para o Drupal 6 (primeira opção da exportação).
Considerando que a instalação será feita localmente e assumindo seu endereço local como http://localhost vamos aos passos:

Esse é o procedimento básico. Em alguns casos você pode receber a mensagem The translation import failed, because the file could not be read.. Isso porque esses arquivos que acabamos de descompactar precisam de permissão de leitura para o usuário que executa o seu servidor Web. Então dê a permissão adequada.
Nesse modo você já tem o seu site instalado em inglês e precisa instalar a tradução. Você já deve ter baixado a tradução no passo correto desse tutorial e agora vamos instalá-la. Lembre-se que a tradução é a All in one file.
A primeira coisa que devemos fazer é habilitar o módulo de tradução, chamado Locale. Para isso acesse Administer > Site building > Modules escolha o módulo Locale e clique no botão Save Configuration
Com o módulo Locale ativado, precisamos importar a tradução. Para isso acesse: Administer > Site building > Translate interface. Aqui, na parte superior, clique em Import.
No campo Language file escolha o arquivo que baixamos do servidor de traduções. No campo Import into escolha o idioma português do Brasil ou seja "Portuguese, Brazil (Português)". As demais opções deixe-as como estão e clique no botão Import.
Com isso temos a tradução importada, mas falta um último passo, que é ativá-la para o nosso site. Para tanto acesse Administer > Site configuration > Languages. Nessa tela veremos os dois idiomas disponíveis: Inglês e Português. Para ativar o português, como o padrão, basta escolher na opção Default o nosso idioma e em seguida clicar no botão Save Configuration
Nesse momento o site estará em português. Você pode ainda desabilitar o idioma inglês, se desejar, desmarcando a caixa Ativado.
Esses são dois modos de se ter o Drupal em português do Brasil. Existe, pelo menos, mais um modo de se instalar a tradução que não abordamos aqui mas que é semelhante ao primeiro com elementos do segundo.
Deixo claro que a tradução aqui feita é apenas da interface, e não de conteúdo.
Fique à vontade para deixar comentários com sua experiência, dúvida, sugestão ou crítica.
Hoje em dia, com a popularização de blogs, é muito comum que queiramos algo mais personalizado e, às vezes, esquecemos de um pequeno detalhe que, para alguns, faz toda a diferença: o nome da pessoa que enviou o post.
No Drupal, quando enviamos um post, o que aparece é o nome do usuário e não o nome da pessoa. Isso é facilmente resolvido com o módulo Profile (presente no core do Drupal), e uma pequena personalização.
Irei mostrar como personalizar o nome de usuário, autor de um post no site. O tutorial vai mostrar como personalizar somente o nome de usuários logados, deixando os anônimos e não registrados na sua forma padrão.
Antes

Depois

Esse tutorial não cobre a instalação e configuração do Drupal além daquilo que iremos usar. Para isso você encontra outros tutoriais aqui no Drupal Brasil.
Também vou assumir que você está com o Drupal em Português. Assim, só estará em inglês aquilo que não consta na tradução feita pela equipe do Drupal Brasil.
Para realização desse tutorial com o mesmo resultado mostrado teremos alguns requisitos:
Esse tutorial pode não funcionar com versões anteriores do Drupal, desses módulos e/ou temas.
O tema Framework foi usado apenas para podermos trabalhar sem mexer nos tema core. Se você tem um tema seu, ou se quiser usar um dos temas padrão, o procedimento será o mesmo.
A primeira coisa que devemos fazer é habilitar o módulo Profile e o tema Framework.
Para habilitar o módulo Profile acesse: Administrar > Construção do site > Módulos. Em seguida marque a caixa referente ao módulo Profile e clique no botão Salvar configurações.
O tema que usaremos não vem com o Drupal por padrão, então antes temos que baixá-lo. Para isso baixe a última versão disponível em http://drupal.org/project/framework
Após baixar o tema, descompacte-o na pasta sites/all/themes (a pasta themes não existe por padrão, então crie-a). Esse é o local padrão e recomendado para depositar temas. Para saber mais leia esse artigo que escrevi há algum tempo.
Em seguida, para habilitar o tema Framework, acesse: Administrar > Construção do site > Temas. Em seguida marque a caixa referente ao tema Framework e selecione o radio button ao lado, para deixar esse tema como o padrão.
Ressalto, novamente, que a habilitação do tema Framework é opcional e, caso você já possua um tema que deseja aplicar as mudanças, ela pode ser ignorada.
Agora que temos os requisitos instalados, vamos criar o campo que será usado para guardar o nome real do usuário.
O módulo Profile é um dos módulos que vêm com o Drupal no seu pacote básico. Ele é usado para ampliar a quantidade de campos no perfil do usuário (daí o seu nome). Nós o habilitamos por esse motivo (queremos guardar o nome real do usuário) e agora precisamos configurá-lo.
Agora acesse Administrar > Gerenciamento de usuários > Perfis. Aqui podemos adicionar quantos campos quisermos ao perfil dos nossos usuários. Esses campos podem ser de vários tipos: caixa de texto, seleção em lista, lista livre etc. Aqui não iremos discutir cada um desses itens, ficando esse assunto para um outro tutorial. No momento vamos adicionar apenas um campo do tipo campo de texto de uma linha clicando na opção com esse mesmo nome.
Ao solicitarmos a adição de um novo campo de texto, temos algumas informações a prencher. Abaixo segue uma descrição breve de cada uma:
Salve esse campo e teremos terminado com a configuração do módulo Perfil.
Agora iremos preencher o campo que criamos para o nosso usuário.
Para isso acesse Minha conta e escolha a opção Editar.
Você deve perceber que existe agora uma nova aba, logo abaixo das abas Ver e Editar, chamada Pessoal. Essa é a aba que mencionei no passo anterior e que, na verdade, e a categoria dos campos que adicionamos ao nosso formulário (no nosso caso apenas Nome Completo).
Clique na aba Pessoal, e em seguida digite seu nome completo no campo referido. Em seguida, salve o seu cadastro.
Se você clicar na aba Ver você poderá notar que agora é exibido o seu nome completo na ficha cadastral. Esse é um grande recurso presente no Drupal e que muitos CMS modernos ainda não implementaram.
Se você já tiver algum post no seu site, verá que nada mudou. Isso porque ainda precisamos personalizar o tema.
Agora vamos para a personalização em si.
O Drupal é construído sob uma plataforma bastante flexível e extensível. Uma das possibilidades dessa flexibilidade é que personalizemos algumas áreas pré-definidas pelo desenvolvedor. É isso o que ocorre com o nome de usuário, e é fazendo uso desse recurso que iremos personalizá-lo.
Essa personalização envolve vários conceitos relacionados a temas, mas iremos nos ater essencialmente a aquilo que é necessário para a personalização. Para saber mais sobre personalização e temas recomendo o outro artigo que escrevi sobre esse assunto.
A primeira coisa que devemos fazer é abrir, para edição, o arquivo template.php localizado na pasta do tema Framework (sites/all/themes/framework). Esse arquivo, quando presente em um tema e com o conteúdo apropriado, permite que alguns pontos do Drupal possam ser personalizados. Você verá que ele já possui conteúdo, mas iremos até o final do arquivo para adicionar, depois de tudo, o código abaixo:
Esse código irá fazer com que, se preenchido, o campo que criamos substitua o nome de usuário.
Agora perceba o nome da função phptemplate_username(). Essa função faz uso do recurso do Drupal que mencionei acima. Ela é uma "reimplementação" da função original que se chama theme_username() que está no arquivo includes/theme.inc e na versão 6.6 do Drupal é implementada à partir da linha 1559.
Ao criar a função no arquivo template.php trocando o theme por phptemplate fazemos com que a nossa função sobrescreva a original.
Esse é apenas um recurso do Drupal no que se refere a personalização. Iremos falar disso em um futuro artigo.
A personalização que fizemos está na linha 8 e apenas trocamos o campo a ser exibido. Perceba que o nome do campo a ser impresso tem que ser, necessariamente, profile_nome pois foi esse o nome de campo que usamos na hora de criar o campo com o módulo Profile.
Vimos como personalizar, com relativa facilidade um campo no Dupal (apesar de longo o tutorial, o processo é muito pequeno). Essa é apenas uma forma de fazer isso e, na minha opinião, a mais limpa e simples.
Uma outra forma de se fazer isso seria mexer no arquivo node.tpl.php.
Um outro modo que pode ser mais prático é utilizar o módulo Real Name que faz, em linhas gerais, o que fizemos agora, mas sem a necessidade de mexer no tema e com a personalização de um campo qualquer.
Em um lugar específico do site, precisei implementar o módulo BLOG para que os usuários pudessem interagir melhor no portal que estou desenvolvendo. O drupal tem esse módulo pré-instalado, mas os usuários passaram a se queixar que não queriam ser o www.seu-site.com/blog/1, e sim, o www.seu-site.com/blogs/fulano ou www.seu-site.com/blogs/beltrano.
E agora, como resolver esse impasse?
Eu poderia renomear manualmente no "URL aliases", mas o processo seria penoso. Teria que encontrar uma solução automatizada. Pesquisei no fórum do drupal-br [ http://drupal-br.org/suporte/modulos/urls-de-blogs ], peguei umas dicas com a comunidade e adaptei à minha necessidade, que descrevo a seguir:
Baixe o módulo pathauto para seu-drupal/modules/
# wget http://ftp.drupal.org/files/projects/pathauto-5.x-2.2.tar.gz
Descompacte
# tar zxvf pathauto-5.x-2.2.tar.gz
Habilite o módulo em admin/build/modules. Ele funciona com o módulo Path, pré-instalado, que tem que estar - também - habilitado.
Agora o pulo do gato.
No meu caso, eu precisava renomear os blog/1, blog/2... para blogs/fulano e blogs/beltrano e os nodes (conteúdos) referentes às publicações em BLOG, de seu-site.com/node/1 para seu-site.com/content/testando-o-blog e assim por diante.
Assim que configurei globalmente, o pathauto renomeou todos meus nodes, inclusive de outros tipos de conteúdo, como páginas de livro, enquete e fóruns, mas eu só precisava que ele fizesse isso com os nodes do módulo blog.
Em admin/settings/pathauto, configurei assim:
- Configurações gerais
Em "Update action", ativei o "Create a new alias. Leave the existing alias functioning." para renomear os nodes existentes, preservando os endereços antigos (node/1, node/2...).
Em "Reduce strings to letters and numbers from ASCII-96", marque; evita bagunçar o o endereço do post com caracteres estranhos quando você escreve com acentos no título da publicação.
- Blog path settings
Marque a opção "Bulk generate aliases for blogs that are not aliased" para renomear os blogs já existentes que ainda não foram renomeados. Os futuros blogs serão renomeados automaticamente assim que o usuário criar uma conta.
- Node path settings
Em "Default path pattern", recorte o código content/[title-raw] e cole em "Pattern for all Blog paths". Note que o primeiro tem que ficar em branco e o segundo tem que assumir o código do primeiro.
Aqui funcionou. e aí?

Tenho visto que muita gente tem preferido instalar o drupal pelo proprio gerenciador de pacotes do Ubuntu ou Debian e tem tido alguma dificuldade na hora de colocar o site no servidor de produção.
Após este tutorial você vai ver como é simples.
1) Exporte o banco de dados da instalação do drupal. No Ubuntu, geralmente é usado o banco de dados drupal5. Para descobrir qual esta sendo usado, abra o arquivo /etc/drupal/5/sites/default/dbconfig.php.
2) Importe no banco de dados do seu servidor de produção.
3) Baixe do site do drupal a MESMA VERSÃO do drupal que você instalou na sua máquina. Caso você não saiba qual a versão, com o comando $ apt-cache show drupal5 | grep Version você vai ver.
4) Descompacte o arquivo.
5) Faça o upload dos arquivos do drupal e os módulos extras para o servidor de produção.
6) Edite o arquivo settings.php, que se encontra em sites/default/settings.php, alterando a variavel $db_url com as informações do banco de dados do seu servidor de produção.
7) ACESSE O SITE.
Possíveis Problemas
* Os módulos extras que eu instalei não estão habilitados. Acesse admin/build/modules e habilite novamente.
Teóricamente deve funcionar... mas caso tenha algum problema, me avisa que eu altero este tutorial.
Acho que é só isso...
Flw!
Instalei o drupal num servidor de um cliente e deu o seguinte erro:
Ganhei uns cabelos brancos até ver que é bem fácil resolver esse impasse. Basta criar o arquivo php.ini dentro da pasta do drupal com o seguinte código:
register_globals = Off
Outras possíveis soluções para este problema neste tópico no fórum de suporte.
A biblioteca de códigos tem como objetivo agregar definições de Views, CCK, Imagecache, Panels, e qualquer outro módulo que permita exportação de definições, além de trechos de código PHP e JQuery.
O objetivo é facilitar e agilizar o desenvolvimento, além de sanar dúvidas, a partir do compartilhamento de informações.
Trechos de código em PHP precisam necessáriamente estar em um arquivo de tema (normalmente .tpl.php ou no template.php), ou em um módulo próprio, ou mesmo dentro de um node, desde que se ative o módulo PHP Filter, que está presente no core.
Códigos PHP precisam estar dentro da marcação <?php ?> para funcionar.
Normalmente, quando se cria um menu no Drupal ele também tem a possibilidade de ser exibido como um bloco. Porém, os itens deste menu não possuem ID's únicos, o que limita algumas possibilidades de formatação ou de manipulação através de javascript.
O código abaixo deve ser colocado no template.php do seu tema, e resolve este problema. Recomenda-se que você limpe o cache após implementá-lo.
Observe que dependendo do starter theme que você utilizar, talvez esta função nem seja necessária...
Não é necessário incluir as tags PHP no código abaixo.
Recomenda-se que você ative o módulo PHP Filter e coloque o código abaixo em um bloco, assim você pode colocar o formulário de contato em qualquer lugar da página.
Não foi testado, mas deve funcionar se for colocado em um tema também.
Da forma que está escrito, só funciona em Drupal 6.
Views é um módulo que fornece um método flexível para construtores de site controlarem como listagens e tabelas de conteúdo serão exibidas. Mais informações na página do projeto.
Esta página de livro agrega vários tipos de views exportadas.
Esta Views cria uma tabela de listagem de nodes para gerenciamento simples de conteúdo. é ideal para sites pequenos que não possuem muito conteúdo e que você não deseja dar acesso administrativo para o gerenciamento de nodes.
O código abaixo é para sites que não utilizam comentários:
Se o seu site possuir comentários (tiver o módulo comments ativado), você deve utilizar esta versão ligeiramente alterada, que permite gerenciar os comentários também:
Observação: é provavel que após a importação da views você precise configurar o filtro node:tipo da mesma, selecionando os nodes que devem aparecer no filtro.
Fornece uma views para criação de um blog completo, com listagem de posts e os seguintes recursos:
Dependências: módulo comment e módulo statistics, ambos do core. é necessário criar um tipo de conteúdo identificado como blog, ou se for o caso, alterar a views.
o caminho padrão do blog está configurado para /blog. recomenda-se que seja criado um tipo de conteúdo identificado como blog.
Se você estiver utilizando pathauto, recomenda-se que seja configurado o path dos nodes como "blog/[title-raw]".
Recomenda-se que seja criado um vocabulário chamado "marcadores" e que ele seja associado aos nodes do tipo blog. e que este vocabulário seja de marcação livre. Se você estiver usando pathauto, recomenda-se que path seja definido como "blog/categorias/[vocab-raw]/[catpath-raw]".
$view = new view;
$view->name = 'blog';
$view->description = '';
$view->tag = '';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('fields', array(
'title' => array(
'label' => '',
'alter' => array(
'alter_text' => 0,
'text' => '',
'make_link' => 0,
'path' => '',
'link_class' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'target' => '',
'help' => '',
'trim' => 1,
'max_length' => '50',
'word_boundary' => 1,
'ellipsis' => 1,
'strip_tags' => 0,
'html' => 0,
),
'empty' => '',
'hide_empty' => 1,
'empty_zero' => 0,
'link_to_node' => 1,
'exclude' => 0,
'id' => 'title',
'table' => 'node',
'field' => 'title',
'override' => array(
'button' => 'Override',
),
'relationship' => 'none',
),
));
$handler->override_option('sorts', array(
'created' => array(
'order' => 'DESC',
'granularity' => 'second',
'id' => 'created',
'table' => 'node',
'field' => 'created',
'relationship' => 'none',
),
));
$handler->override_option('arguments', array(
'name' => array(
'default_action' => 'ignore',
'style_plugin' => 'default_summary',
'style_options' => array(),
'wildcard' => 'all',
'wildcard_substitution' => 'Tudo',
'title' => '',
'breadcrumb' => '',
'default_argument_type' => 'fixed',
'default_argument' => '',
'validate_type' => 'none',
'validate_fail' => 'not found',
'glossary' => 0,
'limit' => '0',
'case' => 'none',
'path_case' => 'lower',
'transform_dash' => 1,
'add_table' => 0,
'require_value' => 0,
'id' => 'name',
'table' => 'term_data',
'field' => 'name',
'validate_user_argument_type' => 'uid',
'validate_user_roles' => array(
'2' => 0,
'3' => 0,
),
'relationship' => 'none',
'default_options_div_prefix' => '',
'default_argument_user' => 0,
'default_argument_fixed' => '',
'default_argument_php' => '',
'validate_argument_node_type' => array(
'blog' => 0,
'page' => 0,
),
'validate_argument_node_access' => 0,
'validate_argument_nid_type' => 'nid',
'validate_argument_vocabulary' => array(
'1' => 0,
),
'validate_argument_type' => 'tid',
'validate_argument_transform' => 0,
'validate_user_restrict_roles' => 0,
'validate_argument_php' => '',
),
'created_year_month' => array(
'default_action' => 'ignore',
'style_plugin' => 'default_summary',
'style_options' => array(),
'wildcard' => 'all',
'wildcard_substitution' => 'Tudo',
'title' => '',
'breadcrumb' => '',
'default_argument_type' => 'fixed',
'default_argument' => '',
'validate_type' => 'none',
'validate_fail' => 'not found',
'id' => 'created_year_month',
'table' => 'node',
'field' => 'created_year_month',
'validate_user_argument_type' => 'uid',
'validate_user_roles' => array(
'2' => 0,
'3' => 0,
),
'relationship' => 'none',
'default_options_div_prefix' => '',
'default_argument_user' => 0,
'default_argument_fixed' => '',
'default_argument_php' => '',
'validate_argument_node_type' => array(
'blog' => 0,
'page' => 0,
),
'validate_argument_node_access' => 0,
'validate_argument_nid_type' => 'nid',
'validate_argument_vocabulary' => array(
'1' => 0,
),
'validate_argument_type' => 'tid',
'validate_argument_transform' => 0,
'validate_user_restrict_roles' => 0,
'validate_argument_php' => '',
),
));
$handler->override_option('filters', array(
'status' => array(
'operator' => '=',
'value' => '1',
'group' => '0',
'exposed' => FALSE,
'expose' => array(
'operator' => FALSE,
'label' => '',
),
'id' => 'status',
'table' => 'node',
'field' => 'status',
'relationship' => 'none',
),
'type' => array(
'operator' => 'in',
'value' => array(
'blog' => 'blog',
),
'group' => '0',
'exposed' => FALSE,
'expose' => array(
'operator' => FALSE,
'label' => '',
),
'id' => 'type',
'table' => 'node',
'field' => 'type',
'relationship' => 'none',
),
));
$handler->override_option('access', array(
'type' => 'none',
));
$handler->override_option('cache', array(
'type' => 'none',
));
$handler->override_option('empty', 'Desculpe, mas atualmente não existe nenhum post de blog publicado.');
$handler->override_option('empty_format', '1');
$handler->override_option('use_pager', '1');
$handler->override_option('row_plugin', 'node');
$handler->override_option('row_options', array(
'relationship' => 'none',
'build_mode' => 'teaser',
'links' => 1,
'comments' => 0,
));
$handler = $view->new_display('page', 'Página - Principal', 'page_1');
$handler->override_option('path', 'blog');
$handler->override_option('menu', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
'name' => 'navigation',
));
$handler->override_option('tab_options', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
));
$handler = $view->new_display('feed', 'Feed principal', 'feed_1');
$handler->override_option('title', 'Blog do Zé - RSS');
$handler->override_option('style_plugin', 'rss');
$handler->override_option('style_options', array(
'mission_description' => FALSE,
'description' => '',
));
$handler->override_option('row_plugin', 'node_rss');
$handler->override_option('row_options', array(
'relationship' => 'none',
'item_length' => 'default',
));
$handler->override_option('path', 'blog/feed');
$handler->override_option('menu', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
'name' => 'navigation',
));
$handler->override_option('tab_options', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
));
$handler->override_option('displays', array(
'page_1' => 'page_1',
'default' => 0,
'block_1' => 0,
'page_2' => 0,
));
$handler->override_option('sitename_title', 0);
$handler = $view->new_display('block', 'Bloco marcadores', 'block_1');
$handler->override_option('arguments', array(
'name' => array(
'default_action' => 'summary asc',
'style_plugin' => 'default_summary',
'style_options' => array(
'count' => 1,
'override' => 0,
'items_per_page' => '25',
),
'wildcard' => 'all',
'wildcard_substitution' => 'Tudo',
'title' => '',
'breadcrumb' => '',
'default_argument_type' => 'fixed',
'default_argument' => '',
'validate_type' => 'none',
'validate_fail' => 'summary asc',
'glossary' => 0,
'limit' => '0',
'case' => 'none',
'path_case' => 'lower',
'transform_dash' => 1,
'add_table' => 0,
'require_value' => 0,
'id' => 'name',
'table' => 'term_data',
'field' => 'name',
'validate_user_argument_type' => 'uid',
'validate_user_roles' => array(
'2' => 0,
'3' => 0,
),
'relationship' => 'none',
'default_options_div_prefix' => '',
'default_argument_user' => 0,
'default_argument_fixed' => '',
'default_argument_php' => '',
'validate_argument_node_type' => array(
'blog' => 0,
'page' => 0,
),
'validate_argument_node_access' => 0,
'validate_argument_nid_type' => 'nid',
'validate_argument_vocabulary' => array(
'1' => 0,
),
'validate_argument_type' => 'tid',
'validate_argument_transform' => 0,
'validate_user_restrict_roles' => 0,
'validate_argument_php' => '',
'override' => array(
'button' => 'Use default',
),
),
));
$handler->override_option('title', 'Marcadores');
$handler->override_option('items_per_page', 20);
$handler->override_option('use_more', 1);
$handler->override_option('use_more_text', 'mais');
$handler->override_option('link_display', 'page_2');
$handler->override_option('block_description', '');
$handler->override_option('block_caching', -1);
$handler = $view->new_display('page', 'Página marcadores', 'page_2');
$handler->override_option('arguments', array(
'name' => array(
'default_action' => 'summary asc',
'style_plugin' => 'default_summary',
'style_options' => array(),
'wildcard' => 'all',
'wildcard_substitution' => 'Tudo',
'title' => '',
'breadcrumb' => '',
'default_argument_type' => 'fixed',
'default_argument' => '',
'validate_type' => 'none',
'validate_fail' => 'summary asc',
'glossary' => 0,
'limit' => '0',
'case' => 'none',
'path_case' => 'lower',
'transform_dash' => 1,
'add_table' => 0,
'require_value' => 0,
'id' => 'name',
'table' => 'term_data',
'field' => 'name',
'validate_user_argument_type' => 'uid',
'validate_user_roles' => array(
'2' => 0,
'3' => 0,
),
'relationship' => 'none',
'default_options_div_prefix' => '',
'default_argument_user' => 0,
'default_argument_fixed' => '',
'default_argument_php' => '',
'validate_argument_node_type' => array(
'blog' => 0,
'page' => 0,
),
'validate_argument_node_access' => 0,
'validate_argument_nid_type' => 'nid',
'validate_argument_vocabulary' => array(
'1' => 0,
),
'validate_argument_type' => 'tid',
'validate_argument_transform' => 0,
'validate_user_restrict_roles' => 0,
'validate_argument_php' => '',
'override' => array(
'button' => 'Use default',
),
),
));
$handler->override_option('title', 'Marcadores');
$handler->override_option('items_per_page', 0);
$handler->override_option('use_pager', '0');
$handler->override_option('path', 'blog/categorias/marcadores');
$handler->override_option('menu', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
'name' => 'navigation',
));
$handler->override_option('tab_options', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
));
$handler = $view->new_display('feed', 'Feed marcadores', 'feed_2');
$handler->override_option('arguments', array(
'name' => array(
'default_action' => 'ignore',
'style_plugin' => 'default_summary',
'style_options' => array(),
'wildcard' => 'all',
'wildcard_substitution' => 'Tudo',
'title' => '',
'breadcrumb' => '',
'default_argument_type' => 'fixed',
'default_argument' => '',
'validate_type' => 'none',
'validate_fail' => 'not found',
'glossary' => 0,
'limit' => '0',
'case' => 'none',
'path_case' => 'lower',
'transform_dash' => 1,
'add_table' => 0,
'require_value' => 0,
'id' => 'name',
'table' => 'term_data',
'field' => 'name',
'validate_user_argument_type' => 'uid',
'validate_user_roles' => array(
'2' => 0,
'3' => 0,
),
'relationship' => 'none',
'default_options_div_prefix' => '',
'default_argument_user' => 0,
'default_argument_fixed' => '',
'default_argument_php' => '',
'validate_argument_node_type' => array(
'blog' => 0,
'page' => 0,
),
'validate_argument_node_access' => 0,
'validate_argument_nid_type' => 'nid',
'validate_argument_vocabulary' => array(
'1' => 0,
),
'validate_argument_type' => 'tid',
'validate_argument_transform' => 0,
'validate_user_restrict_roles' => 0,
'validate_argument_php' => '',
),
));
$handler->override_option('title', 'Blog do Zé - Marcadores');
$handler->override_option('link_display', 'page_2');
$handler->override_option('style_plugin', 'rss');
$handler->override_option('style_options', array(
'mission_description' => FALSE,
'description' => '',
));
$handler->override_option('row_plugin', 'node_rss');
$handler->override_option('row_options', array(
'relationship' => 'none',
'item_length' => 'default',
));
$handler->override_option('path', 'blog/categorias/marcadores/feed');
$handler->override_option('menu', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
'name' => 'navigation',
));
$handler->override_option('tab_options', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
));
$handler->override_option('displays', array(
'page_2' => 'page_2',
'default' => 0,
'page_1' => 0,
'block_1' => 0,
));
$handler->override_option('sitename_title', 0);
$handler = $view->new_display('block', 'Bloco arquivo mensal', 'block_2');
$handler->override_option('arguments', array(
'created_year_month' => array(
'default_action' => 'summary asc',
'style_plugin' => 'default_summary',
'style_options' => array(
'count' => 1,
'override' => 0,
'items_per_page' => '25',
),
'wildcard' => 'all',
'wildcard_substitution' => 'Tudo',
'title' => '',
'breadcrumb' => '',
'default_argument_type' => 'fixed',
'default_argum