20

CSS ファイルがあり、そのファイル内のいくつかの画像パスを PHP 変数形式で参照したいと考えています。次に、その css ファイルを html ファイル内で参照します。以下は私のファイルです

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>

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

4

4 に答える 4

19

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>

この質問は非常に似ています: Include: css with php file extension?

于 2013-10-12T19:40:09.447 に答える
2

の戻り値が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>

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

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

<FilesMatch "\.php\.css$">
    SetHandler application/x-httpd-php
    Header set Content-type "text/css"
</FilesMatch>
于 2013-10-12T19:25:29.227 に答える
1

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>

何が起こったのかを理解する。

  • ブラウザがcustomized.cssをロードするときのページのロード時に、それはcss_generator.phpにリダイレクトされます
  • css_generator.php の内容は、yoursite.com/customized.css としても利用できます。

お役に立てれば

于 2013-10-12T19:35:28.760 に答える
1

問題は、.cssファイルが PHP として解釈されないため、ファイル内のコードが実行されないことだと思います。PHP ファイルとしてインクルードした場合、コードが実行され、値が入力されます。

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

于 2013-10-12T19:27:33.943 に答える