Maneira fácil de criar blocos programaticamente? [fechadas]
26
Aprendendo Drupal. Agora eu sei que posso criar blocos através do back-end, mas prefiro pré-criá-los programaticamente, se possível. Na verdade, tenho certeza de que é possível. Mas qual é a maneira mais fácil?
Use hook_block_info e hook_block_view ganchos em seu módulo personalizado . hook_block_info define o bloco. Ele será exibido em admin > estrutura > blocos . * hook_block_view * exibe o conteúdo. Veja exemplos abaixo na API Drupal.
Exemplo de hook_block_info, em que dois blocos são definidos (intitulado Conteúdo sindicalizado e Recente):
<?phpfunction hook_block_info(){// This example comes from node.module.
$blocks['syndicate']= array('info'=> t('Syndicate'),'cache'=> DRUPAL_NO_CACHE,);
$blocks['recent']= array('info'=> t('Recent content'),// DRUPAL_CACHE_PER_ROLE will be assumed.);return $blocks;}?>
Exemplo de hook_block_view:
<?phpfunction hook_block_view($delta =''){// This example is adapted from node.module.
$block = array();switch($delta){case'syndicate':
$block['subject']= t('Syndicate');
$block['content']= array('#theme'=>'feed_icon','#url'=>'rss.xml','#title'=> t('Syndicate'),);break;case'recent':if(user_access('access content')){
$block['subject']= t('Recent content');if($nodes = node_get_recent(variable_get('node_recent_block_count',10))){
$block['content']= array('#theme'=>'node_recent_block','#nodes'=> $nodes,);}else{
$block['content']= t('No content available.');}}break;}return $block;}?>
Consulte a página da API de blocos no Drupal.org para obter a lista completa de ganchos. Drupal 6 é um pouco diferente. Não há gancho hook_block_view; em vez disso, use hook_block para declarar blocos.
Se esta é sua primeira incursão no desenvolvimento de módulos, eu recomendo o Pro Drupal Development ou o Pro Drupal 7 Development . Praticamente tudo o que você precisa saber está lá.
Parece que hook_block só pode ser usado em um módulo separado: | Ainda não entendo por que essa complexidade ... É uma prática comum ter módulos para tudo no Drupal?
Jayarjo
2
Sim, os módulos são um conceito-chave do Drupal. De muitas maneiras, o próprio Drupal é um conjunto de módulos e tudo é feito através de ganchos de módulos.
mpdonadio
3
Você pode estar procurando o que eu estava procurando e o encontrou aqui:
No Drupal 7, dê uma olhada block_add_block_form_submitem modules/block/block.admin.inc.
Este é o formulário regular de criação de blocos; parece apenas inserir os registros diretamente, em vez de chamar outra função. Observe que cada registro na tabela de blocos está vinculado a um único tema (você pode apenas usar o ativo, mas é mais seguro inserir registros para todos os temas).
Respostas:
Para o Drupal 7:
Use hook_block_info e hook_block_view ganchos em seu módulo personalizado . hook_block_info define o bloco. Ele será exibido em admin > estrutura > blocos . * hook_block_view * exibe o conteúdo. Veja exemplos abaixo na API Drupal.
Exemplo de hook_block_info, em que dois blocos são definidos (intitulado Conteúdo sindicalizado e Recente):
Exemplo de hook_block_view:
Consulte a página da API de blocos no Drupal.org para obter a lista completa de ganchos. Drupal 6 é um pouco diferente. Não há gancho hook_block_view; em vez disso, use hook_block para declarar blocos.
fonte
Para o Drupal 6, a resposta curta é que você cria um módulo personalizado que implementa hook_block .
Para o Drupal 7, você usa a API de bloqueio .
Se esta é sua primeira incursão no desenvolvimento de módulos, eu recomendo o Pro Drupal Development ou o Pro Drupal 7 Development . Praticamente tudo o que você precisa saber está lá.
fonte
Você pode estar procurando o que eu estava procurando e o encontrou aqui:
Mas quando você olha para esta função, verá que pode fazer o db_update sozinho.
fonte
No Drupal 7, dê uma olhada
block_add_block_form_submit
emmodules/block/block.admin.inc
.Este é o formulário regular de criação de blocos; parece apenas inserir os registros diretamente, em vez de chamar outra função. Observe que cada registro na tabela de blocos está vinculado a um único tema (você pode apenas usar o ativo, mas é mais seguro inserir registros para todos os temas).
A tabela block_custom mantém o conteúdo.
fonte
Você pode usar o módulo Recursos extras para exportar blocos.
Como alternativa, basta criar registros diretamente na tabela de blocos.
fonte