[РЕШЕНО] Модуль file: иконки для файлов с расширением djvu

Главные вкладки

Аватар пользователя XDmitry XDmitry 24 сентября 2011 в 14:40

Всем привет! Если кто-нибудь сталкивался с подобной проблемой, просьба откликнуться. Речь идет о встроенном модуле file в Drupal 7. При загрузке разного рода файлов, к каждому (распространенному) расширению присваивается соответствующая иконка, но вот для расширения файлов djvu («дежа-вю») иконок нет. Иконки лежат по пути: modules/file/icons. Необходимый код, соответственно в файлах модуля file. Помогите решить проблему. Спасибо.

Комментарии

Аватар пользователя Plazik Plazik 25 сентября 2011 в 10:10

"XDmitry" wrote:
Интересно. Можно подробнее?

Скрываешь стандартную иконку файла через css.
Потом типо так:

 span.file a[href$=".xls"] {
    background: url("images/exel.png") no-repeat scroll 0 0 transparent;
    padding: 0 0 0 18px;
}
Аватар пользователя XDmitry XDmitry 25 сентября 2011 в 14:31

Картинка вставляется именно для djvu расширения файла в url. Спасибо!

span.file a[href$=".djvu"] {
    background:  url("/modules/file/icons/djvu-file.png") no-repeat scroll 0 0 transparent;
    display: inline;
    padding-left: 20px;
    line-height: 15px;
}

Только вот никак не получается скрыть стандартную иконку, которая лежит: /modules/file/icons/image-x-generic.png. Она присваивается "незнакомым" расширениям файлов. Как ее скрыть для .djvu расширения?

Аватар пользователя Plazik Plazik 25 сентября 2011 в 17:58

"XDmitry" wrote:
Только вот никак не получается скрыть стандартную иконку, которая лежит: /modules/file/icons/image-x-generic.png

display: none;

Аватар пользователя XDmitry XDmitry 25 сентября 2011 в 18:46

Smile Ну это понятно. Я не про свойство и значение, а про селектор. Что прописать в селекторе, чтобы применить display: none; именно к этой картинке.

Аватар пользователя XDmitry XDmitry 26 сентября 2011 в 13:07

Firebug’ом я пользуюсь около года Smile На самом деле вопрос далеко не простой. Здесь получается скрыть только тег img, а это означает, что все иконки будут скрыты, потому как в тег img система вставляет картинку соответствующую закачиваемому расширению. Если формат pdf – картинку с pdf. Если html, значит картинку html… Но в разметке это всегда тег img и путь src=”путь”. Поэтому, либо есть все картинки, либо их нет вообще: «display: none;». Либо CSS позволяет скрыть картинку, определяя ее на основании заданного пути (может это в CSS3 есть?)
Вижу два решения. 1-е, это переделать иконку (не изменяя имени), которая присваивается «неизвестным» расширениям на иконку соответствующую расширению .djvu. Это в том случае, если не предполагается использование других «неизвестных» расширений файлов (иначе им тоже присвоится иконка расширения djvu).
2-е решение – это использовать стили для каждого расширения, а стандартные иконки скрыть. Например:

span.file img {
    display: none;
}
span.file a[href$=".djvu"] {
    background:  url("/modules/file/icons/djvu.png")  no-repeat scroll 0 0 transparent;
    display: inline;
    padding-left:20px;
    line-height:15px;
}

span.file a[href$=".pdf"] {
    background:  url("/modules/file/icons/pdf.png")  no-repeat scroll 0 0 transparent;
    display: inline;
    padding-left:20px;
    line-height:15px;
}

span.file a[href$=".html"] {
    background:  url("/modules/file/icons/html.png")  no-repeat scroll 0 0 transparent;
    display: inline;
    padding-left:20px;
    line-height:15px;
}

span.file a[href$=".txt"] {
    background:  url("/modules/file/icons/txt.png")  no-repeat scroll 0 0 transparent;
    display: inline;
    padding-left:20px;
    line-height:15px;
}

Вам спасибо за подсказку с a[href$="…"].