Umieść blok w wielu regionach


12

Czy istnieje moduł, który pozwala użytkownikom umieszczać ten sam blok w wielu regionach? W ten sposób nie muszę dwa razy tworzyć tego samego bloku widoku.

Odpowiedzi:


16

Moduł Multiblock umożliwia:

Moduł bloku Drupala jest ograniczony faktem, że blok może mieć tylko jedną instancję. Każdy blok ma stosunek 1: 1 do ustawień regionu, wagi, widoczności (i innych). Oznacza to, że nie można mieć bloków w wielu regionach ani bloków, które mają różne ustawienia na różnych stronach. Moduł MultiBlock rozwiązuje ten problem, umożliwiając tworzenie wielu wystąpień bloków już istniejących bloków.


6

Nie jest jasne, czy chcesz używać tego samego bloku więcej niż jeden raz na tej samej stronie lub umieszczać go w różnych regionach na różnych stronach. Tak czy inaczej, polecam zajrzeć do modułu kontekstowego .

Za pomocą kontekstu możesz umieścić blok w różnych regionach na różnych stronach. Alternatywnie możesz utworzyć 2 konteksty, które dotyczą tej samej strony / stron i umieścić ten sam blok w różnych regionach.


2
Należy zauważyć, że nie wydaje się to działać, gdy dwukrotnie umieszczasz blok w tym samym regionie. Wygląda na to, że kontekst może umieścić tylko jedną kopię bloku na region.
Jeff


2

Jeśli masz już niestandardowy moduł dla witryny, możesz zdefiniować własne bloki, aby powtórzyć zawartość istniejącego bloku. Następnie pojawi się dwukrotnie na liście bloków

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

Użyj modułu MultiBlock .

Przejdź do Struktura-> Bloki-> Instancje. Podaj unikalny tytuł wystąpienia, wybierz typ bloku i zapisz. Następnie włącz blok, przypisując go do regionu, w którym chcesz.


2
Cały proces wyjaśniono po włączeniu modułu Multiblock.
Saayanta Acharyya Choudhury

@SaayantaAcharyyaChoudhury Następnie powinieneś edytować oryginalną odpowiedź, aby była lepsza, zamiast pisać inną odpowiedź.
dayuloli

0

Bean moduł też ma teraz tej funkcji. Nie tylko dla niestandardowych elementów blokowych, ale także dla bloków zdefiniowanych w hook_block. Zobacz wersję dev i podmoduł bean_all.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.