0

在基于 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  

第 1 号更新(2014 年 2 月 1 日)

这是我的代码,我正在尝试使用 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 }}条件中 - 正如预期的那样 - 仍然列出了后续性能。

关于如何将输出限制为下一个性能而不是任何后续性能的任何想法?

第 2 号更新(2014 年 2 月 1 日)

我也尝试了柯蒂斯的建议:

{{ 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 }}条件似乎失败了:返回过去的表演。

4

2 回答 2

2

我不确定这是否能解决您的问题,但我想我在您的代码中发现了一个错字。在您的示例中,它说:

if g_show_date|is_future

我在哪里得到了更好的结果,将其更改为

if g_show_date|in_future

为了让您的代码只显示每个节目的下一个即将发生的事件,我想您会以下一个节目为条件循环遍历循环。(虽然现在不知道如何完成那个)

于 2014-01-19T11:23:33.130 回答
0

您可以使用{{ current_date }}和 format 参数来测试时间是否已经过去。

您可能需要处理 if 标记中花括号的数量;标签应该在其他标签中使用单个花括号,但我发现它并不总是这样工作。我认为有人(Gareth,也许?)说他们注意到这是本地 Statamic 变量使用单卷曲,而自定义变量使用双。

{{ 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 小时制,因此它不会在中午前/中午后的放映时间出现意外。有关更多信息,请参阅PHP 手册

于 2014-01-19T01:56:05.720 回答