Eu criei um bloco usando hook_block_info
e hook_block_theme
assim por diante. Mas como posso tema isso?
Eu tenho que trabalhar para retornar uma matriz com as chaves 'subject'
e 'content'
. Mas eu criei a marcação diretamente no hook_block_view()
gancho e não é isso que eu quero.
Nos documentos, diz-se que o conteúdo deve ser retornado preferencialmente como matriz renderizável e não como marcação. Mas o que é essa matriz renderizável ? Eles dizem que devem ser dados em vez de marcação, mas tudo o que vejo nos exemplos é que ele é usado apenas como um invólucro para marcação, então nada foi ganho lá.
Quero poder ter um block--MYMODULE--DELTA.tpl.php
no meu tema, mas como eu o chamo e como posso passar os dados para o bloco?
Respostas:
A maneira como faço isso é a seguinte ...
E então, em uma subpasta em seu módulo chamada
theme
, deve haver um arquivo chamadomy-template.tpl.php
que poderia ter isso:E se você quiser, poderá substituir a implementação do módulo "padrão" que acabou de criar
my-module.tpl.php
no seu tema, conforme desejarblock--MYMODULE--DELTA.tpl.php
.fonte
admin/config/development/performance
e clicar noclear cache
botão. Você também pode limpar o cache usando drush, ou seja,drush cc all
Experimente o módulo Theme Developer . Quando você o habilitou, pode marcar uma caixa de seleção no canto inferior esquerdo da sua página do Drupal. Depois disso, você pode clicar no seu bloco e obter informações úteis, considerando o tema. Você pode ver as possíveis nomeações de arquivo .tpl.php para o seu bloco, por exemplo.
Escolha um desses nomes. O primeiro é o mais específico. Será apenas tema de um bloco. Crie um arquivo com esse nome na pasta do tema, se ainda não estiver lá. Você pode colocá-lo na subpasta se desejar se organizar.
Copie o conteúdo de block.tpl.php no seu arquivo e comece a mudar as coisas da maneira que deseja.
Salve seu arquivo, limpe os caches e recarregue a página.
fonte
Já existem várias respostas para esta pergunta, mas tentei fornecer uma abordagem muito simplista. Esperançosamente, identificando para devs a estrutura de matriz esperada pelo Drupal ao retornar o conteúdo do bloco.
Para fazer isso, dividi a questão em exemplos de código separados, como tal,
Veja uma explicação completa aqui drupal 7, criando blocos personalizados de temas
fonte
Esta é uma publicação antiga, mas encontrei uma solução melhor para substituir modelos de bloco de um módulo personalizado para o Drupal 7.
Adicione isso ao seu módulo personalizado:
Então você precisa do seguinte código:
Tudo que você precisa fazer é criar
templates/block--my-custom-module.tpl.php
dentro da pasta do seu módulo.Eu escrevi um tutorial sobre este Tutorial Drupal - Como substituir modelos de bloco de um módulo personalizado
fonte