Eu criei um tema e tenho meus arquivos de modelo nessa estrutura
- /templates/page/page.tpl.php
- /templates/page/page--node-type.tpl.php
Eu criei um modelo de página personalizado, mas por algum motivo ele não está sendo escolhido pelo Drupal. Limpei meu cache e também tentei adicionar essa função de pré-processador no arquivo template.php do tema, mas ele ainda não está funcionando.
if (isset($vars['node']))
{
// If the node type is "blog" the template suggestion will be "page--blog.tpl.php".
$vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--', $vars['node']->type);
}
Qualquer ajuda seria apreciada.
Respostas:
Conforme relatado nas Sugestões de modelos do Drupal 7 , a sugestão de modelo usada por padrão no Drupal 7 para páginas é página - [frente | interno / caminho] .tpl.php.
Para uma página visível em http://www.example.com/node/1/edit , o Drupal procuraria os seguintes arquivos de modelo:
Para adicionar sugestões extras, seu tema deve implementar template_preprocess_page () e adicionar novas sugestões em
$variables['theme_hook_suggestions']
($variables
é a variável passada por referência à função).Se você fez isso, a única razão pela qual o arquivo de modelo sugerido não está sendo usado é porque o arquivo não está nomeado corretamente: no caso de a página mostrar uma página de livro, por exemplo, o arquivo de modelo deve ser page - book.tpl .php. Você pode alterar o código do seu tema e deixá-lo usar a página - modelo node-type.tpl.php, se não encontrar um modelo como a página - book.tpl.php.
Observe também que, em theme_get_suggestions () (que é a função chamada por template_preprocess_page () ), os hífens são substituídos por
_
, e não vice-versa. O motivo é explicado em um comentário relatado no código de função.fonte
Estou usando o Drupal 7.4 e tive o mesmo problema e a única coisa que ajudou foi esta postagem: Como adicionar uma página.tpl personalizada com base nos tipos de conteúdo
Da postagem:
fonte
Passei muito tempo tentando seguir o exemplo acima usando a substituição de string no Drupal 7.22. Isso não parece funcionar para mim. Curiosamente, alguns tipos de conteúdo parecem ser sugeridos automaticamente, enquanto outros não. Este é o código que funcionou para mim no final.
portanto, a sugestão de modelo para um tipo de conteúdo de front_page seria:
página - front_cover.tpl.php
Curiosamente, a sugestão de modelo de código para o tipo de conteúdo 'issue' aparece como page-issue.tpl.php sem a necessidade de um script de pré-processador !? Isso para meus propósitos parece substituir o modelo de exibição que usa um caminho semelhante.
ie
view path = / issue / # sugestão de modelo com base no tipo de conteúdo, por exemplo, / issue / # / front_cover
fonte