A marcação gerada para exibir um campo de arquivo é (PDF neste exemplo):
<img src="/modules/file/icons/application-pdf.png" title="application/pdf" alt="" class="file-icon">
Eu gostaria de usar uma imagem de ícone diferente. Como eu poderia fazer isso sem alterar o conteúdo de / modules / file / icons?
Acho que poderia ocultar a imagem padrão e exibir uma imagem diferente com CSS, mas parece um pouco confusa.
Duas notas adicionais sobre isso:
Como exemplo, eu precisava usar um ícone personalizado para um arquivo .bib (bibtex). Esse tipo é mapeado em file_default_mimetype_mapping () , mas o padrão é o ícone de texto padrão, pois não há um ícone definido especificamente para esse tipo de mime (text / x-bibtex).
Substituí theme_file_icon () no template.php do meu tema, mas o fiz para que o caminho do ícone seja modificado apenas conforme necessário e não precisei copiar o diretório de ícones padrão para o diretório de temas:
A segunda coisa é que você precisa nomear o ícone adequadamente. Se você apenas mantiver o uso de file_icon_url () , esse código dessa função determinará o nome do arquivo para o ícone:
Portanto, no meu caso, eu precisava nomear meu arquivo text-x-bibtex.png. Obviamente, se você quiser nomear apenas o que quiser (bibtex.png neste caso), você pode definir o nome do arquivo manualmente:
Qualquer um funcionará, mas esse método permite que você mantenha os ícones padrão onde eles estão e apenas ajuste as coisas conforme necessário.
fonte
Eu e Tregis obtivemos este módulo File Field Icons há algum tempo. Espero que isto ajude
fonte
Você pode (geralmente) pré-processar as funções do tema. Então, se você:
theme_file_icon()
seu tema.Copie o
modules/file/icons
diretório inteiro para o seu tema (eu useifile_icons
) e adicione esta função de pré-processo ao template.php do seu tema:Você também pode fazer substituições condicionais dessa maneira ala @ wonder95, mas eu queria manter as coisas simples.
fonte
Embora não seja tão limpo quanto algumas das soluções fornecidas, uma maneira realmente simples de lidar com isso é fazer uso do seletor de atributo 'type' do CSS3. Você pode usar isso para adicionar rapidamente seu ícone personalizado como imagem de plano de fundo ao seu link. O resultado é que ambos estão vinculados ao arquivo de destino. Você pode ocultar a imagem original. Fiz isso para obter a seguinte aparência:
Este é o CSS que eu usei para alcançar os resultados acima:
No meu exemplo, eu estava mostrando os campos do arquivo usando visualizações.
fonte