Risposte:
Per Drupal 7:
Usa hook_block_info e hook_block_view nel tuo modulo personalizzato . hook_block_info definisce il blocco. Apparirà in admin > struttura > blocchi . * hook_block_view * visualizza il contenuto. Vedi gli esempi seguenti dall'API Drupal.
Esempio di hook_block_info, in cui sono definiti due blocchi (intitolato Syndicate e Contenuto recente):
<?php
function 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;
}
?>
Esempio di hook_block_view:
<?php
function 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;
}
?>
Fare riferimento alla pagina API Blocks su Drupal.org per l'elenco completo degli hook. Drupal 6 è un po 'diverso. Non esiste un hook hook_block_view; utilizzare invece hook_block per dichiarare i blocchi.
Per Drupal 6, la risposta breve è che si crea un modulo personalizzato che implementa hook_block .
Per Drupal 7, usi l' API Block .
Se questa è la tua prima incursione nello sviluppo di moduli, consiglio vivamente Pro Drupal Development o Pro Drupal 7 Development . Praticamente tutto quello che devi sapere è lì dentro.
Potresti cercare quello che stavo cercando e trovarlo qui:
/modules/block/block.module:
block_custom_block_save ($ modifica, $ delta).
Ma quando guardi questa funzione, vedrai che puoi fare tu stesso il db_update.
db_update('block_custom')
->fields(array(
'body' => $edit['body']['value'],
'info' => $edit['info'],
'format' => $edit['body']['format'],
))
->condition('bid', $delta)
->execute();
In Drupal 7, dare un'occhiata a block_add_block_form_submit
in modules/block/block.admin.inc
.
Questo è il normale modulo per la creazione di blocchi; sembra semplicemente inserire i record direttamente anziché chiamare un'altra funzione. Si noti che ogni record nella tabella dei blocchi è collegato a un singolo tema (è possibile utilizzare solo quello attivo ma è più sicuro inserire record per tutti i temi).
La tabella block_custom contiene il contenuto.
È possibile utilizzare il modulo Funzioni extra per esportare blocchi.
In alternativa, basta creare i record direttamente nella tabella dei blocchi.
INSERT INTO blocks (
module, delta, theme, status, weight, region, custom,
throttle, visibility, pages, title, cache)
VALUES (
'views','blog-block_1','mytheme',1,10,'sidebar_first',0,0,1,'blog\r\nblog/*','',-1)