2

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

我想知道是否有办法根据站点所在的目录更改某些元素的颜色。

理想情况下,我希望能够定义页面所在的目录以及每个目录使用的颜色。然后在我的 CSS 中执行以下操作:

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

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

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

谢谢你

4

4 回答 4

9

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

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

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

...然后有类似的东西:

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

在您的 CSS 文件中。

于 2012-07-17T17:07:00.327 回答
2

您可以将 CSS 类添加到 HTML 文档的 body 标记以确定站点。在 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; }
于 2012-07-17T17:09:56.813 回答
1

您可以使用 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 覆盖放入站点标题中的内联样式中。

于 2012-07-17T17:05:41.333 回答
1

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

<html class="site1">

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

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

您可以在此处找到有关此主题的更多信息,以获取 PHP 方法。

于 2012-07-17T17:10:54.627 回答