Вход

Просмотр полной версии : Подключение разных стилей


telekomstoy
30.03.2015, 21:00
Здравствуйте. Такая ситуация:
Для страницы нужно подключать разные стили, в зависимости от профиля пользователя. На самой странице подключаю стили таким образом:

<link type="text/css" href="http://site.ru/test.php/?profile=%PROFILE%" rel="stylesheet" media="all">

%PROFILE% - возвращает id пользователя.

Соответственно, на php-скрипт отправляется id, скрипт отдаёт нужные стили.

Конструкция работает в хроме (и, думаю, во всех web-kit'овских браузерах). А вот в не web-kit'овской опере, лисе и ие стили не цепляются.

В чём может быть проблема?

ksa
31.03.2015, 08:34
В чём может быть проблема?
Смотря что ты там тем ПХП намастыриваешь...

telekomstoy
31.03.2015, 12:30
Смотря что ты там тем ПХП намастыриваешь...

Скрипт, учитывая переданный параметр, возвращает строку с испортом нужного файла стилей
@import url('style.css');

ksa
31.03.2015, 13:34
Скрипт, учитывая переданный параметр, возвращает строку с испортом нужного файла стилей
@import url('style.css');
Согласно этой статейки (http://htmlbook.ru/css/import) все поддерживается современными браузерами...

telekomstoy
31.03.2015, 13:51
Согласно этой статейки (http://htmlbook.ru/css/import) все поддерживается современными браузерами...

В том то и дело. Вроде как поддерживается всё, а на практике где-то есть косяк. Всемогущий гугл как-то тоже не особо кишит знаниями по этому вопросу.

Пытался найти ответ на вопрос, не лагают ли браузеры с файлом стиле в формате php - тоже что-то ничего не нашёл.

ksa
31.03.2015, 14:03
на практике где-то есть косяк
Делай тестовый пример (простой и полный) выкладывай сюда...

telekomstoy
01.04.2015, 00:16
Там и нет практически ничего. Файл php:


<?php
$profile = $_GET['profile'];

if ($profile == '2') {echo 'import url("style1.css")';}
elseif ($profile == '4') {echo 'import url("style4.css")';}
elseif ($profile == '50') {echo 'import url("style3.css")';}
else {echo 'import url("style.css")';}
?>


Подключение уже написал выше

Vlasenko Fedor
01.04.2015, 03:01
switch ($_GET['profile']) {
case 2:
$style = 'style1.css';
break;
case 4:
$style = 'style4.css';
break;
case 50:
$style = 'style3.css';
break;
default:
$style = 'style.css';
break;
}


<link type="text/css" href="<?php echo $style;?>" rel="stylesheet" media="all">

telekomstoy
01.04.2015, 04:33
switch ($_GET['profile']) {
case 2:
$style = 'style1.css';
break;
case 4:
$style = 'style4.css';
break;
case 50:
$style = 'style3.css';
break;
default:
$style = 'style.css';
break;
}


<link type="text/css" href="<?php echo $style;?>" rel="stylesheet" media="all">

К сожалению, данный метод не подходит, т.к. на сервере, на котором лежит страница, нет возможности использовать php.

jsnb
01.04.2015, 07:12
Там и нет практически ничего. Файл php:


<?php
$profile = $_GET['profile'];

if ($profile == '2') {echo 'import url("style1.css")';}
elseif ($profile == '4') {echo 'import url("style4.css")';}
elseif ($profile == '50') {echo 'import url("style3.css")';}
else {echo 'import url("style.css")';}
?>

Во-первых, где собака перед import? А, во-вторых, пропиши header('Content-Type: text/css'); в начало скрипта, чтобы правильный MIME-тип был. Ну и току с запятой после закрывающей скобки для url надо поставить. В общем, как-то так:

<?php
header('Content-Type: text/css');
$profile = $_GET['profile'];

if ($profile == '2') {echo '@import url("style1.css");';}
elseif ($profile == '4') {echo '@import url("style4.css");';}
elseif ($profile == '50') {echo '@import url("style3.css");';}
else {echo '@import url("style.css");';}
?>

telekomstoy
02.04.2015, 03:31
Во-первых, где собака перед import? А, во-вторых, пропиши header('Content-Type: text/css'); в начало скрипта, чтобы правильный MIME-тип был. Ну и току с запятой после закрывающей скобки для url надо поставить. В общем, как-то так:

<?php
header('Content-Type: text/css');
$profile = $_GET['profile'];

if ($profile == '2') {echo '@import url("style1.css");';}
elseif ($profile == '4') {echo '@import url("style4.css");';}
elseif ($profile == '50') {echo '@import url("style3.css");';}
else {echo '@import url("style.css");';}
?>


Да, прошу прощения, собака и ; стоит. Заметил уже. Хэдер пропишу, отпишусь о результатах.

telekomstoy
02.04.2015, 04:20
Спасибо, с объявленным хэдером, кажется, всё работает.
Прям аж стыдно стало :D
Спасибо! :)