Leia o artigo anterior:
Como criar um tema para Drupal 6 – Parte 01
*
Hoje 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 artigo 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“.
Alterando o tema para as páginas de administração
No Drupal é possível 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.
Recursos disponíveis na área administrativa
O arquivo “.info” possui como que um “segredinho”. As chaves “features” do arquivo “.info” de um tema para Drupal 6 têm um papel muito importante na área administrativa do Drupal.
Com elas é possível ativar ou desativar o acesso a 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 a 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 por que 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:
features[] = logo
features[] = name
features[] = slogan
features[] = mission
features[] = node_user_picture
features[] = comment_user_picture
features[] = search
features[] = favicon
features[] = primary_links
features[] = secondary_links
Agora comente as linhas:
;features[] = node_user_picture
;features[] = comment_user_picture
;features[] = search
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-versa. Por este motivo não confunda
o fato de estas informações referentes ao tema estarem sendo armazenadas
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.
Criando regiões personalizadas para os blocos
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
administrador 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ê queira 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:
regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer
O que temos aí é simples de entender:
- regions
- É a chave indicando a existência de uma região.
- [nome]
- É especificamente o nome que esta chave possui internamente no Drupal e que será a variável usada para criar o conteúdo no tema.
- = Qualquer nome
- É o nome da chave humanamente acessível. Você pode alterar os nomes padrões também.
Então, para se criar uma nova região, como por exemplo, “publicidade” bastaria fazer o seguinte:
regions[publicidade] = Publicidade
E logo você precisaria inserir as demais regiões padrões para não perder a visualização delas no tema.
regions[publicidade] = Publicidade
regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer
Obrigatoriamente, 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:
<?phpif($publicidade): ?>
<div id="publicidade"><?phpprint$publicidade; ?></div><!-- /publicidade -->
<?phpendif; ?>
O arquivo “page.tpl.php” agora deve estar assim:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Acrescentamos aqui o idioma da pagina e a direção do texto do idioma -->
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="<?phpprint$language->language?>"
lang="<?phpprint$language->language?>" dir="<?phpprint$language->dir?>">
<head>
<!-- Removemos a tag meta contendo o tipo do documento e o charset
-- para inserir estas informações de acordo com as configurações
-- informadas ou obtidas pelo Drupal
-->
<?phpprint$head?>
<!-- Inserimos o título da página que varia dinamicamento -->
<title><?phpprint$head_title?></title>
<!-- Inserimos a importação de folhas de estilos -->
<?phpprint$styles?>
<!-- Carregamos os arquivos javascript necessários -->
<?phpprint$scripts?>
</head>
<!-- Colocamos uma função na tag BODY
-- que irá criar um atributo class na mesma
-- e controlar o valor deste atributo de acordo
-- com as configurações dos Blocks em uso
-- Esta função foi herdada do tema padrão Garlando
-- no arquivo "template.php"
-->
<body<?phpprint phptemplate_body_class($left, $right); ?>>
<!-- Layout -->
<div id="externo">
<div id="cabecalho">
<?php/* Imprime o conteudo definido nos Blocks para o Header (cabeçalho) */?>
<?phpprint$header; ?>
<!-- Herdado do Garland -->
<div id="logotipo">
<?php
// Prepara o cabeçalho criando um array com algumas informações do site
$site_fields = array();
// se o nome do site existe
if($site_name){
/**
* Codifica caracteres especiais num string de texto puro para exibir o nome do site como HTML.
*/
$site_fields[] = check_plain($site_name);
}
if($site_slogan){
/**
* O mesmo que ocorre com o nome do site ocorre com o slogan
*/
$site_fields[] = check_plain($site_slogan);
}
/*
* Une as chaves de $site_fields com espaços para criar o title
*/
$site_title = implode(' ', $site_fields);
/**
* Se todas as informações foram passadas
*/
if($site_fields){
// coloca o nome do site entre tags SPAN
$site_fields[0] = '<span>'. $site_fields[0] .'</span>';
}
/*
* Une as chaves de $site_fields com espaços para criar o HTML
*/
$site_html = implode(' ', $site_fields);
// Testa se $logo ou $site_title possuem valor
if($logo||$site_title){
// Cria um cabeçalho com o um link para a pagina inicial filtrando-o contra protocolos indesejáveis (XSS)
print'<h1><a href="'. check_url($front_page) .'" title="'. $site_title .'">';
// se o logo existir
if($logo){
print'<img src="'. check_url($logo) .'" alt="'. $site_title .'" id="logo" />';
}
// Imprime o HTML com o nome do site final
print$site_html .'</a></h1>';
}
?>
<?php/* Imprime os links primarios se eles existirem */?>
<?phpif(isset($primary_links)) : ?>
<?phpprinttheme('links', $primary_links, array('class' =>'links primary-links'))?>
<?phpendif; ?>
<?php/* Imprime os links secundários se eles existirem */?>
<?phpif(isset($secondary_links)) : ?>
<?phpprinttheme('links', $secondary_links, array('class' =>'links secondary-links'))?>
<?phpendif; ?>
</div>
</div><!-- /cabecalho -->
<?php/* Se existir algum Block a ser exibido na esquerda, então esta coluna será montada com o respectivo conteúdo */?>
<?phpif($left): ?>
<div id="esquerda">
<?php/* Se a caixa de busca estiver ativada e esta coluna exista, ela aparecerá na esquerda */?>
<?phpif($search_box): ?><div class="block block-theme"><?phpprint$search_box?></div><?phpendif; ?>
<?phpprint$left?>
</div><!-- /esquerda -->
<?phpendif; ?>
<?php/* Se existir algum Block a ser exibido na esquerda, então esta coluna será montada com o respectivo conteúdo */?>
<?phpif($right): ?>
<div id="direita">
<?php/* Se a caixa de busca estiver ativada e a coluna esquerda não exista, ela aparecerá na direita */?>
<?phpif(!$left&& $search_box): ?><div class="block block-theme"><?phpprint$search_box?></div><?phpendif; ?>
<?phpprint$right?>
</div><!-- /direita -->
<?phpendif; ?>
<div id="centro">
<?php/* Imprime o breadcrumb do site */?>
<?phpprint$breadcrumb; ?>
<?php/* Imprime a missão do site caso ela exista */?>
<?phpif($mission): print'<div id="mission">'. $mission .'</div>'; endif; ?>
<?php/* Imprime as tabs das páginas que as usem */?>
<?phpif($tabs): print'<div id="tabs-wrapper" class="clear-block">'; endif; ?>
<?php/* Imprime o título do node */?>
<?phpif($title): print'<h2'. ($tabs ? ' class="with-tabs"' : '') .'>'. $title .'</h2>'; endif; ?>
<?phpif($tabs): print'<ul class="tabs primary">'. $tabs .'</ul></div>'; endif; ?>
<?php/* Imprime tabs secundarias */?>
<?phpif($tabs2): print'<ul class="tabs secondary">'. $tabs2 .'</ul>'; endif; ?>
<?php/* Imprime informações relevantes ao usuário */?>
<?phpif($show_messages&& $messages): print$messages; endif; ?>
<?php/* Imprime ajuda caso esteja disponível */?>
<?phpprint$help; ?>
<?php/* Imprime todo o conteúdo especificado no Block Content */?>
<?phpprint$content?>
<?php/* Imprime os feeds da página */?>
<?phpprint$feed_icons?>
</div><!-- /centro -->
<-- NOVA REGIÃO PUBLICIDADE QUE FOI CRIADA -->
<?phpif($publicidade): ?>
<div id="publicidade"><?phpprint$publicidade; ?></div><!-- /publicidade -->
<?phpendif; ?>
<div id="rodape">
<?php/* Imprime a mensagem do rodapé, e os Blocks selecionados como Footer */?>
<?phpprint$footer_message . $footer?>
</div><!-- /rodape -->
</div><!-- /externo -->
<?php/* Marcação final de fechamentos diversos */?>
<?phpprint$closure?>
</body>
</html>
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!
Breadcrumb
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:
- Apagar o bloco correspondente no arquivo “page.tpl.php” onde se encontra a variável-chave $breadcrumb
- Criar uma função que somente exiba o breadcrumb nas páginas administrativas.
Sobrescrevendo as saídas dos temas
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 Estender 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 “ESTENDA” 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:
- Localize o módulo responsável pela marcação HTML.
- Faça um dos seguinte:
- Se o módulo possui um arquivo template (.tpl), copie este template para a pasta de seu tema.
- No núcleo do módulo, identifique a função de pré-processamento (preprocess) que está gerando a marcação que você deseja alterar e copie ela e todo o seu conteúdo para o arquivo “template.php” do novo tema. Você vai precisar alterar o prefixo “theme_” ou “template_” para corresponder com o nome do novo tema. No caso de nosso tema “tutorial“, se quiséssemos sobreescrever as funções “theme_breadcrumb” e “template_preprocess_page“, ficaríamos com “tutorial_breadcrumb” e “tutorial_preprocess_page” em nosso arquivo “template.php“.
- Dentro da função ou arquivo template, modifique o código da marcação HTML para se adaptar à sua necessidade.
- Atualize o cache do tema.
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:
<div class="container-inline">
<img src="http://www.gilbertoalbino.com/tutoriais/img/icon-busca.png" align="absmiddle" />
<?phpprint$search_form; ?>
</div>
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():
functiontheme_breadcrumb($breadcrumb){
if(!empty($breadcrumb)){
return'<div class="breadcrumb">'. implode(' » ', $breadcrumb) .'</div>';
}
}
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 “»”:
return‘<div class=”breadcrumb”>’. implode(‘ » ‘, $breadcrumb) .‘</div>’;
Embora isto seja legal, nós queremos 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:
function tutorial_breadcrumb($breadcrumb){
if(!empty($breadcrumb)){
return'<div class="breadcrumb">'.
implode(' <img src="'
.check_url('http://www.gilbertoalbino.com/tutoriais/img/seta-breadcrumb.png').'" /> ',
$breadcrumb
)
.'</div>';
}
}
Você verá o breadcrumb alterado com imagens no lugar do separador:
Arquivos templates padrões
O Núcleo (Core) do Drupal contém vários módulos que já vêm
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.
- Aggregator
- “modules/aggregator/…”
- aggregator-feed-source.tpl.php
- aggregator-item.tpl.php
- aggregator-summary-item.tpl.php
- aggregator-summary-items.tpl.php
- aggregator-wrapper.tpl.php
- Block
- “modules/system/…”
- block.tpl.php
“modules/block/…”
- block-admin-display-form.tpl.php
- Book
- “modules/book/…”
- book-all-books-block.tpl.php
- book-export-html.tpl.php
- book-navigation.tpl.php
- book-node-export-html.tpl.php
- Comment
- “modules/comment/…”
- comment-folded.tpl.php
- comment-wrapper.tpl.php
- comment.tpl.php
- Forum
- “modules/forum/…”
- forum-icon.tpl.php
- forum-list.tpl.php
- forum-submitted.tpl.php
- forum-topic-list.tpl.php
- forum-topic-navigation.tpl.php
- forums.tpl.php
- Node
- “modules/node/…”
- node.tpl.php
- Poll
- “modules/poll/…”
- poll-bar-block.tpl.php
- poll-bar.tpl.php
- poll-results-block.tpl.php
- poll-results.tpl.php
- poll-vote.tpl.php
- Profile
- “modules/profile/…”
- profile-block.tpl.php
- profile-listing.tpl.php
- profile-wrapper.tpl.php
- Search
- “modules/search/…”
- search-block-form.tpl.php
- search-result.tpl.php
- search-results.tpl.php
- search-theme-form.tpl.php
- User
- “modules/user/…”
- user-picture.tpl.php
- user-profile-category.tpl.php
- user-profile-item.tpl.php
- user-profile.tpl.php
- System
- “modules/system/…”
- page.tpl.php
- maintenance-page.tpl.php
- box.tpl.php
Variáveis disponíveis para os arquivos .tpl dos módulos
Na primeira parte deste nosso tutorial nós vimos as variáveis-chave do arquivo “page.tpl.php“.
Cada arquivo de template possui um conjunto de variáveis específicas.
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á consultar futuramente como um guia de referência.
Templates Suggestions ou Templates Alternativos
Além de ser possível estender 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 estender 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:
Este é meu currículo:
Sei programar em PHP
Sei programar em Javascript
Sei criar temas para Drupal 6
Me contrate!
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 aí, você somente quer o Título 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:
<h1><?phpprint$title?> nos Pages em Geral</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>
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.
- node-page-7.tpl.php
- node-page-8.tpl.php
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!
No próximo artigo vamos dar continuidade ao assunto, falando sobre outros tópicos.
*
Publicado originalmente em Drupal Brasil por Gilberto Albino