Dev (Back & Front)ARTIGO

Como Criar um Tema Para Drupal 6 – Parte 03

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){<br />$node = $vars['node'];<br />$vars['template_files'][] = 'node-' . $vars['type'] . '-'. $node->nid;  <br />return$vars;<br />}

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><?php<a href="http://www.php.net/print" target="_blank" rel="noopener noreferrer">print</a>$title?> no Page isolado para o NID</h1><br />
<div id="node-<?php<a href="http://www.php.net/print" target="_blank" rel="noopener noreferrer">print</a>$node->nid; ?>"<br />
class="node<?phpif($sticky){<a href="http://www.php.net/print" target="_blank" rel="noopener noreferrer">print</a>' sticky'; }?><br /><?phpif(!$status){<a href="http://www.php.net/print" target="_blank" rel="noopener noreferrer">print</a>' node-unpublished'; }?>"><br />
<div class="content clear-block"><br /><?php<a href="http://www.php.net/print" target="_blank" rel="noopener noreferrer">print</a>$content?><br />
</div><br />
</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

é a maior comunidade brasileira de profissionais Drupal, gerando conteúdo de qualidade também para o iMasters. http://drupal-br.org

Ver perfil