파일 필드 아이콘을 변경하는 방법 (코어를 변경하지 않고)?


11

파일 필드를 표시하기 위해 생성 된 마크 업은 (이 예에서는 PDF)입니다.

<img src="/modules/file/icons/application-pdf.png" title="application/pdf" alt="" class="file-icon">

다른 아이콘 이미지를 사용하고 싶습니다. / modules / file / icons의 내용을 변경하지 않고 어떻게 할 수 있습니까?

기본 이미지를 숨기고 CSS로 다른 이미지를 표시 할 수는 있지만 약간 지저분 해 보입니다.

답변:


10

theme_file_icon테마에서 재정의 하고 다른 아이콘 이미지를 지정할 수 있습니다 . file_icon_path코어가 사용할 아이콘을 결정하는 방법에 대한 참조 를 참조 하십시오 .

file_icon_path함수가 해당 변수에서 경로를 찾을 때 "file_icon_directory"변수를 아이콘의 경로로 설정할 수도 있습니다 .


무엇 jhedstrom에 이어 것은 내가이 솔루션을 달성하기 위해 위의 두 가지 기능을 사용하는 방법에 대한 초보자 블로그 작성한 말한다 여기를 . 누군가에게 도움이되기를 바랍니다.
Alison

4

이것에 대한 두 가지 추가 참고 사항 :

  1. 모든 기본 아이콘 파일을 테마 디렉토리에 복사 할 필요는 없습니다.
  2. 사용자 정의 아이콘을 사용하는 경우 아이콘을 찾으려면 적절하게 이름을 지정해야합니다.

예를 들어, .bib (bibtex) 파일에 사용자 정의 아이콘을 사용해야했습니다. 이 유형은 file_default_mimetype_mapping ()에 매핑 되지만 해당 MIME 유형 (text / x-bibtex)에 대해 특별히 정의 된 아이콘이 없으므로 기본 텍스트 아이콘으로 기본 설정됩니다.

내 테마의 template.php에서 theme_file_icon ()을 무시하지만 필요한 경우에만 아이콘 경로가 수정되도록 기본 아이콘 디렉토리를 내 테마 디렉토리에 복사 할 필요가 없었습니다.

function mytheme_file_icon($variables) {
  $file = $variables['file'];
  $icon_directory = $variables['icon_directory'];

  $mime = check_plain($file->filemime);

  if ($mime == 'text/x-bibtex') {
    $icon_directory = drupal_get_path('theme', 'mytheme') . '/images';
  }

  $icon_url = file_icon_url($file, $icon_directory);
  return '<img class="file-icon" alt="" title="' . $mime . '" src="' . $icon_url . '" />';
}

두 번째는 아이콘 이름을 적절하게 지정해야한다는 것입니다. file_icon_url ()을 계속 사용하면 해당 함수의이 코드는 아이콘의 파일 이름을 결정합니다.

// For a few mimetypes, we can "manually" map to a generic icon.
$generic_mime = (string) file_icon_map($file);
$icon_path = $icon_directory . '/' . $generic_mime . '.png';
if ($generic_mime && file_exists($icon_path)) {
  return $icon_path;
}

따라서 필자의 경우 파일 이름을 text-x-bibtex.png로 지정해야했습니다. 물론 원하는대로 이름을 지정하려면 (이 경우 bibtex.png) 파일 이름을 수동으로 설정하면됩니다.

$icon_url = $icon_directory . '/bibtex.png';

어느 쪽이든 작동하지만이 방법을 사용하면 기본 아이콘을 그대로 유지하고 필요에 따라 조정할 수 있습니다.


1

나와 tregis 는이 파일 필드 아이콘 모듈을 얼마 전에 수행했습니다. 도움이 되었기를 바랍니다

이 모듈은 기본 파일 필드 아이콘을 변경하는 기능을 추가합니다. 이 아이콘에 포함 된 핵심 아이콘 패키지를 사용하거나 사용자 정의 아이콘 패키지를 정의 할 수 있습니다.


0

테마 기능을 전처리 할 수 ​​있습니다. 따라서 당신이 :

  1. 모든 아이콘을 테마에 복사하여 하나 이상의 아이콘을 무시해도됩니다.
  2. theme_file_icon()테마 를 재정의하지 않아도 됩니다.

전체 modules/file/icons디렉토리를 테마에 복사하고 (I used file_icons)이 전처리 기능을 테마의 template.php에 추가하십시오.

/**
 * Implements hook_preprocess_HOOK() for theme_file_icon().
 *
 * Change the icon directory to use icons from this theme.
 */
function MYTHEME_preprocess_file_icon(&$variables) {
  $variables['icon_directory'] = drupal_get_path('theme', 'MYTHEME') . '/file_icons';
}

aa @ wonder95와 같은 조건부 재정의를 수행 할 수도 있지만 일을 단순하게 유지하고 싶었습니다.


0

주어진 솔루션만큼 깨끗하지는 않지만 CSS3 'type'속성 선택기를 사용하는 간단한 방법입니다. 이를 사용하여 사용자 정의 아이콘을 배경 이미지로 링크에 빠르게 추가 할 수 있습니다. 둘 다 대상 파일에 링크 된 결과입니다. 그런 다음 원본 이미지를 숨길 수 있습니다. 나는 다음과 같은 모습을 얻기 위해 이것을했다.

결과 스크린 샷

이것은 위의 결과를 달성하는 데 사용한 CSS입니다.

.views-field-field-image-files img.file-icon {display:none;}
.views-field-field-image-files a {padding-left: 100px; height: 80px; display: block; margin-bottom: 20px;}
.views-field-field-image-files a[type*="application/pdf"] {background: url(../img/icons/file-icon-pdf.gif) no-repeat; }
.views-field-field-image-files a[type*="application/zip"] {background: url(../img/icons/file-icon-zip.gif) no-repeat; }
.views-field-field-image-files a[type*="application/ppt"] {background: url(../img/icons/file-icon-ppt.gif) no-repeat; }
.views-field-field-image-files a[type*="application/pptx"] {background: url(../img/icons/file-icon-ppt.gif) no-repeat; }

이 예에서는 뷰를 사용하여 파일 필드를 보여주었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.