Дві додаткові примітки до цього:
- Не потрібно копіювати всі файли значків за замовчуванням у свій тематичний каталог.
- Якщо ви використовуєте власну піктограму, її потрібно відповідно назвати, щоб її можна було знайти.
Як приклад, у мене виникла потреба у використанні спеціального значка для файлу .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';
Будь-яка з них буде працювати, але цей метод дозволяє зберігати піктограми за замовчуванням там, де вони є, і лише налаштовувати речі за потребою.