Wie benutze ich das Argument $ Delta?
Frage
Wie benutze ich das $delta
Argument in hook_block
?
Ich habe versucht, einen zu benutzen, aber es gab keinen Effekt.
Was ist der richtige Weg, dies zu tun?
Lösung
/**
* 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;
}
}
Andere Tipps
Wie an anderer Stelle erwähnt, ermöglicht $ Delta ein Modul, viele Blöcke zurückzugeben. Es kann auch einfacher zu verstehen sein, wenn Sie berücksichtigen, dass das $ Delta nicht numerisch sein muss. Es ist einfach eine Kennung.
Sie verwenden das $ Delta zuerst, wenn Sie auf die "Liste" $ op antworten. Jeder Schlüssel im $ Block -Array, den Sie zurückgeben, ist ein $ Delta, mit dem Sie diesen bestimmten Block konfigurieren oder rendern können.
switch ($op) {
case 'list':
$block['sidebar-links']['info'] = t('Sidebar Links');
$block['footer-links']['info'] = t('Footer Links');
return $block;
Dies sagt dem Drupal-System, dass das fragliche Modul zwei Blöcke enthält, von denen eines durch "Seitenleiste" identifiziert wird, das andere durch "Fußzeile".
Dadurch werden zwei Blöcke auf der Seite Admin/Build/Block -Konfiguration gelegt. Wenn Sie beide Blöcke aktivieren, werden sie dann durch Anrufe zum "Ansicht" $ op mit dem identifizierenden Schlüssel als $ Delta gerendert:
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;
}
Als zusätzlichen Bonus führt die Verwendung von semantischen Schlüssel für Ihre Blöcke zu einer einfacheren Lesen von CSS -IDs. :)
Eine Implementierung von Hook_Block () kann mehrere Blöcke enthalten. Das Argument $ Delta gibt in der Funktion an, die aus der Ausgabe blockiert wird. Beispiel:
/**
* 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
Es ist besser, das Beispielmodul für alle Arten von Drupal -Beispielen zu sehen.http://drupal.org/project/examplesSie werden hier Blockbeispiel finden ....