微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Twig 'for each' 搜索结果 - 我的代码控制所有搜索结果,而它应该为每个结果运行

如何解决Twig 'for each' 搜索结果 - 我的代码控制所有搜索结果,而它应该为每个结果运行

我的 (Relevanssi) 搜索结果中有多种帖子类型,例如新闻、博客、公司等。搜索输出显示标题、日期、特色图片摘要。但是,我需要公司的日期字段不同;所以对于所有其他帖子类型,发布日期输出很好,但对于公司,我需要日期输出为一行文本(可以硬编码)。

搜索功能在我的 Feed.twig 文件中控制。它以 {% for item in Feed %} 开头,然后运行一系列参数,例如:

{% if item.image %}
<a href="{{ item.path }}" class="item-image">
<picture>
{{ item.image|responsive_image('card_image','card_image_desktop_1x','object-fit') }}
</picture></a>
{% endif %}

这基本上意味着如果帖子类型有图像,然后用该图像填充搜索结果模板。如果帖子类型没有图片,则不要在搜索结果显示图片字段。

这对于标题、日期和摘要的工作方式相同。

为了控制公司的不同日期,我添加一个 acf 字段(真/假),以便如果勾选它,日期输出自定义文本,如果未勾选,则日期输出为发布日期。这是我的日期代码

{% if post.Meta('show_text_for_date') == true and item.date %}
<span class="item-header-date">CUSTOM DATE TEXT HERE</span>
{% elseif post.Meta('show_text_for_date') == false and item.date %}
<span class="item-header-date"><time datetime="{{ item.date|date("Y-m-d") }}">item.date|date("jS F Y") }}</time></span>
{% endif %} 

这意味着,如果选中了 acf 复选框,并且帖子类型有日期,则使用硬编码文本填充日期字段。如果未勾选 acf 字段且帖子类型有日期,请使用帖子日期填充日期字段。

这是可行的,但是它会在第一个搜索结果查询参数,然后将其应用于每个搜索结果。因此,如果有一个搜索返回,它将正常工作,如果有多个搜索返回,则第一个返回的参数将控制其余部分的日期输出

我的(长!)问题是,我如何在每个搜索结果上运行该日期参数,而不是只在第一个搜索结果上运行它然后控制其余的?

任何帮助将不胜感激,我完全坚持这一点!

谢谢

search.PHP:

// Search
$context['Feed'] = array();
foreach ( $search_results as $search_result ) {
    $image = false;
    // Image
    $components = get_field( 'components',$search_result->ID );
    if ( $components[0]['acf_fc_layout'] === 'hero' && !empty( $components[0]['image'] ) ) {
        $image = $components[0]['image']['ID'];
    } elseif ( has_post_thumbnail( $search_result->ID ) ) {
        $image = get_post_thumbnail_id( $search_result->ID );
    }

    
    $context['Feed'][] = array(
        'title'   => $search_result->post_title,'summary' => get_the_excerpt( $search_result->ID ),'path'    => get_the_permalink( $search_result->ID ),'image'   => $image,'label'   => '','label_path' => '','date'    =>  '',);
    
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。