Timber Twig 显示与类别相关的帖子
Timber Twig Show Posts Associated with Category
完全是 Timber 和 Twig 的菜鸟。我正在使用 Timber 和 Twig 的高级自定义字段。在自定义字段中,我有一个字段允许用户通过分类字段类型检查任何类别中的 3 个,术语 return 的值为 object。
我想做的是在用户选择的任何类别中显示 3 个,并在下方显示该类别中的 3 个相关帖子。我总共有 14 个类别。
看起来像这样
在我的 PHP 文件中有
$context['categories'] = Timber::get_terms('category');
在我的 Twig 文件中:
````
{% 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 %}
您需要创建一个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);
树枝
{% 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 %}
所以这里的功能将...
- 编辑器创建 post 并从静态首页的 ACF ("featured topics") 字段中选择 3 个类别
- 在首页上,用户将看到三个选定的类别
- 在每个类别下,用户会看到三个与该类别关联的其他 post(因此总共 9 post)
home.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);
home.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 %}
完全是 Timber 和 Twig 的菜鸟。我正在使用 Timber 和 Twig 的高级自定义字段。在自定义字段中,我有一个字段允许用户通过分类字段类型检查任何类别中的 3 个,术语 return 的值为 object。
我想做的是在用户选择的任何类别中显示 3 个,并在下方显示该类别中的 3 个相关帖子。我总共有 14 个类别。
看起来像这样
在我的 PHP 文件中有
$context['categories'] = Timber::get_terms('category');
在我的 Twig 文件中:
````
{% 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 %}
您需要创建一个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);
树枝
{% 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 %}
所以这里的功能将...
- 编辑器创建 post 并从静态首页的 ACF ("featured topics") 字段中选择 3 个类别
- 在首页上,用户将看到三个选定的类别
- 在每个类别下,用户会看到三个与该类别关联的其他 post(因此总共 9 post)
home.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);
home.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 %}