木材中的ACF发布对象未显示在页面模板上

时间:2019-05-24 21:06:40

标签: advanced-custom-fields timber

使用ACF Post Object并使用Timber调用它时,数据不会显示在页面模板上。

试图将数据添加到index.php和news.php模板中。

ACF发布对象字段名称:

news_author_data

news.php

$post = new TimberPost();
$context['post'] = $post;

$context['news_author'] = new 
TimberPost(get_field('news_author_data'));
Timber::render('core/news.twig', $context);

news.twig

{% for news in news_author %}
  test
{% endfor %}

无错误信息。只是没有数据。

2 个答案:

答案 0 :(得分:0)

如果get_field('news_author_data')返回一个post对象数组,则不能将集合直接放入“ new TimberPost”构造函数中。您必须像这样遍历它们:

$post = new TimberPost();
$context['post'] = $post;

$context['news_author'] = array_map(function($post) {
    return new TimberPost($post);
}, get_field('news_author_data'));

Timber::render('core/news.twig', $context);

希望这会有所帮助。

答案 1 :(得分:0)

您使用的是错误的方法,根据此处的文档,对ACF的支持已包含在Timber中:

[https://timber.github.io/docs/guides/acf-cookbook/]

假设这是一个转发器字段,只需将其添加到news.twig文件中

<div class="my-list">
    {% for item in post.meta('news_author_data') %}
        <div class="item">
            <h4>{{ item.my_repeater_field }}</h4>
            <h6>{{ item.my_repeater_field }}</h6>
            <img src="{{ Image(item.picture).src }}" />
        </div>
    {% endfor %}
</div>