Dos notas adicionales sobre esto:
- No es necesario copiar todos los archivos de iconos predeterminados a su directorio de temas.
- Si está utilizando un icono personalizado, debe tener un nombre apropiado para poder encontrarlo.
Como ejemplo, tuve la necesidad de usar un icono personalizado para un archivo .bib (bibtex). Este tipo está mapeado en file_default_mimetype_mapping () , pero su valor predeterminado es el icono de texto predeterminado ya que no hay un icono específicamente definido para ese tipo de mime (text / x-bibtex).
Reemplacé theme_file_icon () en el template.php de mi tema, pero lo hice para que la ruta del ícono solo se modifique según sea necesario, y no tuve que copiar el directorio de íconos predeterminado a mi directorio 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 . '" />';
}
Lo segundo es que debes nombrar el ícono apropiadamente. Si solo mantiene el uso de file_icon_url () , este código de esa función determinará el nombre del archivo para el icono:
// 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;
}
Entonces, en mi caso, necesitaba nombrar mi archivo text-x-bibtex.png. Por supuesto, si desea nombrarlo como quiera (bibtex.png en este caso), puede configurar el nombre del archivo manualmente:
$icon_url = $icon_directory . '/bibtex.png';
Cualquiera de los dos funcionará, pero este método le permite mantener los iconos predeterminados donde están y solo modificar las cosas según sea necesario.