Back-End

9 nov, 2009

Como Criar um Tema Para Drupal 6 – Parte 03

Publicidade

Dando continuidade à série, falaremos sobre função preprocess, módulo Devel e tradução das variáveis na documentação dos arquivos .tlp dos módulos.

Criando uma função preprocess para nosso arquivo node-page-NID.tpl.php

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 destina 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:

template_preprocess_hook

Em futuros tutoriais pretendo me aprofundar 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:

function tutorial_preprocess_node(&$vars){
$node = $vars['node'];
$vars['template_files'][] = 'node-' . $vars['type'] . '-'. $node->nid;  
return$vars;
}

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 alterá-lo no tema “tutorial“; passamos a variável “$vars” por referência a fim de acessarmos as informações declaradas nela externamente. Foi criada uma variável $node a partir de $var[‘node’] para podermos acessar o id do node que vamos trabalhar.

Na linha:

$vars['template_files'][] = 'node-' . $vars['type'] . '-'. $node->nid;  

é 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 aí, altere o nome do arquivo de acordo:

[node-page-8.tpl.php]

<h1><?phpprint$title?> no Page isolado para o NID</h1>
<div id="node-<?phpprint$node->nid; ?>"
class="node<?phpif($sticky){print' sticky'; }?>
<?phpif(!$status){print' node-unpublished'; }?>">
<div class="content clear-block">
<?phpprint$content?>
</div>
</div>

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.

Módulo Devel

O módulo Devel
é uma boa alternativa para inspecionar 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 página atual e oferecendo sugestões para funções de
pré-processamento e templates alternativos.

Veja a imagem abaixo:

Fonte: http://drupal.org/project/devel

Bônus – tradução das variáveis na documentação dos arquivos .tlp dos módulos

modules/aggregator/aggregator-feed-source.tpl.php

$source_icon
Ícone do Feed com o link para a fonte. Exibido por theme_feed_icon().
$source_image
Imagem definida pela fonte do feed.
$source_description
Descrição definida pela fonte do feed.
$source_url
URL para a fonte do feed.
$last_checked
Quanto tempo atrás o feed foi verificado localmente.

modules/aggregator/aggregator-item.tpl.php

$feed_url
URL para feed de origem.
$feed_title
O Título do item do feed.
$source_url
Link para a seção da fonte local.
$source_title
Título da fonte remota.
$source_date
Data na qual o feed foi postado na fonte remota.
$content
Conteúdo do item do feed.
$categories
Categorias com os links atribuídos ao feed.

modules/aggregator/aggregator-summary-item.tpl.php

$feed_url
Link para o feed de origem.
$feed_title
Título do feed.
$feed_age
Idade do feed remoto.
$source_url
Link para a fonte remota.
$source_title
Title definido localmente para a fonte.

modules/aggregator/aggregator-summary-items.tpl.php

$title
Título para o feed ou categoria.
$summary_list
Lista desordenada de itens com links dos itens do feed gerados por theme_item_list().
$source_url
URL para a fonte local ou categoria.

modules/aggregator/aggregator-wrapper.tpl.php

$content
Todo o conteúdo de aggregator.
$page
Links do Pager exibidos por theme_pager().

modules/block/block-admin-display-form.tpl.php

$block_regions
Um array de regions. Organizados por nomes com o título como valor.
$block_listing
Um array de blocks organizados por região e em seguida por delta.
$form_submit
Botão submit do formulário..
$throttle
TRUE ou FALSE dependendo se o módulo throttle esteja ativado.

Cada $data em $block_listing[$region] contém:

$data->region_title
Título da região para o bloco listado.
$data->block_title
Título do bloco.
$data->region_select
Menu dropdown para atribuir uma região.
$data->weight_select
Menu dropdown para definir os weights.
$data->throttle_check
Checkbox para habilitar throttling.
$data->configure_link
Link de configuração do bloco.
$data->delete_link
Link para excluir blocos adicionados por usuário.

modules/book/book-all-books-block.tpl.php

$book_menus
Array com as estruturas do livro exibidos como uma lista desordenada. Organizado pelo ID do book que também é o ID do node pai.

modules/book/book-export-html.tpl.php

$title
Título mais importante do node.
$head
Tags do cabeçalho.
$language
O código do idioma, por exemplo, “en” para inglês.
$language_rtl
TRUE ou FALSE dependendo de scripts com idiomas da direita para a esquerda(rtl -right to left).
$base_url
URL para a página inicial do site.
$content
Nodes dentro da estrutura atual exibidos por book-node-export-html.tpl.php.

modules/book/book-navigation.tpl.php

$tree
O filho mais próximo do node atual exibido como uma lista desordenada.
$current_depth
Intensidade do node atual dentro da estrutura do livro. Fornecido para contexto.
$prev_url
URL para o node anterior.
$prev_title
Título para o node anterior.
$parent_url
URL para o node pai.
$parent_title
Título do node pai. Não imprimido por padrão. Fornecido como uma opção.
$next_url
URL para o próximo node.
$next_title
Título do próximo node.
$has_links
Sinaliza TRUE quando os dados “anterior”, “pai” ou “próximo” possuem um valor.
$book_id
O ID do livro da estrutura atual que está sendo visualizada. O
mesmo que o ID do node contendo a estrutura inteira. Fornecido para
contexto.
$book_url
O URL do livro/node da estrutura atual sendo visualizada. Fornecido como uma opção. Não utilizado por padrão.
$book_title
O título do livro/node da estrutura atual sendo visualizada. Fornecido como uma opção não utilizada por padrão.

modules/book/book-node-export-html.tpl.php

$depth
Intensidade do node atual dentro da estrutura.
$title
Título do node.
$content
Conteúdo do node.
$children
Todos os nós filhos recursivamente exibidos por este arquivo.

modules/commnet/comment-folded.tpl.php

$title
Um título com link para o comentário completo.
$new
Marcador para novo comentário.
$author
Autor do comentário. Pode ser link ou texto puro.
$date
Data e hora de postagem.
$comment
Objeto do comentário completo.

modules/commnet/comment-wrapper.tpl.php

$content
Todos os comentários para uma página em específico. Também contém controles de seleção.

modules/commnet/comment.tpl.php

$author
Autor do comentário. Pode ser um link ou texto puro.
$content
Corpo do post.
$date
Data e hora da postagem.
$links
Vários links operacionais.
$new
Marcador para novo comentário.
$picture
Imagem do autor.
$signature
Assinatura do autor.
$status
Status do comentário. São possíveis valores: comment-unpublished, comment-published ou comment-preview.
$submitted
Em linha com data e horário.
$title
Título com link.

modules/forum/forum-icon.tpl.php

$new_posts
Indica se o tópico contém ou não novos posts.
$icon
O ícone para exibição. Pode ser um dos ‘hot’, ‘hot-new’, ‘new’, ‘default’, ‘closed’, ou ‘sticky’.

modules/forum/forum-list.tpl.php

$forums
Um array de fóruns e categorias a serem exibidos. Este é organizado pelos ids númericos de todos os fóruns e categorias filhos.
$forum_id
Id do fórum para o forum atual. É o pai para todos os items dentro do array $forum.

Cada $forum em $forum contém:

$forum->is_container
É TRUE se o fórum pode conter outros fóruns. É FALSE se o fórum pode conter somente tópicos.
$forum->depth
Qual a intensidade que o fórum possui na hierarquia atual.
$forum->zebra
string ‘even’ our ‘odd’ utilizada para a classe da linha.
$forum->name
O nome do fórum.
$forum->link
O URL para o link deste fórum.
$forum->description
A descrição deste fórum.
$forum->new_topics
TRUE se o forum contém posts não lidos.
$forum->new_url
Um URL para os post não lidos do fórum.
$forum->new_text
Texto para o URL acima na qual informa quantos são os novos posts.
$forum->old_topics
Uma contagem de posts que já foram lidos.
$forum->num_posts
O número total de posts no fórum.
$forum->last_reply
Texto representando a últma vez que um fórum foi postado ou comentado.

modules/forum/forum-submitted.tpl.php

$author
O autor do post.
$time
Quanto tempo atrás o post foi criado.
$topic
Um objeto contendo dados crus (não filtrados) do post. Inseguro, se assegure de limpar este dado antes de imprimi-lo.

modules/forum/forum-topic-list.tpl.php

$header
O cabeçalho da tabela. Este é pré-gerado com informação na ordem de clicks. Caso você precise modificar isto, veja template_preprocess_forum_topic_list().
$pager
O pager para exibir debaixo da tabela.
$topics
Um array de tópicos a serem exibidos.
$topic_id
Id numérico para o tópico do fórum atual.

Cada $topic em $topic contém:

$topic->icon
O ícone para exibir.
$topic->moved
Um sinal para indicar se o tópico foi movido para um outro fórum.
$topic->title
O título do tópico. Seguro para exibição.
$topic->message
Se o tópico foi movido, este contém uma explicação e um link.
$topic->zebra
String ‘even’ ou ‘odd’ string para a classe da linha.
$topic->num_comments
O número de respostas neste tópico.
$topic->new_replies
Um sinal para indicar se existem comentários não lidos.
$topic->new_url
Se existem respostas não lidas, este é o link para elas.
$topic->new_text
O text contendo a contagem traduzida devidamente pluralizada.
$topic->created
Uma string imprimível representando quando um novo tópico é postado.
$topic->last_reply
Uma string imprimível representando quando um tópico foi respondido pela última vez.
$topic->timestamp
O timestamp cru de quando este tópico foi postado.

modules/forum/forum-topic-navigation.tpl.php

$prev
O ID do node do post anterior.
$prev_url
O URL do post anterior.
$prev_title
O título do post anterior.
$next
O ID do node do próximo post.
$next_url
O URL para o próximo post.
$next_title
O título do próximo post.
$node
O node cru que está sendo exibido atualmente. Contém dados
inseguros e qualquer dado dentro deste deve ser filtrado antes de
apresentado.

modules/forum/forums.tpl.php

$links
Um array de links que permitem ao usuário postar novos tópicos do
fórum. Pode também conter uma string informando um usuário que ele deve
logar para que possa postar.
$forums
Os fóruns para exibir (como processados por forum-list.tpl.php).
$topics
Os tópicos para exibir (como processados por forum-topic-list.tpl.php)
$forums_defined
Um sinal indicando que os fóruns estão configurados.

modules/node/node.tpl.php

$title
O título (sanitarizado, filtrado) do nó.
$content
Corpo do node ou teaser dependento do sinalidador(flag) $teaser.
$picture
A imagem do autor do saída do node a partir de theme_user_picture().
$date
Data de criação formatada (utiliza $created para reformatar com format_date()).
$links
Links com tema como “Read more”, “Add new comment”, etc. criados por theme_links().
$name
Username com tema do node a partir de theme_user().
$node_url
URL direto para o nó atual.
$terms
A lista com tema para os links dos termos de taxonomia criados por theme_links().
$submitted
A informação de envio com tema criado por theme_node_submitted().

Outras variáveis:

$node
Objeto node completo. Contém dados que podem não ser seguros.
$type
Tipo do node, ou seja, story, page, blog, etc.
$comment_count
Número de comentários ligados ao node.
$uid
O id do usuário do autor no node.
$created
O horário na qual o node foi publicado formado no timestamp Unix.
$zebra
Imprime tanto “even” ou “odd”. Útil para listragem zebra nas listas do teaser.
$id
Posição do node. Incrementa cada vez que é exibido.

Variáveis de status do node

$teaser
Sinal indicando o estado do teaser.
$page
Sinal para o estado completo da pagina.
$promote
Sinal para a promoção para a página inicial.
$sticky
Sinal para definição de post destacado.
$status
Sinal para status publicado.
$comment
Estado de configurações do comentário para o node.
$readmore
Sinaliza TRUE se o conteúdo do teaser do node não pode conter o conteúdo do corpo principal.
$is_front
Sinaliza TRUE quando exibido na página inicial.
$logged_in
Sinaliza TRUE quando o usuário atual é um membro logado.
$is_admin
Sinaliza TRUE quando o usuário atual é um administrador.

modules/poll/poll-bar-block.tpl.php e

modules/poll/poll-bar.tpl.php

$title
O título da enquete.
$votes
O número de votos para esta opção.
$total_votes
O número total de votos para esta opção.
$percentage
O percentual de votos para esta opção.
$vote
O número escolhido do voto atual do usuário.
$voted
Define TRUE se o usuário votou para esta opção.

modules/poll/poll-results-block.tpl.php e

modules/poll/poll-results.tpl.php

$title
O título da enquete.
$results
O resultado da enquete.
$votes
Os resultados totais na enquete.
$links
Links na enquete.
$nid
O nid da enquete.
$cancel_form
Um formulário para cancelar o voto do usuário, se permitido.
$raw_links
O array cru de links. Deve ser executado por meio de theme(‘links’) se utilizado.
$vote
O número da escolha do voto atual do usuário.

modules/poll/poll-vote.tpl.php

$choice
Os botões radio para as opções na enquete.
$title
O título da enquete.
$block
TRUE se este estiver sendo exibido como um bloco.
$vote
O botão para votar.
$rest
Tudo o mais no formulário que pode ter sido adicionado através dos hooks form_alter.

modules/profile/profile-block.tpl.php

$picture
Imagem configurada para a conta com o link para a página dos usuários.
$profile
Array organizado de todos os campos dos perfis que possuem um valor.

Cada $field em $profile contém:

$field->title
Título do campo do perfil.
$field->value
Valor do campo do perfil.
$field->type
Tipo do campo do perfil, ou seja, checkbox, textfield, textarea, selection, url ou date.

modules/profile/profile-listing.tpl.php

$picture
Imagem configurada para a conta com o link para a página dos usuários.
$name
Nome da conta de usuário com o link para a página dos usuários.
$profile
Array organizado de todos os campos do perfil que estão definidos
como visível na página de lista de membros (configurada pelos
administradores do site). Este também precisa possuir um valor para ser
exibido.

Cadas $field em $profile contém:

$field->title
Título do campo do perfil.
$field->value
Valor do campo do perfil.
$field->type
Tipo do campo do perfil, ou seja, checkbox, textfield, textarea, selection, list, url ou date.

modules/profile/profile-wrapper.tpl.php

$content
Os perfis da conta de usuário interagem por meio de profile-listing.tpl.php.
$current_field
O campo nominado sendo navegado. Fornecido aqui para contexto.

modules/search/search-block-form.tpl.php

$search_form
O formulário de busca completo pronto para impressão.
$search
: Array of keyed search elements. Can be used to print each form
* element separately.

Chaves padrão dentro de $search:

$search[‘search_block_form’]
Text input dentro de um div.
$search[‘submit’]
Botão de envio do formulário.
$search[‘hidden’]
Elementos escondidos do formulário. Utilizados para validar os formulários quando enviados.

modules/search/search-result.tpl.php

$url
URL do resultado.
$title
Título do resultado.
$snippet
Uma pequena prévia dos resultados. Não se aplica às buscas de usuários.
$info
String de todas as informações meta prontas para impressão. Não se aplica às buscas de usuários.
$info_split
Contém o mesmo dado que $info, separados por um array organizado.
$type
O tipo da busca, por exemplo, “node” ou “user”.

Chaves padrão dentro de $info_split:

$info_split[‘type’]
Tipo do node.
$info_split[‘user’]
Autor do node com um link para o perfil dos usuários. Depende da permissão.
$info_split[‘date’]
Última atualização do node. Com pouca formação.
$info_split[‘comment’]
Número de comentários exibidos como “% comments”, sendo “%” a contagem. Depende de comment.module.
$info_split[‘upload’]
Número de arquivos anexados exibidos como “% attachments”, sendo % a contagem. Depende de upload.module.

modules/search/search-results.tpl.php

$search_results
Todos os resultados são exibidos por search-result.tpl.php.
$type
O tipo da busca, por exemplo, “node” ou “user”.

modules/search/search-theme-form.tpl.php

$search_form
O formulário de busca completo pronto para impressão.
$search
Array de elementos da busca organizados. Pode ser utilizado para imprimir cada elemento do formulário separadamente.

Chaves padrão dentro de $search:

$search[‘search_theme_form’]
Text input dentro de um div.
$search[‘submit’]
Botão de envio do formulário.
$search[‘hidden’]
Elementos ocultos do formulário. Utilizado para validar os formulários quando enviados.

modules/system/block.tpl.php

$block->subject
Título do bloco.
$block->content
Conteúdo do bloco.
$block->module
Módulo que gera o bloco.
$block->delta
Este é um id numérico conectado à cada módulo
$block->region
A região do bloco na qual o bloco atual se encaixa.

Variáveis auxiliáres:

$block_zebra
Exibe ‘odd’ e ‘even’ dependente de cada região de bloco.
$zebra
Mesma exibição de $block_zebra mas independente de qualquer região de bloco.
$block_id
Contador depende de cada região de bloco.
$id
Mesma exibição de $block_id mas independente de qualquer região de bloco.
$is_front
Sinaliza TRUE quando apresentado na página inicial.
$logged_in
Sinaliza TRUE quando o usuário atual é um membro logado.
$is_admin
Sinaliza TRUE quando o usuário atual é um administrador.

modules/system/box.tpl.php

$title
Título do box.
$content
Conteúdo do box.

modules/system/maintenance-page.tpl.php

NOTA
Todas as variáveis de page.tpl

modules/system/page.tpl.php

NOTA
Todas as variáveis que você já conhece de page.tpl.php.

modules/user/user-picture.tpl.php

$picture
Imagem definida pelo usuário ou padrão do site. Terá um link
dependendo da permissão para visualizar a página do perfil dos usuários.
$account
Array com informações da conta. Potencialmente inseguro. Assegure-se de utilizar check_plain().

modules/user/user-profile-category.tpl.php

$title
Título da categoria para o grupo de itens.
$profile_items
Todos os itens para o grupo exibidos por user-profile-item.tpl.php.
$attributes
Atributos HTML. Normalmente exibe classes.

modules/user/user-profile-item.tpl.php

$title
Título do campo para o item do perfil.
$value
Valor definido pelo usuário para o item do perfil ou dados de um módulo.
$attributes
Atributos HTML. Normalmente exibe classes.

modules/user/user-profile.tpl.php

$user_profile
Todos os dados do perfil do usuário. Pronto para impressão.
$profile
Array organizado de categorias de perfis e seus itens ou outros dados fornecidos pelos módulos.

Publicado originalmente em Drupal Brasil por Gilberto Albino