Estou procurando renderizar um determinado campo antes do título do nó ao exibir um teaser no D7.
Efetivamente eu quero ir a partir desta para esta .
Eu olhei em atualizar o node.tpl.php mas noto que ele se separa $title
de $content
então estou inseguro sobre como abordar isso. Após algumas pesquisas, descobri que as pessoas sugeriram o uso de módulos CCK e ConTemplate para contornar isso no Drupal-6, mas estou me perguntando se existe uma solução mais Drupal-7.
Alguma sugestão?
Respostas:
Isso é realmente bastante simples com o Drupal 7.
Com
render
ehide
você sabe que tem a possibilidade de controlar a colocação de um único elemento$content
sem precisar imprimir todos os itens que você mesmo precisava no Drupal 6.Um modelo de nó simplificado se parece com isso:
Uma pequena modificação atenderia às suas necessidades:
Usando
render
, você pode gerar um elemento. Isso é mais inteligente do que simplesmente imprimir coisas, pois o Drupal acompanhará o que foi renderizado, para evitar que a mesma coisa seja impressa duas vezes no local. Ao renderizar o campo acima do título, você também está removendo o que é renderizado quando$content
é renderizado.fonte
O Display Suite também é muito legal.
fonte
Dê uma olhada no módulo Título - http://drupal.org/project/title . Pode ser útil para o seu cenário. Eu o instalei / habilitei por algum motivo, provavelmente semelhante ao seu, e parecia dar flexibilidade de como colocar o campo de título.
Desde então, eu o desativei (e estou usando o Display Suite), então minha lembrança pode ser um pouco superficial.
fonte
Esta é uma solução hackish e tenho certeza de que alguém irá apresentar algo mais elegante, mas no caso de você estar preso, e ninguém o fizer ...
Você pode usar
page.tpl.php
para remover$title
completamente a impressão e adicionar um novo campo personalizado chamado Title com o nome da máquina $ new_title ou algo assim. Em seguida, na edição do nó, oculte a caixa Título original e, no nó Salvar, use Computed Field ou algum php personalizado para copiar o arquivo$new_title
para$title
.Depois de tudo isso, escreva um css para fazer com que $ new_title pareça com o título da página antes e você poderá colocar os campos na ordem que quiser, basta arrastar e soltar na tela de gerenciamento de campos. Como você copiou
$new_title
para$title
, o título da página na barra do navegador ainda deve funcionar e nada deve reclamar da falta de títulos de nó.Como eu disse, é um hack - mas funcionaria. Entre em contato se precisar de mais informações
fonte
page.tpl.php (guirlanda)
template.php
fonte
Isso não se aplica à pergunta do Teaser na postagem original, mas para as pessoas que se deparam com isso e querem que isso aconteça na visualização completa, aqui está uma opção sem código: exibir o campo em um bloco (usando visualizações, por exemplo) e coloque esse bloco acima do seu bloco de conteúdo, mas na mesma região.
fonte
Eu acho que você deve usar funções de pré-processo no seu template.php
E como adicional
despejar variáveis e fazer o que quiser. adicionar / remover / atualizar.
fonte
Resolvi isso por uma solução sem código usando o Display Suite e o recurso extra "Região para bloquear". Eu gosto mais desta solução por sua flexibilidade.
Basicamente, ative a parte extra "Região para bloquear", ative a exibição "Conteúdo em texto completo" no Display Suite. (supondo que você queira exibir o conteúdo acima do título na exibição do nó completo, da mesma forma você pode usá-lo para qualquer outro modo de exibição, exceto o padrão). Agora, na parte "Gerenciar exibição" de "Conteúdo em texto completo", na parte inferior da tela, a guia "Bloquear regiões" deve aparecer. Digite o novo nome do bloco, salve, arraste e solte os campos desejados nesse bloco. Por fim, mova o bloco recém-criado na tela Blocos em algum lugar acima do título do nó.
Você pode ver o vídeo da mesma abordagem aqui: http://www.youtube.com/watch?v=y4wyjxyhbNA , é claro que você precisa colocar o bloco acima do título (não da barra lateral esquerda) no final.
fonte
Para modelos zen abaixo, o código funciona para mim.
Então, finalmente, você pode imprimir facilmente seu campo em page.tpl.php;
fonte
Eu sei que você já teria usado algum tema para criar e agora tentando adicionar os campos na parte superior do título.
Minhas sugestões para todos os desenvolvedores que criam o tema no Drupal 7 seriam: Tema Omega + Módulos Contexto e Delta. Isso fornece uma base muito forte para o seu layout.
E flexibilidade na organização de regiões, blocos e campos.
fonte
Você pode fazer isso com o módulo de painéis
fonte