How can I create multiple different blocks in one module in Drupal 6?
Asked Answered
L

1

7

I'm using hook_block to create a block with the name of the custom module I'm creating.
I'm not being able to create a block without using myModuleName_block.

Do I need to do different modules for every different block I want to create?

Lobel answered 20/5, 2010 at 10:52 Comment(0)
B
15

You can make several blocks with hook_block, just use the $delta.

function hook_block($op = 'list', $delta = 0, $edit = array()) {
  switch ($op) {

    case 'list':
      $blocks[0]['info'] = t('Block 1');
      $blocks[1]['info'] = t('Block 2');
      return $blocks;

    case 'configure':
      if ($delta == 0) {
        // Block 1
      }
      else if ($delta == 1) {
        // Block 1
      }

 ....

}
Bobcat answered 20/5, 2010 at 13:39 Comment(5)
+1 - just one remark: The $delta doesn't need to be numeric, so if you want to provide a larger number of blocks, it is helpful for maintenance to use a meaningful 'name' instead.Poncho
just a small doubt... if i create multiple blocks like this, how can i invoke a particular block of a module in my page..Paletot
Does this solution require the blocks share the same template?Burkitt
@AndrewShooner No, there are some rules for block templates, that makes it possible to share the block template among all blocks that a module has created, but this is a feature, not a requirement.Bobcat
Just to clarify, I think the comment // Block 1 under $delta == 1 should be "Block 2" instead of "Block 1."Unsheathe

© 2022 - 2024 — McMap. All rights reserved.