我之前在香草Wordpress中已经解决了这个问题,但是如果摘录字段为空,我似乎找不到找到使post.preview对象保持空白的方法。尽管四处搜寻,似乎没有人发现这个问题!
无论如何,我已经根据以前的方法提出了一种解决方法,即在逻辑文件中设置要使用的树枝模板的变量,该变量很简单,其他人可能会觉得有用。只是想知道我是否在Timber内部缺少某些东西。
这是我使用的解决方案,它位于page.php中。
$excerpt = '';
if ( ! has_excerpt() ) {
$excerpt = '';
} else {
$excerpt = get_the_excerpt();
}
$context['post_excerpt'] = $excerpt;
答案 0 :(得分:0)
自PHP 7起,它也应能按预期工作,并且是一种更干净的解决方案:
$context['post_excerpt'] = get_the_excerpt() ?? '';
??
运算符称为“空合并运算符”。您可以在official PHP docs中找到有关它的更多信息。
另一种解决方案是直接在树枝模板中使用post类中的木材“预览”方法:
{{ post.preview }}
您可以在官方Timber文档中找到有关此信息的更多信息。
答案 1 :(得分:0)
post_excerpt
已经是Timber\Post
的属性。如果发布是在您的上下文中,则可能不需要为此添加另一个var。
要以一种更加“木材化”的方式拥抱工作,请访问对象的属性,而不是在上下文中设置另一个var。
{# page.twig *}
{% if post.page_excerpt %}
{{ post.preview }}
{% endif %}
这也较少依赖全局变量(例如has_excerpt()
或get_excerpt()
),因此可以更轻松地在其他模板或文件中重用此代码。