it-swarm-ko.tech

$ delta 인수를 사용하는 방법?

$delta에서 hook_block 인수를 어떻게 사용합니까?

나는 그것을 사용하려고 시도했지만 아무런 효과가 없었습니다.

이를 수행하는 올바른 방법은 무엇입니까?

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

다른 곳에서 언급했듯이 $ delta는 하나의 모듈이 많은 블록을 반환하도록 허용합니다. $ delta가 숫자 일 필요가 없다는 것을 명심하면 이해하기가 더 쉬울 수도 있습니다. 단순히 식별자입니다.

'list'$ op에 응답 할 때 먼저 $ delta를 사용하십시오. 반환하는 $ block 배열의 각 키는 해당 특정 블록을 구성하거나 렌더링하는 데 사용할 수있는 $ 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 config 페이지에 두 개의 블록이 배치됩니다. 두 블록을 모두 활성화하면 식별 키가 $ delta 인 'view'$ op에 대한 호출에 의해 블록이 렌더링됩니다.

    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를 더 쉽게 읽을 수 있습니다. :)

9
Josh Koenig

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

모든 종류의 drupal 예제에 대한 예제 모듈을 보는 것이 좋습니다. http://drupal.org/project/examples 여기에 블록 예제가 있습니다. ....

1
mohit_rocks