2016-10-17 5 views

답변

1

아래 코드를 참조하십시오. 명심해야 할 점은 최적의 사용을 위해 다음과 같습니다

  1. 블록이 이미 존재해야하며
  2. 에 "모든 drush의 CC"/ 투명 캐시를 가능하게 각각 해제 후 지역 예를 들어 "before_content"
  3. 에 할당 할 수 블록이 기억 재 활성화는 위치에게의
  4. 귀하의 블록 델타가 될 수 있습니다 숫자 만 또는 숫자 알파

함 블록 :

db_update('block') 
      ->fields(array(
      'status' => 0, 
      'region' => 'disabled',    
      ) 
     ) 
      ->condition('delta', 'client-block-number_here') 
      ->execute(); 

블록을 사용 :

db_update('block') 
      ->fields(array(
      'status' => 1, 
      'region' => 'before_content',    
      ) 
     ) 
      ->condition('delta', 'client-block-number_here') 
      ->execute(); 
0

당신이 블록을 사용하지 않으려는 이유를 진짜 이유는? 사용자에 따라 블록을 표시하려면 db 공격을 수행하는 것이 좋은 해결책이 아닙니다.

지역 및 전처리 시스템을 사용하면 그럴 수 있다고 생각합니다. 한 영역에 아무 것도 표시 할 수 없으며, 블록, 텍스트 또는 은 표시되지 않습니다..

예 :

function HOOK_preprocess_node(&$variables, $hook){ 
    //check the current user code... 
    //.. 
    if (_condition_is_ok){ 
     $block = module_invoke('module', 'block_view', 'block_name'); 
     $variables["my_block"] = $block["content"]; 
    } 
} 

당신은 그나마 변수가 내가 더 좋은 방법은 그렇게 생각하지 않습니다 당신의 TPL :

설정하지만 그건되어 있는지 확인하는 것을 잊지 경우 db_update, db_update을 db에 직접 쓰고 drupal 엔진을 사용하십시오.

+0

내 특정 요구 사항은 CRON 작업 (즉, 서버에서 실행 중)을 기반으로했습니다 (예약 됨). 완벽하게 일했습니다. –