Duas notas adicionais sobre isso:
- Não é necessário copiar todos os arquivos de ícones padrão no diretório de temas.
- Se você estiver usando um ícone personalizado, ele deverá ser nomeado adequadamente para ser encontrado.
Como exemplo, eu precisava usar um ícone personalizado para um arquivo .bib (bibtex). Esse tipo é mapeado em file_default_mimetype_mapping () , mas o padrão é o ícone de texto padrão, pois não há um ícone definido especificamente para esse tipo de mime (text / x-bibtex).
Substituí theme_file_icon () no template.php do meu tema, mas o fiz para que o caminho do ícone seja modificado apenas conforme necessário e não precisei copiar o diretório de ícones padrão para o diretório de temas:
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 . '" />';
}
A segunda coisa é que você precisa nomear o ícone adequadamente. Se você apenas mantiver o uso de file_icon_url () , esse código dessa função determinará o nome do arquivo para o ícone:
// 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;
}
Portanto, no meu caso, eu precisava nomear meu arquivo text-x-bibtex.png. Obviamente, se você quiser nomear apenas o que quiser (bibtex.png neste caso), você pode definir o nome do arquivo manualmente:
$icon_url = $icon_directory . '/bibtex.png';
Qualquer um funcionará, mas esse método permite que você mantenha os ícones padrão onde eles estão e apenas ajuste as coisas conforme necessário.