Gibt es ein Modul, mit dem Benutzer denselben Block in mehreren Regionen platzieren können? Auf diese Weise muss ich nicht zweimal denselben View-Block erstellen.
Gibt es ein Modul, mit dem Benutzer denselben Block in mehreren Regionen platzieren können? Auf diese Weise muss ich nicht zweimal denselben View-Block erstellen.
Antworten:
Das Multiblock- Modul macht es möglich:
Das Drupal-Blockmodul ist dadurch begrenzt, dass ein Block nur eine Instanz haben kann. Jeder Block hat eine 1: 1-Beziehung zu Region, Gewicht, Sichtbarkeit (und anderen) Einstellungen. Dies bedeutet, dass es unmöglich ist, Blöcke in mehreren Regionen oder Blöcke mit unterschiedlichen Einstellungen auf verschiedenen Seiten zu haben. Das MultiBlock-Modul löst dieses Problem, indem Sie mehrere Blockinstanzen bereits vorhandener Blöcke erstellen können.
Es ist unklar, ob Sie denselben Block mehr als einmal auf derselben Seite verwenden oder in verschiedenen Regionen auf verschiedenen Seiten platzieren möchten. In jedem Fall würde ich empfehlen, dass Sie sich das Kontextmodul ansehen .
Über den Kontext können Sie einen Block mit in verschiedenen Regionen auf verschiedenen Seiten platzieren. Alternativ können Sie 2 Kontexte erstellen, die sich auf dieselbe Seite / dieselben Seiten beziehen, und denselben Block in verschiedenen Regionen platzieren.
Das Modul Panels erleichtert auch die Verwendung mehrerer Instanzen desselben Blocks auf einer Seite.
Wenn Sie bereits ein benutzerdefiniertes Modul für die Site haben, können Sie Ihre eigenen Blöcke definieren, um den Inhalt eines vorhandenen Blocks zu wiederholen. Es erscheint dann zweimal in der Blockliste
/* -------------------
custom blocks
----------------- */
/**
* Declare what blocks are provided by this module.
* Implements hook_block_info().
*/
function MYMODULE_block_info(){
$block['fibble_home'] = array(
'info' => t('fibble (home)'),
'cache' => DRUPAL_CACHE_PER_ROLE,
);
$block['fibble_members'] = array(
'info' => t('fibble (members)'),
'cache' => DRUPAL_CACHE_PER_ROLE,
);
return $block;
}
/**
* Define what our block is going to look like.
* Implements hook_block_view().
*/
function MYMODULE_block_view($block_key){
$block = array();
// tweets block to appear twice
if($block_key == 'fibble_home' || $block_key == 'fibble_members'){
//This is the title of the block.
$block['subject'] = t('Fibble');
$fblock = module_invoke('MODULE_ORIGINAL_BLOCK', 'block_view', 'ID_ORIGINAL_BLOCK');
$fcontent = render($fblock['content']);
$block['content'] = '<!-- content repeated by MYMODULE -->';
$block['content'] .= $fcontent;
}
return $block;
}
Verwenden Sie das MultiBlock- Modul.
Gehen Sie zu Struktur-> Bausteine-> Instanzen. Geben Sie einen eindeutigen Instanztitel ein und wählen Sie den Blocktyp und speichern Sie ihn. Aktivieren Sie dann den Block, indem Sie ihn einer Region zuweisen, in der Sie möchten.
Das Bean- Modul verfügt nun auch über diese Funktionalität. Nicht nur für benutzerdefinierte Blockentitäten, sondern auch für in hook_block definierte Blöcke. Siehe die dev-Version und das bean_all-Submodul.