在多个区域放置一个块


12

是否有一个模块可以允许用户将同一块放置在多个区域中?这样,我不必两次创建相同的View块。

Answers:


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;
}


0

模块现在也拥有这一功能。不仅适用于自定义块实体,还适用于hook_block中定义的块。请参阅开发版本和bean_all子模块。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.