1

我之前在香草 Wordpress 中解决过这个问题,但是如果摘录字段为空,我似乎无法找到将 post.preview 对象保持为空白的方法。尽管四处寻找似乎没有其他人发现这是一个问题!

无论如何,我已经根据我以前的方法想出了一个解决方法,在我的逻辑文件中设置一个变量以供 twig 模板使用,这很简单,其他人可能会觉得有用。只是很想看看我是否遗漏了 Timber 中可能出现的东西。

这是我使用的解决方案,它放在 page.php

$excerpt = '';
if ( ! has_excerpt() ) {
    $excerpt = '';
} else { 
    $excerpt = get_the_excerpt();
}
$context['post_excerpt'] = $excerpt;
4

2 回答 2

3

post_excerpt已经是 的属性Timber\Post。如果 post 在您的上下文中,您可能不需要为此添加另一个 var。

要采用更“木材式”的方式做事,请访问对象的属性,而不是在上下文中设置另一个 var。

{# page.twig *}

{% if post.page_excerpt %}
    {{ post.preview }}
{% endif %}

这也减少了对全局变量(如has_excerpt() or get_excerpt())的依赖,因此在其他模板或文件中重用此代码变得更加容易。

于 2019-06-12T02:24:40.673 回答
0

由于 PHP 7 这应该也可以按预期工作,并且是一个更清洁的解决方案:

$context['post_excerpt'] = get_the_excerpt() ?? '';

??运算符称为“空合并运算符”。您可以在官方 PHP 文档中找到更多相关信息。

另一种解决方案是在您的树枝模板中直接在帖子类上使用木材“预览”方法:

{{ post.preview }}

您可以在官方Timber文档中找到有关此的更多信息。

于 2019-05-31T08:50:12.780 回答