Markup yang dihasilkan untuk menampilkan bidang file adalah (PDF dalam contoh ini):
<img src="/modules/file/icons/application-pdf.png" title="application/pdf" alt="" class="file-icon">
Saya ingin menggunakan gambar ikon yang berbeda. Bagaimana saya bisa melakukan ini tanpa mengubah konten / modul / file / ikon?
Saya kira saya bisa menyembunyikan gambar default dan menampilkan yang berbeda dengan CSS, tetapi tampaknya agak berantakan.
Dua catatan tambahan tentang ini:
Sebagai contoh, saya harus menggunakan ikon khusus untuk file .bib (bibtex). Tipe ini dipetakan dalam file_default_mimetype_mapping () , tetapi ini default ke ikon teks default karena tidak ada ikon yang ditentukan secara spesifik untuk tipe mime itu (teks / x-bibtex).
Saya mengesampingkan theme_file_icon () di template.php tema saya, tetapi saya melakukannya sehingga jalur ikon hanya dimodifikasi sesuai kebutuhan, dan saya tidak perlu menyalin direktori ikon default ke direktori tema saya:
Yang kedua adalah Anda harus memberi nama ikon dengan tepat. Jika Anda tetap menggunakan file_icon_url () , kode ini dari fungsi itu akan menentukan nama file untuk ikon:
Jadi dalam kasus saya, saya perlu memberi nama file teks-x-bibtex.png saya. Tentu saja, jika Anda ingin memberi nama saja apa pun yang Anda inginkan (bibtex.png dalam kasus ini), Anda bisa mengatur nama file secara manual:
Salah satu akan berfungsi, tetapi metode ini memungkinkan Anda untuk menjaga ikon default di mana mereka berada dan hanya men-tweak hal-hal yang diperlukan.
sumber
Saya dan tregis menyelesaikan modul File Field Ikon ini beberapa waktu lalu. Semoga ini membantu
sumber
Anda dapat (biasanya) fungsi tema preproses. Jadi jika kamu:
theme_file_icon()
dalam tema Anda.Salin seluruh
modules/file/icons
direktori ke tema Anda (saya menggunakanfile_icons
) dan tambahkan fungsi preprocess ini ke template.php tema Anda:Anda juga bisa melakukan conditional override dengan cara ini ala @ wonder95 tapi saya ingin membuat semuanya tetap sederhana.
sumber
Meskipun tidak sebersih beberapa solusi yang diberikan, cara yang sangat sederhana untuk mengatasi ini adalah dengan menggunakan pemilih atribut 'tipe' CSS3. Anda dapat menggunakan ini untuk dengan cepat menambahkan ikon khusus Anda sebagai gambar latar belakang ke tautan Anda. Hasilnya bahwa keduanya ditautkan ke file target. Anda kemudian dapat menyembunyikan gambar asli. Saya melakukan ini untuk mendapatkan penampilan berikut:
Ini adalah CSS yang saya gunakan untuk mencapai hasil di atas:
Dalam contoh saya, saya menunjukkan bidang file menggunakan tampilan.
sumber