Hai lưu ý thêm về điều này:
- Không cần thiết phải sao chép tất cả các tệp biểu tượng mặc định vào thư mục chủ đề của bạn.
- Nếu bạn đang sử dụng một biểu tượng tùy chỉnh, nó phải được đặt tên thích hợp để tìm thấy nó.
Ví dụ, tôi có nhu cầu sử dụng biểu tượng tùy chỉnh cho tệp .bib (bibtex). Loại này được ánh xạ trong file_default_mimetype_mapping () , nhưng nó mặc định là biểu tượng văn bản mặc định vì không có biểu tượng được xác định cụ thể cho loại mime đó (text / x-bibtex).
Tôi đã ghi đè theme_file_icon () trong template.php của chủ đề, nhưng tôi đã làm điều đó để đường dẫn biểu tượng chỉ được sửa đổi khi cần và tôi không phải sao chép thư mục biểu tượng mặc định vào thư mục chủ đề của mình:
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 . '" />';
}
Điều thứ hai là bạn phải đặt tên cho biểu tượng một cách thích hợp. Nếu bạn chỉ sử dụng file_icon_url () , mã này từ hàm đó sẽ xác định tên tệp cho biểu tượng:
// 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;
}
Vì vậy, trong trường hợp của tôi, tôi cần đặt tên cho tệp của mình là text-x-bibtex.png. Tất nhiên, nếu bạn muốn đặt tên theo bất cứ thứ gì bạn muốn (bibtex.png trong trường hợp này), bạn chỉ có thể đặt tên tệp theo cách thủ công:
$icon_url = $icon_directory . '/bibtex.png';
Một trong hai sẽ hoạt động, nhưng phương pháp này cho phép bạn giữ các biểu tượng mặc định ở vị trí của chúng và chỉ điều chỉnh những thứ cần thiết.