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.

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.


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.


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


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;
}

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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.