드루팔 (Drupal 6)에는 사용자 정의 블록이 있습니다.이 블록은 사용자 정의 오른쪽 사이드 바 영역에 이름을 지정하고 배치했습니다. 이 블록의 ID는 ($block_id
도우미 변수 인 에서 발견되었습니다.)영역간에 이동하면 블록의 ID가 변경됩니까?
이 블록의 출력을 무시하고보기를 표시하므로 마크 업을 변경해야합니다. 이제
myTheme_preprocess_block(&$vars) {
$this_block_id = $vars['id']; /* region-independent ID (for reliability) */
$vars['template_files'] = array();
switch ($this_block_id) {
case 7:
$vars['template_files'][] = 'block-my-override-template';
break;
default:
/* take no action */
}
}
, 나는 사용자 지정 지역이 아닌 기본입니다 오른쪽 사이드 바 지역이 블록을 (이동했습니다 나는 따라서 블록의 고유 한 ID를 검색 myTheme_preprocess_block()
라는 template.php
의 전처리 기능이 있습니다 하나는 Garland와 함께 제공)을 사용자 정의 이름이있는 바닥 글 영역으로 가져옵니다. 갑자기 내 우선 적용 템플릿 파일 block-my-override-template.tpl.php
이 더 이상 참조되지 않습니다.
에서 고유 한 블록 ID를 출력하고 마술처럼이 블록에 이 변경되었습니다.의 ID가 7에서 13으로 변경되었습니다. 똑 바른 얼굴로, 더 적은! 이 블록을 오른쪽 사이드 바 영역으로 되 돌리면 블록이 ID 7로 반환되고 모든 코드가 다시 작동하기 시작합니다.
내 질문은 : 한 지역에서 다른 지역으로 이동할 때 고유 ID가 변경되면 어떻게 블록을 고유하게 식별 할 수 있습니까?
현재 Drupal의 블록 내부에 고유 한 텍스트 태그를 생성하고 있습니다. '{JD_MY_BLOCKNAME}'을 호출 한 다음 위와 유사한 함수를 사용하여 블록 ID 대신이를 감지하십시오. 그러나 그것은 매우 성가신 것처럼 보입니다. –