我正在使用ACF链接到Zoom网络研讨会。香港专业教育学院使用ACF来添加开始和结束日期/时间。 我有一个标准条件,可以检查这些字段上的过去/现在/将来
{% if w_start %}
{% if current >= w_start and current <= w_end %}
{#% present %#}
{% elseif current > w_end %}
{#% past %#}
{% else %}
{#% future %#}
{% endif %}
{% endif %}
如何将存档帖子列表分为过去/现在/将来条件定义的三个单独的标题。
当前网络研讨会
即将举行的网络研讨会
过去的网络研讨会
我目前没有将其他参数传递给此页面。
$context['post'] = Timber::get_posts();
return Timber::render('webinar-archive.twig', $context, false);
-
{% for webinar in post %}
{#% Do Something %#}
{% endfor %}
我是否创建3个单独的for循环?是否根据if条件排序?
这里的任何帮助或指导都是很棒的。
答案 0 :(得分:0)
我建议您遍历PHP模板中的帖子,以使它们在上下文中分开。 array_reduce
函数可以帮助:
$context['posts_by_time'] = array_reduce(Timber::get_posts(), function($byTime, $post) {
$start = strtotime($post->w_start);
$end = strtotime($post->w_end);
if (time() > $start && time() < $end) {
$section = 'current';
} elseif (time() > $end) {
$section = 'past';
} else {
$section = 'future';
}
// add this post to the correct section
$byTime[$section][] = $post;
return $byTime;
}, [
'past' => [],
'current' => [],
'future' => [],
]);
然后在您的视图代码中,您可以使用一系列不错的简单部分:
<h2>Current Webinars</h2>
{% for webinar in posts_by_time.current %}
{# render each current post #}
{% endfor %}
{# and so on for future & past #}
注意::我没有测试此代码,但这是一般想法。