Два дополнительных примечания по этому вопросу:
- Нет необходимости копировать все файлы значков по умолчанию в каталог вашей темы.
- Если вы используете пользовательский значок, он должен быть соответствующим образом назван, чтобы его можно было найти.
Как пример, мне нужно было использовать пользовательский значок для файла .bib (bibtex). Этот тип отображается в file_default_mimetype_mapping () , но по умолчанию используется значок текста по умолчанию, поскольку для этого типа MIME специально не определен значок (text / x-bibtex).
Я переопределил theme_file_icon () в template.php моей темы, но я сделал это так, чтобы путь к значкам изменялся только по мере необходимости, и мне не пришлось копировать каталог значков по умолчанию в каталог моей темы:
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';
Любой из них будет работать, но этот метод позволяет вам сохранять значки по умолчанию там, где они есть, и настраивать их только по мере необходимости.