Вопрос

Как использовать $delta аргумент в hook_block?

Я пытался использовать один, но не было никакого эффекта.

Как это правильный способ сделать это?

Это было полезно?

Решение

/**
 * Implementation of hook_block().
 */
function YOURMODULE_block($op = 'list', $delta = 0, $edit = array()) {
  switch ($op) {
    case 'list':
      $blocks[0]['info'] = t('Block #1 name');
      $blocks[1]['info'] = t('Block #2 name');
      return $blocks;
    case 'view':
      $block = array();
      switch ($delta) {
        case 0:
          $block['content'] = t('Hello for block #1');
          break;
        case 1:
          $block['content'] = t('Hello for block #2');
          break;
      }
      return $block;
  }
}

Другие советы

Как отмечено в другом месте, $ Delta позволяет одному модулю возвращать много блоков. Также может быть легче понять, если вы помните, что дельта $ не должна быть числовой. Это просто идентификатор.

Вы используете Delta First, когда отвечаете на «List» $ OP. Каждое ключ в массиве $ Block, который вы возвращаете, будет A $ Delta, которую можно использовать для настройки или отображения этого конкретного блока.

switch ($op) {
    case 'list':
      $block['sidebar-links']['info'] = t('Sidebar Links');
      $block['footer-links']['info'] = t('Footer Links');
      return $block;

Что это говорит о системе Drupal, так это то, что рассматриваемый модуль имеет два блока, один из которых идентифицируется «боковой панелью», а другой-«нижнечетными связями».

Это поместит два блока на странице конфигурации Admin/Build/Block. Если вы включите оба блока, они будут переданы вызовами в «View» $ OP с идентификационным ключом как Delta:

    case 'view':
      switch ($delta) {
        case 'sidebar-links': 
          $block['subject'] = t('Sidebar Links');
          $block['content'] = "super weak";
          break;
        case 'footer-links':
          $block['subject'] = t('Footer Links');
          $block['content'] = "super weak";
          break;
      }
      return $block;
  }

В качестве дополнительного бонуса, использование семантических ключей для ваших блоков приведет к тому, что он будет легким для чтения CSS ID. :)

Реализация hook_block () может содержать несколько блоков. Аргумент $ delta указывает на функцию, которая блокирует вывод. Пример:

/**
 * Implementation of hook_block().
*/
function fightfi_block($op = 'list', $delta = 0) {
  $block = array();
  switch ($op) {
    case 'list':
      $block[0]['info'] = t('Sidebar Links');
      $block[1]['info'] = t('Footer Links');
      return $block;
    case 'view':
      switch ($delta) {
        case 0: 
          $block['subject'] = t('Sidebar Links');
          $block['content'] = "super weak";
          break;
        case 1:
          $block['subject'] = t('Footer Links');
          $block['content'] = "super weak";
          break;
      }
      return $block;
  }
} // end function fightfi_block

Лучше увидеть пример модуля для всех видов примеров Drupal ..http://drupal.org/project/examplesВы найдете пример блока здесь ....

Лицензировано под: CC-BY-SA с атрибуция
Не связан с drupal.stackexchange
scroll top