4

わかりました、私はこのウェブサイトをやっていました。そのほとんどは PHP によって供給されます。よりクリーンな作業領域を得るために、含まれる header.php および footer.php ファイルがあります。問題は、メイン ページ (ホームページ) が main.css ファイルを使用していることです。また、ニュース ページには多くの同様の機能があるため、main.css ファイルも使用しますが、特定の設定の一部は news.css ファイルによって上書きされます。すべてが HTML だったので、簡単に機能させることができました (最初に main.css を呼び出し、次に news.css を呼び出すだけです)。しかし、スタイルシートの呼び出しが共通のヘッダー ファイルにあるため、ホームページで予期しない不要な CSS 効果が発生しています。

news.php が読み込まれたときにのみ、ブラウザに news.css ファイルを読み込むように指示するために使用できる PHP の if ステートメントのような方法はありますか?

ありがとう!!!

4

4 に答える 4

3

header.php、次のifようなステートメントを作成します。

if ($current_page == "join") {
  echo "stylesheet..";
} else {
  echo "another stylesheet..";
}

を含める場合は、ステートメントheader.phpを満たす変数を設定します。if

$current_page = "join";
include '../header.php';
于 2013-08-31T21:21:30.277 に答える
2

これらの行に沿って何かを行うことができます:

<?php 
if (stristr($_SERVER['SCRIPT_NAME'], 'news.php')) {
   print('<link rel="stylesheet" type="text/css" href="/news.css">'); 
} 
?>
于 2013-08-31T21:25:33.100 に答える
0

私はセクションごとに個別の CSS ファイルを使用するのが好きではありません。私は、http リクエストをできるだけ少なくすることを好みます。また、単一のcssファイルを持つことで、将来のメンテナンスが容易になると私は考えています.

今後のプロジェクトでは、サイト セクションごとに特定のボディ クラスまたは ID を宣言することもできます。

<body class="news">
<div id="header"....

このように、同じ CSS ファイルを使用して、必要に応じて CSS の特定の部分をオーバーライドできます。

たとえば、ニュース セクションの div #header のスタイルを変える必要がある場合は、CSS で次のようにします。

#header {
height: 120px;
background-color: #CCC;
}

.news #header {
height: 40px;
background-color: #000;
}

body タグが header.php インクルードで宣言されている場合、提案されている方法のいずれかを使用して、body クラスを動的に追加できます。

if ($_SERVER['PHP_SELF'] == 'http://url-to-news-page') {
$body_class="news";
}

その後:

<body class="<?php echo $body_class;?>">

詳細については、http: //css-tricks.com/id-your-body-for-greater-css-control-and-specificity/を参照してください。

于 2013-09-02T03:17:17.030 に答える
0

次のようなことができます:

if ($_SERVER['PHP_SELF'] == 'http://url-to-news-page')
    echo '<link rel="stylesheet" href="path-to-stylesheet">';

または、URL を指定せずにパスのみを指定する場合は、次のようにします (より適切です)。

if ($_SERVER['SCRIPT_NAME'] == '/path/to/news.php')
    echo '<link rel="stylesheet" href="path-to-stylesheet">';
于 2013-08-31T21:24:38.993 に答える