Включить: CSS с расширением PHP? - PullRequest
14 голосов
/ 18 сентября 2009

Я хотел бы обернуть файл CSS в php ... Поэтому я пишу заголовок для файла CSS и даю ему расширение php, таким образом ... css.php. Вопрос в том, сработает ли эта страница, если страница уже используется для включения ... или этот новый заголовок будет конфликтовать с рамкой, в которую страница включена? ????

Ответы [ 4 ]

19 голосов
/ 25 мая 2010

Гнарф прибил его.

Я делаю:

<link rel="stylesheet" type="text/css" media="screen" href="<? echo TMPL ?>css/name-of-file.css.php">

и затем в верхней части вашего файла .css.php:

<?
header('Content-Type: text/css');
// print out your php-driven css...
?>
15 голосов
/ 19 сентября 2009

Если у вас есть файл с именем css.php, просто убедитесь, что в первых строках указан правильный заголовок типа контента. Вы также можете разделить ваши настройки сеанса (если они есть) на bootstrap.php, если вы этого еще не сделали. Быстрый пример загрузки некоторой информации о стиле из базы данных:

<?php 
  header("Content-Type: text/css"); 
  include('bootstrap.php');
  // fetch some information to print out our styles
  $result = mysql_query("SELECT * FROM site_styles");
  while ($row = mysql_fetch_assoc($result)) {
    echo $row["selector"]." {\n".$row["css"]."\n}\n";
  }
?>

Из вашего другого php-файла просто выведите тег для включения css.php, вы не хотите использовать функцию php include() для этой задачи!

<link rel="stylesheet" type="text/css" href="css.php"/>

Хотя большинство браузеров довольно агрессивно кешируют ваш css-файл, вы можете обнаружить, что динамическое изменение содержимого этого файла не приносит особой пользы. Вы можете принудительно обновить его, добавив параметр get в href ссылки, например, так:

<link rel="stylesheet" type="text/css" href="css.php?<?php echo $cssversion ?>"/>

Хотя это будет полностью перезагружать ваш CSS-файл каждый раз, когда изменяется этот параметр. По этой причине обычно рекомендуется обслуживать статические файлы CSS. Если у вас есть несколько стилей, которые необходимо загрузить из параметров конфигурации и т. Д., Которые меняются не очень часто, первый пример должен работать для вас весьма неплохо.

8 голосов
/ 19 апреля 2012

HTML-файл:
<link rel="stylesheet" type="text/css" href="css.php"/>

Файл css.php:
<?php
header("Content-type: text/css; charset=utf-8");
//your php + css code goes here
?> 1012 *
*

Если ваша первая строка кода в файле CSS.php не является
header("Content-type: text/css; charset=utf-8"); , она не будет работать

0 голосов
/ 18 сентября 2009

Это будет работать, если сценарий включения не отправляет никаких выходных данных, в противном случае у вас будет ошибка " Заголовки уже отправлены ".

Использование ob_start () во включителе может быть хитростью, чтобы избежать этого и заставить все работать.

HTML-фреймы не имеют ничего общего с включениями php, так что в этом случае вообще никакого конфликта.

...