Coloque um bloco em várias regiões


12

Existe um módulo que permita aos usuários colocar o mesmo bloco em várias regiões? Dessa forma, não preciso fazer o mesmo bloco de exibição duas vezes.

Respostas:


16

O módulo Multiblock torna isso possível:

O módulo de bloco do Drupal é limitado pelo fato de um bloco ter apenas uma instância. Cada bloco tem um relacionamento 1: 1 com suas configurações de região, peso, visibilidade (e outras). Isso significa que é impossível ter blocos em várias regiões ou blocos com configurações diferentes em páginas diferentes. O módulo MultiBlock resolve esse problema, permitindo criar várias instâncias de bloco de blocos já existentes.


6

Não está claro se você deseja usar o mesmo bloco mais de uma vez na mesma página ou colocá-lo em regiões diferentes em páginas diferentes. De qualquer maneira, eu recomendaria que você desse uma olhada no módulo de contexto .

Usando o contexto, você pode colocar um bloco em diferentes regiões em diferentes páginas. Como alternativa, você pode criar 2 contextos que se aplicam às mesmas páginas e colocar o mesmo bloco em diferentes regiões.


2
Deve-se notar que isso não parece funcionar ao colocar um bloco duas vezes na mesma região. Parece que o Contexto pode colocar apenas uma cópia de um bloco por região.
21415 Jeff


2

Se você já possui um módulo personalizado para o site, pode definir seus próprios blocos para repetir o conteúdo de um bloco existente. Aparecerá duas vezes na lista de bloqueios

/* -------------------
    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

Use o módulo MultiBlock .

Vá para Estrutura-> Blocos-> Instâncias. Atribua um título de instância exclusivo, selecione o tipo de bloco e salve. Em seguida, ative o bloco atribuindo-o a uma região onde deseja.


2
Todo o processo é explicado após a ativação do módulo Multiblock.
Saayanta Acharyya Choudhury

@SaayantaAcharyyaChoudhury Então você deve ter editado a resposta original para torná-la melhor, em vez de escrever outra resposta.
dayuloli

0

O módulo Bean também agora tem essa funcionalidade. Não apenas para entidades de bloco personalizadas, mas também para blocos definidos em hook_block. Veja a versão dev e o sub-módulo bean_all.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.