2010-12-21 1 views
2

드루팔에 실패, 나는 (로그인) 배치 할 수이 어디에서나 차단하는 데 사용 :삽입 블록이 어디 그것은 내가 드루팔 6 드루팔 (7) 주변에 연주 한 일주일 지났 7

$block = module_invoke('user', 'block', 'view', 0); 
$vars['login'] = $block['content']; 

나는 델타 변경 '0'드루팔 7 :

$block = module_invoke('user', 'block', 'view', 'login'); // I have changed from 0 to 'login' for delta at drupal 7 
$vars['login'] = $block['content']; 

치명적인 오류에서 두 결과. module_invoke에 대해 알지 못하는 변경 사항이 있습니까? http://api.drupal.org/api/drupal/includes--module.inc/function/module_invoke/7

어떤 힌트라도 대단히 감사하겠습니다.

$block = module_invoke('user', 'block_view', 'login'); 
$vars['login'] = $block['content']; 

을 또는 왜 직접 양식을 사용하지 :

답변

6

hook_block ($의 영업 이익) 드루팔 7 시도에() hook_block_op 변경되었습니다

$vars['login'] = drupal_get_form('user_login_block'); 
+0

감사합니다. 나는 누군가 그것을 알고 있었다는 것을 안다. "render"또는 "drupal_render"만 사용하면됩니다. 그렇지 않으면 빈 Array가 생깁니다. 이 경우 "렌더링"또는 "drupal_render"중 어떤 것을 사용해야하는지 알고 있습니까? 다시 한 번 감사드립니다 – swan

+0

아, D7에서 기본적으로 render()를 사용하십시오. –

2

드루팔 7은 지금 모든 개체를 유지 마지막 출력까지 배열을 렌더링하므로 내용을 더 잘 제어 할 수 있습니다. 최종 출력을 얻으려면 render() 함수를 사용하십시오. 심플 스.

<?php 
       $block = module_invoke('user', 'block_view', 'login'); 
       print render($block); 
    ?> 
+0

네, lovely 드루팔 (Drupal lovely) 7. 감사합니다. – swan

1

드루팔 (Drupal theming)을 존중하는보다 나은 솔루션입니다.

function block_render($module, $block_id) { 
    $block = block_load($module, $block_id); 
    $block_content = _block_render_blocks(array($block)); 
    $build = _block_get_renderable_array($block_content); 
    $block_rendered = drupal_render($build); 
    return $block_rendered; 
} 
관련 문제