El marcado generado para mostrar un campo de archivo es (PDF en este ejemplo):
<img src="/modules/file/icons/application-pdf.png" title="application/pdf" alt="" class="file-icon">
Me gustaría usar una imagen de icono diferente. ¿Cómo podría hacer esto sin cambiar el contenido de / modules / file / icons?
Supongo que podría ocultar la imagen predeterminada y mostrar una diferente con CSS, pero parece un poco desordenada.
Dos notas adicionales sobre esto:
Como ejemplo, tuve la necesidad de usar un icono personalizado para un archivo .bib (bibtex). Este tipo está mapeado en file_default_mimetype_mapping () , pero su valor predeterminado es el icono de texto predeterminado ya que no hay un icono específicamente definido para ese tipo de mime (text / x-bibtex).
Reemplacé theme_file_icon () en el template.php de mi tema, pero lo hice para que la ruta del ícono solo se modifique según sea necesario, y no tuve que copiar el directorio de íconos predeterminado a mi directorio de temas:
Lo segundo es que debes nombrar el ícono apropiadamente. Si solo mantiene el uso de file_icon_url () , este código de esa función determinará el nombre del archivo para el icono:
Entonces, en mi caso, necesitaba nombrar mi archivo text-x-bibtex.png. Por supuesto, si desea nombrarlo como quiera (bibtex.png en este caso), puede configurar el nombre del archivo manualmente:
Cualquiera de los dos funcionará, pero este método le permite mantener los iconos predeterminados donde están y solo modificar las cosas según sea necesario.
fuente
Tregis y yo terminamos este módulo de Iconos de campo de archivo hace un tiempo. Espero que esto ayude
fuente
Puede (generalmente) preprocesar funciones de tema. Así que si usted:
theme_file_icon()
tu tema.Copie todo el
modules/file/icons
directorio a su tema (lo uséfile_icons
) y agregue esta función de preproceso a la plantilla de su tema.php:También podría hacer anulaciones condicionales de esta manera ala @ wonder95 pero quería mantener las cosas simples.
fuente
Si bien no es tan limpio como algunas de las soluciones dadas, una forma realmente simple de lidiar con esto es hacer uso del selector de atributos 'tipo' CSS3. Puede usar esto para agregar rápidamente su icono personalizado como imagen de fondo a su enlace. El resultado es que ambos están vinculados al archivo de destino. Luego puede ocultar la imagen original. Hice esto para obtener la siguiente apariencia:
Este es el CSS que utilicé para lograr los resultados anteriores:
En mi ejemplo, estaba mostrando los campos del archivo usando vistas.
fuente