我想根据日期和时间显示和隐藏div。 我对PHP没有多少经验,但我想我找到了一个代码。但我不知道如何排序以及如何设置代码。
我希望它在营业时间内显示如下: http://boxmedia.no(首页底部)。
这是一个包含一个字段和一个按钮的表单。它是挪威语,并说: 在这里填写您的电话号码。按下这里,然后我们会在10分钟后给你回电话
这是表格的代码:
<div class="container"> <div class="row-centered main-btn ring_me">
<?php
echo do_shortcode('[contact-form-7 id="249" title="Untitled"]');
?> </div> <!--div class="row-centered sec-btn" style="display:none;">
<span><input max-size="30" type="text" id="contact_no" name="contact_no"/>
</span><span class="btn btn-success btn-lg">
<font><font class="goog-text-highlight">
<a href="<?php echo home_url();
?>/kontakt-oss">Send </a> </font></font> </span></div--> </div>
这是我认为会在开放时间显示的代码:上午8点到下午4点。 而不是在周末。
但是我在哪里将其放在上面的现有代码中:
<?php date_default_timezone_set('Europe/Oslo');
$currentHour = date("H");
$openTime = 8;
$closeTime = 16;
if ($currentHour >= $openTime && $currentHour < $closeTime){
$css = 'display:block;';
}else{
$css = 'display:none;';
}
echo '<style type="text/css">.timeBasedLink {'.$css.'}</style>'; ?>
if (date("w") == 0 || date("w") == 6 || $currentHour < $openTime ||
$currentHour >= $closeTime)
{
$css = 'display:none;';
}
else
{
$css = 'display:block;';
}
--------------- 2015年2月2日新增---------------
这是要添加到我的css文件的代码吗? 它放置正确吗? 是类.TimeOn? 我如何将TimeOn连接到ring_me或调用类?
.ring_me input[type="tel"] {
width: 258px;
margin-right: 20px;
.timeOn {
display:block;
}
.timeOff {
display:none;
}
}
这是CSS中的另一个地方:
.ring_me input[type="tel"] {
.timeOn {
display:block;
}
.timeOff {
display:none;
}
font-size: 20px;
line-height: 24px;
答案 0 :(得分:2)
好。您的代码存在一些问题,让我们从那里开始。第一:
date_default_timezone_set(‘Europe/Oslo');
这些是错误的引号,需要这样:
date_default_timezone_set('Europe/Oslo');
PHP只会识别单引号(&#39;)和双引号(&#34;&#34;)来处理这类事情。
第二,你的商店什么时候开门?你在这里设置关闭时间:
$closeTime = 9;
至9.但您使用的是$currentHour = date("H");
24小时代码。这意味着您的商店将仅在上午8点至上午9点之间被视为开放。也许你的意思是晚上9点,这将是:
$closeTime = 21;
第三,就在这里:
echo '<style type="text/css">.timeBasedLink {'.$css.'}</style>'; ?>
您过早地使用?>
结束PHP标记。这将停止处理以下所有PHP代码。
第四,您还会生成内联CSS,这很糟糕,具体取决于商店是打开还是关闭。您可以简单地设置两个CSS类(在PHP代码之外,尽管如此)并保存自己的额外处理,如下所示:
<style type="text/css">
.timeOn {
display:block;
}
.timeOff {
display:none;
}
</style>
请注意,这是内联CSS,应该放在普通的CSS文件中。
最后,为了解决您的实际问题,发送按钮当前包含在注释标记中:
<!-- // Comment Goes here -->
我们要去除这些标签,然后简单地在DIV中回显我们的新PHP变量(作为一个类)来隐藏它或显示它,如下所示:
<div class="row-centered sec-btn <?php echo $css; ?>">
这将是我对上述代码的实现:
<?php
// Basic Variable Declaration
date_default_timezone_set('Europe/Oslo');
$currentHour = date("H");
$openTime = 8;
// This needs to be 21, if using "H" and the time is 9
$closeTime = 21;
// Here we check to see if we are open, and in a good week
if ($currentHour >= $openTime && $currentHour < $closeTime && (date("w") != 0 || date("w") != 6)){
// If we are, set our class to off.
$css = 'timeOn';
} else {
// Otherwise, set our class to off.
$css = 'timeOff;';
}
// This code should really go in a CSS file
// And be inclunded in the header
echo '<style type="text/css">';
// This is our class for showing the block
echo '.timeOn {
display:block;
}';
// This is our class for hiding the block
echo '.timeOff {
display:none;
}';
echo '</style>';
// We're ending the PHP Tag here
?>
<div class="container">
<div class="row-centered main-btn ring_me <?php echo $css; ?>">
<?php
echo do_shortcode('[contact-form-7 id="249" title="Untitled"]');
?>
</div>
</div>
请注意,您在最终DIV中还有一组额外的<font>
个标签,并没有做任何事情。
这个解决方案不是100%正确(我在PHP中留下了CSS生成,所以我可以为它添加注释),但它使用定义的类,只是根据我们在设置的PHP Hour变量改变类。脚本的开头。这是一种更清晰的方法,在生成页面之前需要更少的PHP处理。
答案 1 :(得分:0)
您可以将它添加到样式表下方的header.php中。查看echo部分,您需要更改所使用的类&#34; timeBasedLink&#34;到你的表格输出。
echo '<style type="text/css">.timeBasedLink {'.$css.'}</style>'; ?>
答案 2 :(得分:0)
你应该考虑让它成为一个方便的功能
<?php
function hide_show_from_date()
{
date_default_timezone_set('Europe/Oslo');
$currentHour = date("H");
$openTime = 8;
$closeTime = 9;
$css = 'block';
if ($currentHour >= $openTime && $currentHour < $closeTime)
{
$css = 'block';
}
else
{
$css = 'none';
}
if (date("w") == 0 || date("w") == 6 || $currentHour < $openTime || $currentHour >= $closeTime) {
$css = 'display:none;';
}
else {
$css = 'display:block;';
}
return $css;
}
?>
<div style="display:<?php hide_show_from_date();?>">
Your content here
</div>
答案 3 :(得分:0)
首先理论:PHP在页面加载之前和HTML编写之前运行。这意味着你不能简单地包括&#34;包括&#34; PHP页面中的PHP。您必须在PHP页面中包含HTML。
要做到这一点,只需创建一个扩展名为.php的页面(而不是.html),添加HTML,然后将PHP代码放在正确的标记内。
<?php
//Please see Mark's answer for a good example of the code.
?>
这与普通的html页面没有任何区别。您将拥有HTML页面的常规结构,然后只需在<?php ?>
标记之间添加PHP代码即可。像这样:
<html>
<head>
//This is where you link an external .css sheet
<link href="Path-to-file/FILENAME.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php
//Some PHP code
?>
<!--Form Code goes here-->
<form></form>
</body>
</html>
基本上你还在编写一个HTML页面,但是不是手动编写它,而是使用PHP根据一周的时间/星期编写不同的HTML。
有关CSS的信息,请参阅http://www.w3schools.com/css/css_howto.asp。
这也可以使用Javascript + PHP完成。首先使用AJAX调用单独的PHP页面,如果它在正确的时间内并显示表单,则返回TRUE(参见https://stackoverflow.com/a/7165616/4126804)。