Поместите блок в нескольких регионах

12

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

enchance
источник

Ответы:

16

Мультиблочный модуль делает это возможным:

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

tostinni
источник
6

Неясно, хотите ли вы использовать один и тот же блок более одного раза на одной странице или разместить его в разных регионах на разных страницах. В любом случае, я бы порекомендовал вам взглянуть на контекстный модуль .

Используя контекст, вы можете разместить блок в разных регионах на разных страницах. В качестве альтернативы вы можете создать 2 контекста, которые применяются к одной и той же странице / страницам и разместить один и тот же блок в разных регионах.

skwashd
источник
2
Следует отметить, что это не работает, если дважды поместить блок в пределах одной и той же области. Похоже, что Context может поместить только одну копию блока на регион.
Джефф
3

Модуль Panels также позволяет легко использовать несколько экземпляров одного и того же блока на странице.

Зак Харки
источник
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;
}
commonpike
источник
1

Используйте модуль MultiBlock .

Перейдите в Структура-> Блоки-> Экземпляры. Дайте уникальный заголовок экземпляра, выберите тип блока и сохраните. Затем включите блок, назначив его в регион, где вы хотите.

Сааянта Ачарья Чоудхури
источник
2
Весь процесс объясняется после включения модуля Multiblock.
Сааянта Ачарья Чоудхури
@SaayantaAcharyyaChoudhury Тогда вы должны были отредактировать исходный ответ, чтобы сделать его лучше, вместо того, чтобы писать другой ответ.
Dayuloli
0

Модуль Bean также теперь имеет эту функциональность. Не только для пользовательских блоков, но и для блоков, определенных в hook_block. Смотрите версию dev и подмодуль bean_all.

indytechcook
источник