Platziere einen Block in mehrere Regionen

12

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.

verzaubern
quelle

Antworten:

16

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.

tostinni
quelle
6

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.

skwashd
quelle
2
Es sollte beachtet werden, dass dies anscheinend nicht funktioniert, wenn ein Block zweimal innerhalb derselben Region platziert wird. Es scheint, dass Context nur eine Kopie eines Blocks pro Region speichern kann.
Jeff
3

Das Modul Panels erleichtert auch die Verwendung mehrerer Instanzen desselben Blocks auf einer Seite.

Zach Harkey
quelle
2

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;
}
Hecht
quelle
1

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.

Saayanta Acharyya Choudhury
quelle
2
Der gesamte Vorgang wird nach dem Aktivieren des Multiblock-Moduls erläutert.
Saayanta Acharyya Choudhury
@ SaayantaAcharyyaChoudhury Dann sollten Sie die ursprüngliche Antwort bearbeitet haben, um sie besser zu machen, anstatt eine andere Antwort zu schreiben.
Dayuloli
0

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.

indytechcook
quelle