Розмістіть блок у кількох регіонах


12

Чи існує модуль, який дозволяє користувачам розміщувати один і той же блок у кількох регіонах? Таким чином, мені не потрібно робити один і той же блок View двічі.

Відповіді:


16

Багатоблоковий модуль робить це можливим:

Блок модуля Drupal обмежений тим, що блок може мати лише один екземпляр. Кожен блок має відношення 1: 1 із налаштуваннями регіону, ваги, видимості (та інших). Це означає, що неможливо мати блоки в декількох регіонах або мати блоки, які мають різні налаштування на різних сторінках. Модуль MultiBlock вирішує цю проблему, дозволяючи створювати кілька блокових екземплярів вже існуючих блоків.


6

Незрозуміло, чи хочете ви використовувати один і той же блок більше одного разу на одній сторінці або розміщувати його в різних регіонах на різних сторінках. У будь-якому випадку я б рекомендував вам поглянути на контекстний модуль .

Використовуючи контекст, ви можете розмістити блок в різних регіонах на різних сторінках. Крім того, ви можете створити 2 контексти, які застосовуються до однієї сторінки / сторінок і розміщують один і той же блок в різних регіонах.


2
Слід зазначити, що, здається, це не працює, якщо два рази помістити блок в одному регіоні. Здається, що контекст може розміщувати лише одну копію блоку на регіон.
Джефф


2

Якщо у вас вже є спеціальний модуль для сайту, ви можете визначити власні блоки для повторення вмісту існуючого блоку. Потім він з’явиться двічі у списку блоків

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

Використовуйте модуль MultiBlock .

Перейдіть до Структура-> Блоки-> Екземпляри. Дайте унікальну назву екземпляра та виберіть тип блоку та збережіть. Потім увімкніть блок, призначивши його в потрібний вам регіон.


2
Весь процес пояснюється після включення модуля Multiblock.
Саянта Ахарія Чудхурі

@SaayantaAcharyyaChoudhury Тоді вам слід було відредагувати оригінальну відповідь, щоб зробити її краще, а не писати іншу відповідь.
денулолі

0

Модуль Bean також тепер має цю функціональність. Не тільки для спеціальних блокових об'єктів, але і для блоків, визначених у гачку_блока. Дивіться версію розробника та підмодуль bean_all.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.