web-dev-qa-db-ja.com

cssファイル内でPHPを使用する方法

CSSファイルがあり、そのファイルの画像パスをPHP可変形式で参照します。次に、htmlファイル内のそのcssファイルを参照します。以下は私のファイルです

CSSファイル

<? header ("Content-type: text/css");?>
 body{ margin:0px; font:9px/11px "Tahoma", Arial, Helvetica, sans-serif; color:#010000; 
 background:#f3f6e1 url(<?php echo base_url().'public/';?>images/body_bg_1.gif) repeat-x 0 0}

HTMLファイル

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="css/layout.css" media="screen"> 
</head>

他のもの。これを行う方法を説明してもらえますか?

13
Malintha

CSSファイルの名前を「layout.php」に変更できる場合、これらの回避策はすべて必要ありません。

Layout.phpファイルは次のようになります。

<?php header("Content-type: text/css; charset: UTF-8"); ?>
body{ margin:0px; font:9px/11px "Tahoma", Arial, Helvetica, sans-serif; color:#010000; 
background:#f3f6e1 url(<?php echo base_url().'public/';?>images/body_bg_1.gif) repeat-x 0 0}

HTMLファイルは次のようになります。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="css/layout.php" media="screen"> 
</head>

この質問は非常に似ています: 含める:phpファイル拡張子のあるcss?

13
Will Hannah

おそらく、base_url()の戻り値がパス区切り文字で終わっていない可能性があります。

それを念頭に置いて、これを試してください:

@import url("<?php echo base_url().'/public/';?>css/layout.css");

(「パブリック」の前のスラッシュに注意してください)

  • ブラウザの「ソースを表示」などでページのソースを確認し、@import 正しい

または

  • Chromeのdevtoolsの「ネットワーク」タブに似たリクエストロガーを使用して、ブラウザがインポートされたCSSファイルをロードしようとしているURLを確認します。

また、ブラウザでCSSを表示して、コンテンツが正しく構築されているかどうかを確認します。 <?php応答内で、ApacheがCSSファイルをPHPであるかのように扱う必要があります。

次のようなものを.htaccessファイルに追加できます。

<FilesMatch "\.css$">
    SetHandler application/x-httpd-php
    Header set Content-type "text/css"
</FilesMatch>

Headerディレクティブの使用を許可するには、「mod_headers」Apacheモジュールが有効になっていることを確認する必要があります。

個人的には、このような動的スタイルシートの名前を.php.css拡張子に変更します。これは効果がありませんが、動的スタイルシートをPHPプリプロセッサのみに渡すようにApacheを設定できます。

<FilesMatch "\.php\.css$">
    SetHandler application/x-httpd-php
    Header set Content-type "text/css"
</FilesMatch>
1
Spooky

問題は、.cssファイルはPHPと解釈されないため、ファイル内のコードは実行されません。PHP =ファイル、コードを実行し、値を入力する必要があります。

[編集]元の投稿のコメントで誰かがリンクされた回答 ここ で指摘されているように、これはそれを行う方法のようです。

1
Joseph

URLの書き換えに関する知識が少しあれば簡単です。

ルートディレクトリに.htaccessファイルを作成します。次のようになります。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^customized\.css$ css\_generator\.php [L]
</IfModule>

次に、コンテンツを持つファイルcss_generator.phpを作成します。

<?php header('Content-type: text/css; charset: UTF-8'); ?>
 body{ margin:0px; font:9px/11px "Tahoma", Arial, Helvetica, sans-serif; color:#010000; 
 background:#f3f6e1 url(<?php echo base_url().'public/';?>images/body_bg_1.gif) repeat-x 0 0}

HTMLは次のようになります。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="customized.css" media="screen"> 
</head>

起きたことを理解する。

  • ブラウザーがカスタマイズされた.cssをロードするページのロード時に、css_generator.phpにリダイレクトされます
  • css_generator.phpのコンテンツは、yoursite.com/customized.cssとしても利用できます。

お役に立てれば

1
whizzzkid