Tempatkan blok di beberapa wilayah

12

Apakah ada modul yang dapat memungkinkan pengguna untuk menempatkan blok yang sama di beberapa wilayah? Dengan begitu saya tidak perlu membuat blok View yang sama dua kali.

enchance
sumber

Jawaban:

16

Modul multiblock memungkinkan ini:

Modul blok Drupal dibatasi oleh fakta bahwa blok hanya dapat memiliki satu instance. Setiap blok memiliki hubungan 1: 1 dengan wilayah, berat, pengaturan visibilitas (dan lainnya). Ini berarti bahwa tidak mungkin memiliki blok di beberapa wilayah atau memiliki blok yang memiliki pengaturan berbeda pada halaman yang berbeda. Modul MultiBlock menyelesaikan masalah ini dengan memungkinkan Anda membuat beberapa Instance Block dari blok yang sudah ada.

tostinni
sumber
6

Tidak jelas apakah Anda ingin menggunakan blok yang sama lebih dari satu kali di halaman yang sama atau menempatkannya di wilayah yang berbeda di halaman yang berbeda. Either way saya akan merekomendasikan Anda melihat modul konteks .

Menggunakan konteks Anda dapat menempatkan blok dengan di berbagai wilayah di halaman yang berbeda. Atau Anda dapat membuat 2 konteks yang berlaku untuk halaman yang sama dan menempatkan blok yang sama di wilayah yang berbeda.

skwashd
sumber
2
Perlu dicatat bahwa ini tampaknya tidak berfungsi ketika menempatkan blok dua kali dalam wilayah yang sama. Tampaknya Konteks hanya dapat menempatkan satu salinan blok per wilayah.
Jeff
3

The Panel modul juga memudahkan untuk menggunakan beberapa contoh dari blok yang sama pada halaman.

Zach Harkey
sumber
2

Jika Anda sudah memiliki modul khusus untuk situs tersebut, Anda dapat menentukan blok Anda sendiri untuk mengulangi konten dari blok yang ada. Kemudian akan muncul dua kali dalam daftar blokir

/* -------------------
    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;
}
Commonpike
sumber
1

Gunakan Modul MultiBlock .

Pergi ke Struktur-> Blok-> Instans. Berikan judul instance yang unik dan pilih jenis blok dan simpan. Kemudian aktifkan blok dengan menetapkannya ke wilayah di mana Anda inginkan.

Saayanta Acharyya Choudhury
sumber
2
Seluruh proses dijelaskan setelah mengaktifkan modul Multiblock.
Saayanta Acharyya Choudhury
@ SaayantaAcharyyaChoudhury Maka Anda harus mengedit jawaban asli untuk membuatnya lebih baik daripada menulis jawaban lain.
dayuloli
0

The Bean modul juga sekarang memiliki fungsi ini. Tidak hanya untuk entitas blok khusus tetapi juga untuk blok yang ditentukan dalam hook_block. Lihat versi dev dan submodule bean_all.

indytechcook
sumber