2012-10-31 99 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);?> 
相關問題