包括:带有php文件扩展名的css?

时间:2009-09-18 15:52:49

标签: php css include

我想在php中包装一个css文件...所以我写了css文件的标题并给它一个php扩展名,因此... css.php。如果页面已被用作包含页面,那么这个问题是否会起作用...或者这个新标题会与页面包含的框架发生冲突????

5 个答案:

答案 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.