在一个基于Statamic 1.6.7的剧场网站上,我想用一个网格场进行表演(他们每周六晚上有几周的节目),我只想展示下一场即将到来的节目。
show_performances:
-
g_show_date: 2014-01-30
g_show_time: 07:00 PM
-
g_show_date: 2014-02-31
g_show_time: 07:00 PM
-
g_show_date: 2014-03-31
g_show_time: 07:00 PM
这是我的代码,我正在尝试David S建议使用{{ g_show_date|in_future }}
:
{{ show_performances }}
{{ if g_show_date|in_future }}
<p>{{ g_show_date }} @ {{ g_show_time }}</p>
{{ endif }}
{{ /show_performances }}
哪种方法很好,但它显示了所有未来的节目(2014-02-31和2014-03-31)。我尝试用{{ if first }}
条件包装输出,正如预期的那样,仍然列出了后续的表现。
关于如何将输出限制为 next 性能的任何想法,而不是后续的?
我也尝试过柯蒂斯的建议:
{{ show_performances limit="1" }}
{{if "{ g_show_date format='Ymd' }" >= "{ current_date format='Ymd' }"
AND "{ g_show_time format='Hi' }" > "{ current_date format='Hi'}"}}
<p>{{ g_show_date }} @ {{ g_show_time }}</p>
{{ endif }}
{{ /show_performances }}
但是{{ current_date }}
条件似乎失败了:因为过去的表演会被退回。
答案 0 :(得分:1)
我不确定这会解决您的问题,但我认为我在您的代码中发现了一个拼写错误。在你的例子中它说:
if g_show_date|is_future
我得到了更好的结果,将其改为
if g_show_date|in_future
为了让你的代码只显示每个节目的下一个即将发生的事件,我猜你会在下一个节目作为条件循环你的循环。 (不知道现在如何完成那个)
答案 1 :(得分:0)
您可以使用{{ current_date }}
和format参数来测试时间是否过去。
您可能需要使用if标记中的花括号数量;标签应该在其他标签中使用单个花括号,但我发现它并不总是那样。我想有人(Gareth,也许?)说他们注意到它是原生的Statamic变量使用单个curlies,而自定义变量使用double。
{{ entries:listing folder="shows" limit="3" }}
{{ show_time_grid limit="1" }}
{{ if { g_show_date format="Ymd" } >= { current_date format="Ymd" } AND
{ g_show_time format="Hi" } > { current_date format="Hi" }
}}
{{ g_show_date }}<br/>
<h2>{{ title }}</h2>
{{ endif }}
{{ /show_time_grid }}
{{ /entries:listing }}
时间格式使用前导零,表示月,日和小时。小时是24小时的时间,所以它在前/后中午放映时间内不会出现意外行为。有关详细信息,请参阅the PHP manual。