it-swarm-ko.tech

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

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

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

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

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

11
pushka

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

"file_icon_directory"변수를 아이콘의 경로로 file_icon_path 함수는 해당 변수에서 경로를 찾습니다.

10
jhedstrom

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

  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';

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

4
wonder95

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

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

1
Rudá Maia

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

Screenshot of result

이것은 위의 결과를 달성하는 데 사용한 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; }

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

0
Paul Trotter

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

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

전체 modules/file/icons 디렉토리를 테마에 복사하고 (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
Cottser