Due note aggiuntive su questo:
- Non è necessario copiare tutti i file icona predefiniti nella directory del tema.
- Se si utilizza un'icona personalizzata, è necessario che abbia un nome appropriato affinché possa essere trovata.
Ad esempio, avevo bisogno di usare un'icona personalizzata per un file .bib (bibtex). Questo tipo è mappato in file_default_mimetype_mapping () , ma per impostazione predefinita è l'icona di testo predefinita poiché non esiste un'icona specificatamente definita per quel tipo di mime (text / x-bibtex).
Ho scavalcato theme_file_icon () nel template.php del mio tema, ma l'ho fatto in modo che il percorso dell'icona fosse modificato solo se necessario, e non dovevo copiare la directory delle icone predefinita nella mia cartella del tema:
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 seconda cosa è che devi nominare l'icona in modo appropriato. Se mantieni solo l'uso di file_icon_url () , questo codice da quella funzione determinerà il nome del file per l'icona:
// 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;
}
Quindi nel mio caso, avevo bisogno di nominare il mio file text-x-bibtex.png. Naturalmente, se vuoi semplicemente nominarlo come preferisci (bibtex.png in questo caso), puoi semplicemente impostare manualmente il nome del file:
$icon_url = $icon_directory . '/bibtex.png';
O uno funzionerà, ma questo metodo ti consente di mantenere le icone predefinite dove sono e modificare le cose solo se necessario.