Placer un bloc dans plusieurs régions

12

Existe-t-il un module qui permet aux utilisateurs de placer le même bloc dans plusieurs régions? De cette façon, je n'ai pas à refaire deux fois le même bloc View.

améliorer
la source

Réponses:

16

Le module multibloc permet cela:

Le module de bloc de Drupal est limité par le fait qu'un bloc ne peut avoir qu'une seule instance. Chaque bloc a une relation 1: 1 avec ses paramètres de région, de poids, de visibilité (et autres). Cela signifie qu'il est impossible d'avoir des blocs dans plusieurs régions ou d'avoir des blocs ayant des paramètres différents sur différentes pages. Le module MultiBlock résout ce problème en vous permettant de créer plusieurs instances de bloc de blocs déjà existants.

tostinni
la source
6

Il n'est pas clair si vous souhaitez utiliser le même bloc plusieurs fois sur la même page ou le placer dans différentes régions sur différentes pages. Dans tous les cas, je vous recommande de jeter un œil au module contextuel .

En utilisant le contexte, vous pouvez placer un bloc dans différentes régions sur différentes pages. Alternativement, vous pouvez créer 2 contextes qui s'appliquent aux mêmes pages et placer le même bloc dans différentes régions.

skwashd
la source
2
Il convient de noter que cela ne semble pas fonctionner lorsque vous placez un bloc deux fois dans la même région. Il semble que Context ne peut mettre qu'une seule copie d'un bloc par région.
Jeff
3

Le module Panneaux facilite également l'utilisation de plusieurs instances du même bloc sur une page.

Zach Harkey
la source
2

Si vous avez déjà un module personnalisé pour le site, vous pouvez définir vos propres blocs pour répéter le contenu d'un bloc existant. Il apparaîtra ensuite deux fois dans la liste de blocage

/* -------------------
    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;
}
pic commun
la source
1

Utilisez le module MultiBlock .

Allez dans Structure-> Blocs-> Instances. Donnez un titre d'instance unique et sélectionnez le type de bloc et enregistrez. Activez ensuite le bloc en l'attribuant à une région où vous le souhaitez.

Saayanta Acharyya Choudhury
la source
2
L'ensemble du processus est expliqué après l'activation du module Multiblock.
Saayanta Acharyya Choudhury
@SaayantaAcharyyaChoudhury Ensuite, vous devriez avoir modifié la réponse d'origine pour la rendre meilleure au lieu d'écrire une autre réponse.
dayuloli
0

Le module Bean possède également cette fonctionnalité. Pas seulement pour les entités de bloc personnalisées mais aussi pour les blocs définis dans hook_block. Voir la version dev et le sous-module bean_all.

indytechcook
la source