2017-05-14 2 views
0

hook_block_view에서 일부 메시지를 표시해야합니다. Drupal 7 클래스 레지스트리 지우기 후 메시지 만 표시

drupal_set_message('Block should have loaded'); 

가 작동하지 않습니다 같은 메시지를 설정하는 기능에

때문에. 클래스 레지스트리를 지우면 한 번 작동 한 다음 표시되지 않을 때마다 작동합니다. 페이지가 렌더링되기 전에 drupal이 리디렉션되는 것처럼 보입니다. 이 함수가 끝날 때 drupal_exit();을 사용하면 지금까지 모든 것이 정확하다는 것을 보여 주지만 최종 결과는 나오지 않습니다.

편집 : 내가 던지면 작동합니다. drupal_flush_all_caches 그렇지만 분명히 느리게 진행됩니다. 일종의 캐싱 문제가있는 것 같습니다.

+0

'hook_block_view'는 많은 기능을 수행하기 전에 실행되는 후크입니다. 왜이 메시지를 블록보기에 표시해야합니까? 당신의 마지막 목적은 무엇입니까? – Fky

답변

1
은에 '캐시'를 설정하여 hook_block_info() 아래에있는 블록 전체 캐싱을 해제

:

다음
function hook_block_info() { 

    $blocks = array(); 

    $blocks['abc'] = array(
     'info' => t('test block'), 
     'visibility' => 0, 
     'status' => TRUE, 
     'region' => 'none', 
     'weight' => 99, 
     'cache' => DRUPAL_NO_CACHE, 
    ); 

    return $blocks; 
} 

이 ... hook_block_view 내

drupal_set_message('Block should have loaded'); 

를 작성하고 지금 확인하려고 DRUPAL_NO_CACHE

도움이 될 수 있습니다.

+0

예, 원래 사용자 당 캐시되도록 설정되었습니다. 감사! – brianxautumn