2009-09-18 27 views
13

私はPHPでCSSファイルをラップしたいと思います...だから、私はCSSファイルのヘッダを書いて、PHP拡張子をつけています。したがって、... css.php。ページが既にインクルードとして使用されている場合、またはこの新しいヘッダーがページに含まれるフレームと衝突するかどうかという疑問がありますか?インクルード:PHP拡張子のCSS?

+0

を動作しません私は 'あなたがこれを使いたいものを頼むかもしれませんcss.php'ファイルが提供されますか?いくつかの種類のスタイルは、データベースを生成するか何か? – gnarf

+0

いくつかのコードを表示できますか?私はちょっと状況がどんなものか分からない。 – strager

答えて

18

ガナールはそれを釘付け。

は私が行います

<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... 
?> 
+2

'header(" Content-type:text/css; charset:UTF-8 ");' – Omar

+0

これはIE7や8のような古いブラウザでも使えますか? –

+0

ヘッダーがファイルの最上部に印刷されていることを確認してください。あなたが(私のように)空の行を上に持っていれば、どこかで動作しないかもしれません! – MilanG

0

includerスクリプトが出力を送信しないと機能します。そうしないと、 "Headers already already received"というエラーが発生します。

includerでob_start()を使用することは、これを回避してすべてを動作させるトリックになります。

Htmlフレームは、代わりにphpインクルードとは関係がないため、この場合は全く競合しません。

15

css.phpというファイルがある場合は、最初の行が適切なコンテンツタイプヘッダーを設定していることを確認してください。あなたがまだ持っていない場合は、bootstrap.phpにあなたのセッションセットアップのもの(もしあれば)を分割したいかもしれません。このため、PHP include()機能を使用したくない css.phpを含めるように他の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"; 
    } 
?> 

、単に出力タグ、あなたが:databseからいくつかのスタイル情報をロードする簡単な例は、仕事!

<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ファイルを提供する方が一般的にはより良い方法です。非常に頻繁に変更されない設定パラメータなどからロードする必要があるいくつかのスタイルがある場合、最初の例は非常にうまくいくはずです。

+1

あなたの答えがシャークされていることを確認するために吸う。 – emc

6

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");されていない場合には、