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