我想在php中包装一个css文件...所以我写了css文件的标题并给它一个php扩展名,因此... css.php。如果页面已被用作包含页面,那么这个问题是否会起作用...或者这个新标题会与页面包含的框架发生冲突????
答案 0 :(得分:19)
gnarf钉了它。
我做:
<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...
?>
答案 1 :(得分:15)
如果您有一个名为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文件,但您可能会发现动态更改该文件的内容并没有多大帮助。您可以通过向链接的href添加get参数来强制更新,如下所示:
<link rel="stylesheet" type="text/css" href="css.php?<?php echo $cssversion ?>"/>
虽然每次参数更改时都会重新加载css文件。出于这个原因,通常更好的做法是提供静态css文件。如果你有一些需要从配置参数等加载的样式,这些样式不会经常变化,那么第一个例子应该对你有用。
答案 2 :(得分:8)
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
?>
如果CSS.php文件中的第一行代码不是header("Content-type: text/css; charset=utf-8");
,则无法使用
答案 3 :(得分:0)
如果包含者脚本不发送任何输出,它将起作用,否则您将出现“标题已发送”错误。
在包装器中使用ob_start()可以避免这种情况并使一切正常。
Html框架与php包含无关,所以在这种情况下完全没有冲突。
答案 4 :(得分:0)
#-------------------#
# FlyKit Mod v1.0 # By Ernest Buffington
#-------------------#
# put this in your MAIN file
function addPHPCSSToHead($content, $type='file'){
global $headPHPCSS;
if (($type == 'file') && (is_array($headPHPCSS) && count($headPHPCSS) > 0) && (in_array(array($type, $content), $headPHPCSS)))
return;
$headPHPCSS[] = array($type, $content);
return;
}
# This is loaded in/from your header
function load_this_from_your_header()
{
global $headPHPCSS;
if (is_array($headPHPCSS) && count($headPHPCSS) > 0)
{
foreach($headPHPCSS AS $php)
{
if ($php[0]=='file')
{
echo "<style type=\"text/css\">\n";
include($php[1]);
echo "</style>\n";
}
else
{
echo "<style type=\"text/css\">\n";
include($php[1]);
echo "</style>\n";
}
}
}
return;
}
# Use this to load the PHP CSS in your theme for fly editing.
addPHPCSSToHead(some_dir.'somefile.php','file');
This allows you to edit CSS on the fly and the browser will not cache the changes.
This is great for designing Themes etc.