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?

War es hilfreich?

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 ....

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit drupal.stackexchange
scroll top