it-swarm-eu.dev

Jak použít argument $ delta?

Jak mohu použít argument $delta V hook_block?

Snažil jsem se použít jeden, ale neměl žádný účinek.

Jaký je správný způsob, jak toho dosáhnout?

5
enjoylife
/**
 * 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;
  }
}
3
Nikit

Jak je uvedeno jinde, $ delta umožňuje jednomu modulu vrátit mnoho bloků. To může být také snazší pochopit, pokud budete mít na paměti, že $ delta nemusí být číselné. Je to prostě identifikátor.

Nejprve použijete delta $, když odpovíte na 'list' $ op. Každý klíč v poli $ block, který vrátíte, bude $ delta, kterou lze použít ke konfiguraci nebo vykreslení konkrétního bloku.

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

Co to říká systému Drupal) je, že dotyčný modul má dva bloky, z nichž jeden je označen jako „sidebar-links“, druhý pomocí „footer-links“.

Tím se umístí dva bloky na konfigurační stránku správce/sestavení/blokování. Pokud povolíte oba bloky, budou pak vykresleny voláním do 'view' $ op s identifikačním klíčem jako $ 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;
  }

Jako bonus navíc, použití sémantických klíčů pro vaše bloky povede k snadnějšímu čtení id CSS. :)

9
Josh Koenig

Implementace HOOK_block () může obsahovat více bloků. Argument $ delta určuje funkci, která blokuje výstup. Příklad:

/**
 * 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
2
markdorison

Je lepší vidět ukázkový modul pro všechny druhy drupal příklady .. http://drupal.org/project/examples Zde najdete příklad bloku ....

1
mohit_rocks