CSS中的PHP-“;如果页面在此目录中,请回显此“;


PHP in CSS - "If page is in this directory, echo this"

我在同一个托管包上有几个站点。它们都在不同的目录中。(即"htdocs/site1")。我希望能够让它们共享一个CSS文件。

我想知道是否有一种方法可以根据网站所在的目录更改某些元素的颜色

理想情况下,我希望能够定义页面所在的目录以及每个目录使用的颜色。然后在我的CSS中做一些类似的事情:

.button { color: <?php echo $color ?> ;}

到每个得到颜色变化的元素。

这可能吗?如果可能,我该如何设置?

感谢

您可以根据目录向body标签添加不同的类:

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

其中$dir变量被赋予每个目录的不同值(比如$dir = 'site1',…)。。。

然后有这样的东西:

.site1 #button { /*styles*/ }
.site2 #button { /*styles*/ }
.site3 #button { /*styles*/ }

在您的CSS文件中。

您可以在HTML文档的body标记中添加一个CSS类来确定站点。在PHP中,您必须找到一种方法将正确的站点写入文档。你使用某种全局模板吗?

只是给你一个想法:

PHP:

<?php
  // some code
  // some logic to determine which site you are on - let's say ...
  $site = 'SITE1';
?><body class="<?php echo $site; ?>"><?php
  // more code
?>

CSS:

body.SITE1 #button { color: #ff0000; }
body.SITE2 #button { color: #0000ff; }
body.SITE2 #button { color: #123456; }

您可以使用php动态生成css文件,在这里您可以使用

<?php
switch ($_SERVER['SERVER_NAME']) {
    case 'www.site1.com':
        $color = '#ff0000';
        break;
     case 'www.site2.com':
        $color = '...';
        break;
     ...
     default:
        $color = '...';
?>
.someclass { color : <?php echo $color ?>; }

然而,这在一定程度上是低效的。您将构建一个css文件,每次只更改一种颜色。更好的方法是简单地将颜色变化作为内嵌样式嵌入到页眉中。这样一来,您就不必像解析PHP脚本一样让服务器解析CSS文件,而且您可以将特定站点的CSS覆盖放入网站头部的内联样式中。

老实说,我建议你在html标签中添加一个类:

<html class="site1">

在你的CSS中,定义你的CSS:

.site1 * .button1{ background:#f00;}
.site2 * .button1{ background:#f0f;}
.site3 * .button1{ background:#ff0;}

您可以在这里找到关于这个主题的更多信息,以获得PHP方法。