2009-09-13 5 views
0

Как создать динамический CSS и JavaScript On-The-Fly (используя PHP). Это нужно делать, поскольку иногда разные страницы имеют разные элементы, поэтому упаковка и отправка большого CSS/JS каждый раз будут излишними. И почему многие сайты имеют ссылку теги, как это:Динамический CSS и Javascript

<link rel='stylesheet' type='text/css' href='css/style.css?pg_id=43&post=62'> 

Каким образом CSS изведать параметры GET?

Поскольку это может включать в себя URL переписывания или с помощью функции заголовка, пожалуйста, поставить короткие примеры

+0

Я считаю, что это не сам файл CSS, его может быть страницей со сценарием, который возвращает css, на основе параметров GET. Расширения на самом деле ничего не означают в веб-разработке. –

+0

, так что это связано с переписыванием URL-файла для файлов CSS? – OrangeRind

+0

OrangeRind: правильный. –

ответ

3

Итак, вы можете принять здесь несколько разных подходов. Во-первых, если у вас есть доступ к файлам виртуального хоста apache, вы можете настроить CSS для чтения интерпретатором php. Я никогда не делал этого и Wouldnt точно рекомендовать его, но пример является:

<VirtualHost *:80> 
    AddType application/x-httpd-php .css 
</VirtualHost> 

Это также может быть сделано в файле .htaccess.

В качестве альтернативы, вы можете сделать ссылку, как

<link rel='stylesheet' type='text/css' href='css/style.php?pg_id=43&post=62'> 

и положить

<?php header("Content-type: text/css"); ?> 

в качестве первой линии.

Я никогда не рассматривал технику Виниция, но я не сомневаюсь, что у нее есть свой собственный набор преимуществ и недостатков.

PS - иногда GET переменные использует для кэширования (или на самом деле, чтобы предотвратить кэширование путем добавления текущего Отметка времени Unix по ссылке CSS с PHP как

<link href="style.css?<?php echo time()" type="text/css" rel="stylesheet" /> 
+0

Функция заголовка находится в обряде style.php? – OrangeRind

+0

это правильно! – aphelionz

+0

gee ... спасибо! Работы Удивительные! – OrangeRind

2

Запрос на .css или .js файл может быть перенаправлен на PHP скрипт, используя, например, .htaccess (в Apache), поэтому даже если атрибут src является «style.css», на самом деле это скрипт PHP, который отвечает на пользователя.

+0

Видимо, это то, что я хотел задать в первой части вопроса. Это ссылка на wikipedia CSS, как мне это сделать, как я могу использовать PHP для размещения CSS, просто ли Echo? http://en.wikipedia.org/w/index.php?title=MediaWiki:Common.css & usemsgcache = yes & – OrangeRind

+0

вам также нужно указать заголовок типа контента. –

1

Ваши файлы CSS и Javascript кэшируются, я бы не рекомендовал использовать разные таблицы стилей/js-файлов, если они не размером> 200 КБ.

И да, вы можете ссылаться на любую серверную страницу с параметрами (.php или любым другим расширением), пока он возвращает правильный Content-Type для этого файла.

Sidenote: Обычно, если у вас есть параметры и динамически обслуживают файлы таким образом, я считаю, что они не будут автоматически кэшироваться, если вы не настроите их на это.

Простой пример:

<link rel="stylesheet" type="text/css" href="/css.php?color=wide-red"> 

<?php 
header('Content-Type', 'text/css; charset=utf-8'); 
$colorScheme = (string)$_GET['color']; 

switch ($colorScheme) { 
    case 'wide-red': 
     $bgColor = 'c0c0c0'; 
     $fgColor = 'ffffff'; 
     $width = '1280px'; 
    break; 

    case 'normal-gray': 
     $bgColor = '333333'; 
     $fgColor = 'ffffff'; 
     $width = '960px'; 
    } 
    break; 

} 
?> 
body { 
    background:<?php echo $bgColor;?>; 
    color:<?php echo $fgColor;?>; 
    width:<?php echo $width;?>; 
} 

Вы можете использовать эхо, вы можете использовать шаблонную систему, вы можете тянуть в других CSS файлов с file_get_contents, Главное, вы должны послать правильный Content-Type, грейфер правильные параметры и иметь отступ по умолчанию, если параметры не заданы.

Смежные вопросы