Как использовать аргумент $ delta?
Вопрос
Как использовать $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Вы найдете пример блока здесь ....