Estou usando o Drupal 7. No momento, tenho um menu principal de navegação e alternador de idiomas que existe no cabeçalho do meu site. Coloquei-os lá, indo para o CMS> Estrutura> Blocos e arrastando os blocos para a região do cabeçalho.
Como situar programaticamente esses blocos no cabeçalho?
block_example_block_info()
o valor da 'região' pode ser útil para testar.Respostas:
Para alterar a região em que os blocos definidos por outros módulos são colocados, você pode implementar hook_block_info_alter () , que recebe os seguintes argumentos:
$blocks
(passado por referência): a matriz que contém as definições de bloco, codificadas por módulo e delta$theme
: o tema para o qual os blocos estão sendo definidos$code_blocks
: os blocos conforme definido nashook_block_info()
implementações, antes que seus valores sejam substituídos pelos valores obtidos no banco de dadosfonte
É legítimo adicionar uma matriz renderizável a qualquer região da página em hook_page_build (). Exemplo do Drupal 7 para adicionar um minipanel à região do rodapé.
Essa é a mesma técnica que usa o módulo de contexto.
Nota: você não precisa do block.module enable para que isso funcione.
fonte
Em D6 seria essencialmente
Em D7 eu acho que é
mas ainda estou me atualizando no D7.
fonte
drupal_add_region_content()
é um beco sem saída, pois é destinado a páginas de instalação / atualização.Se você estiver adicionando um bloco personalizado, faça isso usando hook_block_info, configurando a opção status como 1 e a opção region para a região na qual você deseja que o bloco seja inserido.
Exemplo:
Se você deseja alterar um bloco já existente, use hook_block_info_alter (), atualizando as mesmas opções mostradas abaixo.
Exemplo:
Para obter mais informações, consulte https://api.drupal.org/api/drupal/modules%21block%21block.api.php/function/hook_block_info/7
fonte
Esse código é baseado no @ jonhattan, mas o dele não renderiza o HTML do contêiner do bloco ou os links contextuais. Também forneci uma maneira simples de especificar todos os blocos e regiões em um só lugar.
Nota: Ao contrário do código dele, você precisa do block.module instalado.
fonte
Esta não é a melhor forma, mas você pode colocar manualmente o conteúdo na matriz de páginas como esta ...
Embora você deva usar o Contexto ou apenas os blocos principais. Criar novos plugins não é tão ruim quanto parece. Apenas nomeie os arquivos corretamente, configure um gatilho e um teste. exemplo .
fonte
você também pode ajustar os blocos no seu tema, como:
fonte