Относительные пути в файлах .css и .js вашей темы

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

Аватар пользователя kulikovd kulikovd 4 января 2009 в 21:49

В папке с темой есть папка с изображениями.

Как должны выглядеть пути к этим изображениям в файле styles.css?

Файлы стилей как-то обрабатываются друпалом перед выдачей браузеру?

Обычно срабатывает такой путь:

background:url(../img/bg-header.jpg) no-repeat 100% 0;

но как браузер понимает откуда брать картинку? это же обычно далеко от корня sites/all/themes/mytheme/img/ и т. д.

А в этой конструкции относительный путь не срабатывает (отрывок из решеня проблемы с png в ie)

.two-nav{
        background:expression("none");
    filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../img/sr-nav.png", sizingMethod="crop");
        }

тут приходится прописывать прямой путь, но тогда тема теряет гибкость т.к. должна находиться только в определенной папке (а в друпале как известно темы можно складывать более чем в одно место)

Та же проблема с java script

function fixPNG(element)
{
        if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent))
        {
                var src;
               
                if (element.tagName=='IMG')
                {
                        if (/\.png$/.test(element.src))
                        {
                                src = element.src;
                                element.src = "/img/png.gif";
                        }
                }
                else
                {
                        src = element.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i)
                        if (src)
                        {
                                src = src[1];
                                element.runtimeStyle.backgroundImage="none";
                        }
                }
               
                if (src) element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
        }
}

Приходится в корне сайта создавать папку img и класть в нее нужный файл.

Прием с относительным путем не срабатывает Sad

Как сделать тему правильно?

Комментарии

Аватар пользователя gor gor 5 января 2009 в 6:53

Все проще.
попробуйте относительный путь например src="img/sr-nav.png".
Браузер путь отсчитывает от папки, в которой css файл был взят.

С Уважением, Gor
Drupal Developer

Аватар пользователя pvb-d pvb-d 5 января 2009 в 15:32

да, для CSS нужно указывать относительные пути
при включенной опции "Объединять CSS" drupal эти пути переназначит относительно другого расположения CSS

для JS по необходимости передавать через переменную
в коде php модуля(темы?)

drupal_add_js( 'var path_mymodule="'.base_path().drupal_get_path('module', 'mymodule').'";', "inline");

и в коде JS использовать эту переменную