0

Timber 和 Twig 的总菜鸟。我使用木材和树枝的高级自定义字段。在自定义字段中,我有一个字段允许用户通过分类字段类型检查任何类别中的 3 个,并带有术语对象的返回值。

我要做的是显示用户选择的任何类别中的 3 个,以及下方该类别中的 3 个相关帖子。我总共有 14 个类别。

看起来像这样

在此处输入图像描述

在我的 PHP 文件中,我有

$context['categories'] = Timber::get_terms('category');

在我的树枝文件中:

````

 {% for featured_topic in post.get_field('featured_topics')  %}
    <div class="col-md-4 featured-topics-widget">
        <h4>{{featured_topic.name}}</h4>

             <ul>
            {% for topic in topic_post %}
                    <li>{{topic.title}}</li>
            {% endfor %}    
            </ul>

    </div>

{% endfor %}

上面的代码吐出了类别标题,这很好,但我一直在弄清楚如何显示属于它的帖子。任何帮助,将不胜感激!!!

编辑:我写了这个查询(我不知道我在做什么)。它会拉出帖子,但只是重复。很抱歉把问题放在 gitgub 上。:)

PHP

$topic_args = array(
'post_type' => 'post',
'posts_per_page' => 3,
'tax_query' => array(
    array(
        'taxonomy' => 'category',
        'field'    => 'term_id',
        'terms'    => array( 81, 92, 82, 1, 88, 86, 85)
        )
    )
);

$context['topic_post'] = Timber::get_posts($topic_args);

枝条

{% for featured_topic in post.get_field('featured_topics')  %}
    <div class="col-md-4 featured-topics-widget">
        <h4>{{featured_topic.name}}</h4>

            <ul>
            {% for cat in topic_post.posts('category') %}
                <li><a href="{{ cat.link }}">{{cat.name}}</a></li>
                {% endfor %}    
            </ul>   

    </div>

{% endfor %}
4

2 回答 2

1

所以这里的功能将......

  • 编辑器创建帖子并从静态首页上的 ACF(“特色主题”)字段中选择 3 个类别
  • 在首页,用户将看到三个选定的类别
  • 在每个类别下,用户会看到与该类别相关的三个 OTHER 帖子(总共 9 个帖子)

主页.php

$featured_topic_ids = get_field('featured_topics'); 
// you may need to adjust this based on your ACF setup. 
// Basically you're trying to get to an array of category IDs,
// then pass the resulting array to Timber::get_terms();
$context['featured_topics'] = Timber::get_terms($featured_topic_ids);
Timber::render('home.twig', $context);

主页.twig

{% for ft in featured_topics %}
<h4>{{ ft.name }}</h4>

    {% for catpost in ft.posts(3) %}
         <li><a href="{{ catpost.link }}">{{ catpost.title }}</a></li>
    {% endfor %}
于 2017-03-03T14:10:01.373 回答
0

你需要创建一个grouped数组,

PHP

$context['categories'] = Timber::get_terms('category');
$context['posts_per_category'] = [];
foreach($context['categories'] as $category) $context=['posts_per_category'][$category->ID] = Timber::get_posts('cat='.$category->ID);

Twig

{% for cat in categories %}
    <li>
        <a href="{{cat.link}}">{{cat.name}}</a>
        <ul>
            {% for post in posts_per_category[cat.ID] %}
            <li>... Do sthing with post ...</li>
            {% endfor %}
        </ul>       
    </li>
{% endfor %}
于 2017-03-03T07:43:56.493 回答