2012-10-31 57 views
1

对,我不是这个巨大的粉丝,所以请不要为我提出这个问题,因为客户想要这个功能......不是我。在下午6点和上午8点之间显示新设计

我有设计A(轻型版本或网站),当他们访问www.example.com时将会正常展示,但是每天早上6点至上午8点,客户想要展示设计B(黑暗版)。

这可以使用PHP来完成吗?一些沿线的:

<?php if the time right now is between 6pm and 8am { ?> 
    Display Design B 
<?php } else { ?> 
    Display Design A 
<?php }?> 
+1

在页面顶部的链接中输出不同的样式表网址。使这个样式表“黑暗”。 –

+0

你不确定如何拥有两种不同的设计或如何在不同的时间显示不同的设计? – bendataclear

+0

是的,它可以这样做,每当页面加载它将要切换模板 – 2012-10-31 14:57:48

回答

1

您可以使用日期功能来做到这一点。但是这个日期函数会回应你的服务器时区。如果你想在gmt中使用gmdate()。

<?php if(date("H") > 18 && date("H") < 08){ ?> 
    Display Design B 
<?php } else { ?> 
    Display Design A 
<?php }?> 
+0

在你提供的代码中使用gmdate()而不是date()? – egr103

+0

如果您的服务器位于美国,则日期(“H”)将显示美国时区的当前小时。所以在美国,如果时间是20:48,它会给你20个。但是如果你想要gmt中的小时值,你需要使用gmdate()。看看我上面的例子(如果条件) –

+0

我注意到你的代码是,它似乎是下午6点到8点(20:00),而不是下午6点到上午8点(08:00),这正是我所要求的。所以一夜之间基本上 – egr103

1

我喜欢这个概念,很高兴听到有人在做它!

无论如何,希望您的网站是围绕CSS设计的。在这种情况下,您的答案在于在必要时切换正确的CSS文件。要注意的是,大多数浏览器会缓存CSS,所以是附加了任意参数为CSS文件的请求使用缓存去锁:

<?php if(date("H") >= 18 && date("H") < 8){ ?> 
    <style src="dark.css?r=<?php echo md5(rand().microtime()); ?>" /> 
<?php } else { ?> 
    <style src="light.css?r=<?php echo md5(rand().microtime()); ?>" /> 
<?php }?> 

得到了很多内嵌IMG标签?最好的解决方案是用CSS重新实现它们。否则:

<?php 
$sheet_time = (date('H') >= 18 && date('H') < 8) ? 'dark' : 'light'; 
?> 
<img src="images/<?php echo $sheet_time; ?>/foo.jpg" /> 

将所有图像自然地分解成黑暗/光线目录(即使您在CSS中实现,也需要这样做)。

+0

这是一件事情,但我也需要更改内嵌图像以及CSS。另外,我想知道PHP在两种设计之间切换的内容。 – egr103

+2

如果文件命名不同,则不需要“缓存击败者”。 – Sammitch

+0

啊,你使用IMG标签吗?淘气。您应该重写样式表,以便所有图像都显示在CSS中。这也使得更多浏览器的行为更好。 – deed02392

0
<?php 

date_default_timezone_set('Europe/London'); 

$hour = (int) date('H'); 
if (($hour > 8 && $hour < 18)) { 
    // it's past 8 AM and less then 6 PM 
    $daytime_design = true; 
    $resource_path = 'day'; 
} 
else { 
    // the other hours, 6 PM to 8 AM the next day 
    $daytime_design = false; 
    $resource_path = 'night'; 
} 
?> 

我们template.tpl.php或任何很久以后

<!doctype html> 
<head> 
<meta charset="utf-8"> 
<title></title> 
<link rel="stylesheet" href="/css/<?=$resource_path;?>/style.css"> 
</head> 
<body> 

<?php 
if ($daytime_design === true) { 
    echo 'Good Day!'; 
} 

if ($daytime_design === false) { 
    echo 'Only shows for night design, <img src="special-night-image.jpg">'; 
} 

?> 

This will show /images/day/logo.jpg or /images/night/logo.jpg 
<img src="/images/<?=$resource_path;?>/logo.jpg"> 

</body> 
</html> 
+0

这是否抓住了服务器的时间?我如何根据英国时间改变这个工作? – egr103

+0

是的,它抓住了服务器的时间。您可以使用'date_default_timezone_set('Europe/London');'设置您的时区。我编辑了答案。 –

1
<?php 
date_default_timezone_set("Europe/Isle_of_Man"); 
$imgfolder = "standard"; 
if(intval(date('H')) >= 18 || intval(date('H')) <= 8){ 
    $imgfolder = "dark"; 
    ?> 
    <link rel= "stylesheet" type="text/css" href="dark.css" /> 
<? 
}else{ 
    $imgfolder = "standard"; 
    ?> 
    <link rel= "stylesheet" type="text/css" href="standard.css" /> 
<? 
} 

载入图像,你可以使用:

<img src = "images/<?echo $imgfolder; ?>/header.jpg"... 

您的图片应存放在images/standard/images/dark

+0

如何更改gmt时区(又名伦敦时间)? – egr103

+0

@ egr103将'date_default_timezone_set(“Europe/Isle_of_Man”);'添加到开头。 –

1

你说你想要的特定图像来改变,我想也许使用的功能,在你的页面的某个地方,那么无论你想要的图像

<?php 
function chooseImage($image1, $image2){ 
    if(date("H") >= 8 && date("H") < 18){ ?> 
     return '<img src="'.$image1.'" alt="Daytime Image" \>'; 
    <?php } else { ?> 
    return '<img src="'.$image2.'" alt="Nighttime Image" \>'; 
<?php }?> 

Put来更改你可以简单的通话功能,传递将作为变量更改的2个图像:

<?php chooseImage(image1.jpg,image2.jpg);?> 
相关问题