Deux notes supplémentaires à ce sujet:
- Il n'est pas nécessaire de copier tous les fichiers d'icônes par défaut dans votre répertoire de thèmes.
- Si vous utilisez une icône personnalisée, elle doit être nommée de manière appropriée pour être trouvée.
Par exemple, j'avais besoin d'utiliser une icône personnalisée pour un fichier .bib (bibtex). Ce type est mappé dans file_default_mimetype_mapping () , mais il correspond par défaut à l'icône de texte par défaut car il n'y a pas d'icône spécifiquement définie pour ce type de mime (text / x-bibtex).
J'ai surchargé theme_file_icon () dans le template.php de mon thème, mais je l'ai fait pour que le chemin d'icône ne soit modifié que si nécessaire, et je n'ai pas eu à copier le répertoire d'icônes par défaut dans mon répertoire de thème:
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 . '" />';
}
La deuxième chose est que vous devez nommer l'icône de manière appropriée. Si vous conservez simplement l'utilisation de file_icon_url () , ce code de cette fonction déterminera le nom de fichier de l'icône:
// 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;
}
Donc dans mon cas, j'avais besoin de nommer mon fichier text-x-bibtex.png. Bien sûr, si vous souhaitez simplement le nommer comme vous le souhaitez (bibtex.png dans ce cas), vous pouvez simplement définir le nom du fichier manuellement:
$icon_url = $icon_directory . '/bibtex.png';
L'un ou l'autre fonctionnera, mais cette méthode vous permet de conserver les icônes par défaut là où elles se trouvent et de ne modifier que les choses si nécessaire.