2011-03-11 5 views
2

콘텐츠 필드 "기본 페이지"에 이미지 필드를 추가하고 "디스플레이 관리"옵션을 사용하여 페이지 상단에 표시했습니다. 그러나 이미지에 스타일이 없으며 스타일을 추가 할 수 있도록 클래스에 이미지를 추가하는 방법을 이해할 수 없습니다.Drupal의 이미지 필드에 클래스 추가 7

답변

1

CCK를 사용하는 경우 거의 이미 이미지와 연결된 클래스가 있거나 적어도이를 래핑하는 div의 클래스가 있습니다. CCK는 클래스의 모든 것을 포괄합니다. 이미지를 마우스 오른쪽 버튼으로 클릭하고 요소 검사를 클릭하여 다시 확인하십시오.

실제로 클래스를 추가해야하는 경우 Theme Developer module을 사용하여 재정의 할 테마 기능이나 템플릿 파일을 찾을 수 있습니다. Theme Developer screencast for more details을 확인하십시오.

+0

내가보기에는했지만 포함 된 div를 고려하지 않았으므로, 내가 가지고있는 클래스가있는 약 3 개의 레이어가있는 div를 발견했습니다. –

19

위의 대답은 CSS 타겟팅 만 필요한 경우에 도움이됩니다. 하지만 IMG 태그에 수업을 추가해야했습니다. 여기에 내가 문제를 해결하는 방법이있다. 이것은 아마도 최선의 방법은 아니며, 유일한 방법은 아니지만 유효한 "Drupal 방법"이며 작동합니다. 템플릿에 template.php 파일을 엽니 다.

다음 기능을 붙여넣고 사용 시나리오에 맞게 수정 및 사용자 지정해야합니다. 예를 들어 <TEMPLATENAME>을 템플릿 이름으로 바꾸고 원하는대로 클래스를 추가하거나 빼거나 다른 것들을보아야합니다.

function <TEMPLATENAME>_preprocess_image(&$variables) { 
    // If this image is of the type 'Staff Photo' then assign additional classes to it: 
    if ($variables['style_name'] == 'staff_photo') { 
     $variables['attributes']['class'][] = 'lightbox'; 
     $variables['attributes']['class'][] = 'wideborder'; 
    } 
} 

나는 클래스가 이미지에 추가되어야 할 때를 결정하기 위해 "만약"문을 만들어,하지만 당신은 당신이 좋아하지만 것을 정의 할 것이다 - 당신이 모든에 클래스를 원하는 경우 완전히 제거 할 수 만하려면 " drupal_is_front_page()가있는 경우"는면에 적용된 이미지 필드의 이미지, 또는 등, 말할 수도 MY 경우

, 나는 이미지 스타일을 생성 (구성> 미디어> 이미지 스타일) Staff Photo 용으로 사용하고 if 절을 추가하여 선호하는 클래스를 지정된 Image Style의 이미지에만 적용합니다. 나는 그것을하는 좋은 방법이라고 생각하지만, 당신이 좋아하는 것을 할 수 있습니다.

이미지 스타일이 "직원 사진"인 이미지 필드가 포함 된 노드를 볼 때마다 클래스가 마술처럼 IMG 태그에 표시됩니다. 이는 필자가 필요한 것입니다.

1

이 기능을 사용하는 경우 Drupal은 클래스를 추가하지만 앞 페이지의 "주의 : 정의되지 않은 색인 : style_name in template_preprocess_image .."오류를 봅니다.

"_style"을 붙여 넣을 수 있습니다.

function <TEMPLATENAME>_preprocess_image_style(&$variables) { 
    // If this image is of the type 'Staff Photo' then assign additional classes to it: 
    if ($variables['style_name'] == 'staff_photo') { 
     $variables['attributes']['class'][] = 'lightbox'; 
     $variables['attributes']['class'][] = 'wideborder'; 
    } 
}