¿Manera fácil de crear bloques mediante programación? [cerrado]
26
Aprendiendo Drupal. Ahora sé que puedo crear bloques a través del backend, pero preferiría crearlos mediante programación, si es posible. De hecho, estoy bastante seguro de que es posible. ¿Pero cuál es la forma más fácil?
Use hook_block_info y hook_block_view en su módulo personalizado . hook_block_info define el bloque. Aparecerá en admin > estructura > bloques . * hook_block_view * muestra el contenido. Vea los ejemplos a continuación de la API de Drupal.
Ejemplo de hook_block_info, donde se definen dos bloques (titulados Distribuir y Contenido reciente):
<?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;}?>
Ejemplo 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 la página API de bloques en Drupal.org para obtener una lista completa de ganchos. Drupal 6 es un poco diferente. No hay hook_block_view hook; en su lugar use hook_block para declarar bloques.
Parece que hook_block solo puede usarse en un módulo separado: | Todavía no entiendo por qué esta complejidad ... ¿Es una práctica habitual tener módulos para todo en Drupal?
jayarjo
2
Sí, los módulos son un concepto clave de Drupal. En la mayoría de los casos, Drupal es un conjunto de módulos y todo se hace a través de ganchos de módulo.
mpdonadio
3
Quizás estés buscando lo que estaba buscando y lo encontraste aquí:
En Drupal 7, echar un vistazo a block_add_block_form_submiten modules/block/block.admin.inc.
Este es el formulario de creación de bloque regular; parece simplemente insertar los registros directamente en lugar de llamar a otra función. Tenga en cuenta que cada registro en la tabla de bloques está vinculado a un solo tema (puede usar el activo pero es más seguro insertar registros para todos los temas).
Respuestas:
Para Drupal 7:
Use hook_block_info y hook_block_view en su módulo personalizado . hook_block_info define el bloque. Aparecerá en admin > estructura > bloques . * hook_block_view * muestra el contenido. Vea los ejemplos a continuación de la API de Drupal.
Ejemplo de hook_block_info, donde se definen dos bloques (titulados Distribuir y Contenido reciente):
Ejemplo de hook_block_view:
Consulte la página API de bloques en Drupal.org para obtener una lista completa de ganchos. Drupal 6 es un poco diferente. No hay hook_block_view hook; en su lugar use hook_block para declarar bloques.
fuente
Para Drupal 6, la respuesta corta es que crea un módulo personalizado que implementa hook_block .
Para Drupal 7, usa la API Block .
Si esta es su primera incursión en el desarrollo de módulos, le recomiendo Pro Drupal Development o Pro Drupal 7 Development . Casi todo lo que necesitas saber está ahí.
fuente
Quizás estés buscando lo que estaba buscando y lo encontraste aquí:
Pero cuando observa esta función, verá que puede hacer usted mismo la actualización db_update.
fuente
En Drupal 7, echar un vistazo a
block_add_block_form_submit
enmodules/block/block.admin.inc
.Este es el formulario de creación de bloque regular; parece simplemente insertar los registros directamente en lugar de llamar a otra función. Tenga en cuenta que cada registro en la tabla de bloques está vinculado a un solo tema (puede usar el activo pero es más seguro insertar registros para todos los temas).
La tabla block_custom contiene el contenido.
fuente
Puede usar el módulo Características adicionales para exportar bloques.
Alternativamente, solo cree registros directamente en la tabla de bloques.
fuente