Yanıtlar:
Çoklu blok modülü bunu mümkün kılar:
Drupal'ın blok modülü, bir bloğun sadece bir örneği olabileceği gerçeğiyle sınırlıdır. Her bloğun bölge, ağırlık, görünürlük (ve diğer) ayarlarıyla 1: 1 ilişkisi vardır. Bu, birden fazla bölgede blok bulundurmanın veya farklı sayfalarda farklı ayarlara sahip bloklara sahip olmanın imkansız olduğu anlamına gelir. MultiBlock modülü, zaten var olan blokların birden fazla Blok Örneği oluşturmanıza izin vererek bu sorunu çözer.
Aynı bloğu aynı sayfada birden çok kez kullanmak mı yoksa farklı sayfalarda farklı bölgelere yerleştirmek mi istediğiniz belli değil. Her iki şekilde de bağlam modülüne göz atmanızı tavsiye ederim .
Bağlamı kullanarak farklı sayfalarda farklı bölgelere bir blok yerleştirebilirsiniz. Alternatif olarak, aynı sayfalara uygulanan ve aynı bloğu farklı bölgelere yerleştiren 2 bağlam oluşturabilirsiniz.
Paneller modülü da kolay bir sayfada aynı blokta birden fazla örneğini kullanmak mümkün kılar.
Site için zaten özel bir modülünüz varsa, mevcut bir bloğun içeriğini tekrarlamak için kendi bloklarınızı tanımlayabilirsiniz. Daha sonra blok listesinde iki kez görünür
/* -------------------
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;
}
MultiBlock Modülünü kullanın .
Yapı-> Bloklar-> Örnekler'e gidin. Benzersiz bir örnek başlığı verin ve blok türünü seçin ve kaydedin. Ardından, istediğiniz bölgeye atayarak bloğu etkinleştirin.
Fasulye modülü da artık bu işlevselliği vardır. Sadece özel blok varlıkları için değil, hook_block içinde tanımlanan bloklar için de geçerlidir. Geliştirici sürümüne ve bean_all alt modülüne bakın.