Advertising sustains the DA. Ads are hidden for members. Join today

Multiblock: an example

Last updated on
30 April 2025

You are browsing documentation for an older version of Drupal, which is not supported any longer, and the information may not be correct. See current documentation for Contributed modules

Here's an actual example of a Multiblock enabled block (with a bit left out for brevity):

function taxonomy_image_block($op = 'list', $delta = 0, $edit = array()) {
  global $user;
  drupal_add_css(drupal_get_path('module', 'taxonomy_image') .'/taxonomy_image.css');
  $multi_id = isset($edit['multiblock_delta']) ? '_'. $edit['multiblock_delta']['#value'] : NULL;

  switch ($op) {
    case 'list':
      $blocks[0] = array(
        'info' => t('Taxonomy Image: Node Images'),
        'cache' => BLOCK_CACHE_PER_PAGE,
        );
      return $blocks;

    case 'mb_enabled':
      return 'mb_enabled';

    case 'view':
      switch ($delta) {
        case 0:
          // Node Images.
          if (arg(0) != 'node' || !is_numeric(arg(1))) {
            return array();
          }
          $nid = (int)arg(1);
          $rows = array();
          $count = 0;
          $max = variable_get('taxonomy_image_block_max_images'. $multi_id, 3);
          $suppress = variable_get('taxonomy_image_block_suppress'. $multi_id, FALSE);
...
            $block = array(
              'subject' => strtr(variable_get('taxonomy_image_block_title', 'Term Images for "@title"'), $subs),
              'content' => theme('table', array() , $rows, array('id' => 'taxonomy_image_terms')),
              );
          }
          break;

      }
      return $block;

    case 'configure':
      switch ($delta) {
        case 0:
          $form['ti'] = array(
            '#type' => 'fieldset',
            '#title' => t('Taxonomy Image '),
            '#collapsible' => TRUE,
            );

          $form['ti']['taxonomy_image_block_max_images'] = array(
            '#type' => 'textfield',
            '#size' => 6,
            '#title' => t('Number of terms to show'),
            '#description' => t('This controls the number of terms that appear in the "Node Images" block. If you use the next option, suppressed terms do not count.'),
            '#default_value' => variable_get('taxonomy_image_block_max_images'. $multi_id, 3),
            );

          $form['ti']['taxonomy_image_block_suppress'] = array(
            '#type' => 'checkbox',
            '#title' => t('Suppress term if no image'),
            '#description' => t('Do not show the term if it has no image. Suppressed terms do not count towards the limit above.'),
            '#default_value' => variable_get('taxonomy_image_block_suppress'. $multi_id, FALSE),
            );
...
      return $form;

    case 'save':
      switch ($delta) {
        case 0:
          // Node Images.
          variable_set('taxonomy_image_block_max_images'. $multi_id, $edit['taxonomy_image_block_max_images']);
          variable_set('taxonomy_image_block_suppress'. $multi_id, $edit['taxonomy_image_block_suppress']);
...
          if (!$multi_id) {
            // Don't let blocks.module have the real title.
            db_query("UPDATE {blocks} SET title='' WHERE module='taxonomy_image' AND delta=0");
          }
          break;

      }
      return;
  } // end switch($op)
}

Help improve this page

Page status: Not set

You can: