Eu preciso gerar algumas regiões no modelo html.tpl.php, pois elas não mudam entre page.tpl.php e page-front.tpl.php (apenas para citar dois). Basicamente, quero evitar a duplicação de código.
No entanto, parece não haver nada associado a regiões no html.tpl.php, nem eu consegui recuperar nada usando drupal_get_region_content (com e sem parâmetros, ele retorna apenas uma matriz vazia).
Ideias?
drupal_set_region_content()
para definir o conteúdo da região?drupal_add_region_content()
mas não vejo sentido: defino o conteúdo das regiões através da interface de administração dos blocos.drupal_add_region_content()
.Respostas:
Eu resolvi assim:
e então eu poderia fazer
fonte
drupal_get_region_content()
retorna o conteúdo que foi definido com as chamadas anteriores paradrupal_add_region_content()
, mas não inclui o conteúdo dos blocos, que são renderizados na página por meio de block_page_build () .Se você procurar "drupal_add_region_content" no código fonte do Drupal, notará que a função é chamada por:
drupal_get_region_content()
install_display_output()
template_preprocess_maintenance_page()
update_task_list()
O que você define para os blocos na página administrativa é em quais regiões os blocos serão renderizados, mas seu conteúdo não será adicionado
drupal_add_region_content()
; de fato, nenhuma das funções listadas acima (que são as únicas chamadas de funçõesdrupal_add_region_content()
, exceto o código para testar uma instalação do Drupal) é para renderizar / adicionar o conteúdo do bloco.Se você precisar renderizar os blocos em seu próprio código, verifique o código usado no
block_page_build()
. Em particular, este é o código que provavelmente é mais útil para você:As duas primeiras linhas verificam se a página exibida não é a página de demonstração usada para mostrar onde as regiões temáticas estão localizadas.
Se você precisar renderizar os blocos de uma maneira diferente, é mais provável que você esteja interessado em substituir theme_block () no seu tema ou (ainda mais provavelmente) em criar um arquivo de modelo block.tpl.php personalizado. Outra maneira de alterar a maneira como os blocos são renderizados é usar uma função de pré-processamento para os blocos ( hook_preprocess_block () ).
fonte