在单个页面上,我需要在页面底部添加一个包含添加3个项目的包含。
我有一个名为“我用ACF制作的项目”的内容类型。
单project.twig
我有一个“single-project.twig”页面,显示帖子的内容(也是一个项目)。在本页底部,我需要添加一个这样的块:
{% block related %}
{% include 'inc-related.twig' %}
{% endblock %}
INC-related.twig
进入“inc-related.twig”,我有这个:
{% for post in related_posts %}
{% if post.thumbnail %}
<a href="{{post.link}}" class="l-basicgrid-work work">
<article>
<figure>
<img data-src="{{post.get_thumbnail.src('medium_large')|resize(800, 533)}}" alt="{{post.title}}" class="lazy">
</figure>
<figcaption>
<h2>{{ post.title }}</h2>
</figcaption>
</article>
</a>
{% endif %}
{% endfor %}
related.php
我还创建了一个“related.php”页面,它集成了以下渲染:
$context = Timber::get_context();
$context['related_posts'] = Timber::get_posts('post_type=project&posts_per_page=3');
Timber::render('inc-related.twig', $context);
问题
我有两个问题:
谢谢
答案 0 :(得分:0)
你已经包含了twig模板,但没有向他发送数据。您的related.php
未自动加入。您应该在$context['related_posts'] = Timber::get_posts('post_type=project&posts_per_page=3');
中写下single-project.twig
。并且不要在post
中使用inc-related.twig
名称。可能与当前的帖子对象发生冲突。
要single-project.php
添加$context['related_posts'] = Timber::get_posts('post_type=project&posts_per_page=3');
答案 1 :(得分:0)
这就是我所做的。
<强>单project.php 强>
我创建了一个单项project.php页面。它包含以下脚本:
$context = Timber::get_context();
$args = array(
// Get post type project
'post_type' => 'project',
// Get 3 posts
'posts_per_page' => 3,
// Order random
'orderby' => 'rand',
);
$context['related_posts'] = Timber::get_posts( $args );
Timber::render('single-project.twig', $context);
<强>单project.twig 强>
在我的single-project.twig上,我有获取php页面结果的代码。实际上,该代码包含在&#34; inc-related.twig&#34;页。它有效!
{% for post in related_posts %}
{% if post.thumbnail %}
<a href="{{post.link}}" class="l-basicgrid-work work">
<article>
<figure>
<img data-src="{{post.get_thumbnail.src('medium_large')|resize(800, 533)}}" alt="{{post.title}}" class="lazy">
</figure>
<figcaption>
<h2>{{ post.title }}</h2>
</figcaption>
</article>
</a>
{% endif %}
{% endfor %}
但在同一页面(single-project.twig)上,我还有显示高级自定义字段内容的数据。
{% if post.project_images %}
{% for item in post.get_field('project_images') %}
<figure class="{{item.project_media_css}}">
<img data-src="{{TimberImage(item.project_media).src}}" alt="{{item.alt_media}}" class="lazy">
</figure>
{% endfor %}
{% endif %}
现在的问题是ACF字段不会返回任何内容。
我应该如何修改single-project.php以获取来自&#34; related_project&#34;和ACF领域?
答案 2 :(得分:0)
我不知道还有谁想要这个,但是我想扩展Maxim S的答案,并回答filnug(OP)关于避免与帖子冲突的问题。
single-project.php
$context['related_posts'] = Timber::get_posts('post_type=project&posts_per_page=3');
{% block related %}
{% include 'inc-related.twig' %}
{% endblock %}
inc-related.twig
模板中使用新的ACF,请使用在步骤1中为$ context指定的名称进行for循环;但是,我们不使用“发布”来引用每个项目。而是将其命名为“ rel_post”或类似名称。{% for rel_post in related_posts %}
{% if rel_post.thumbnail %}
...
{% endif %}
{% endfor %}