木材使用不同的模板自定义帖子类型

时间:2017-04-07 09:29:20

标签: wordpress twig timber

我是PHP,Wordpress和Timber的新手。我有一个名为项目的自定义帖子类型,它使用了帖子归档模板,我很疯狂地创建了一个特定的项目归档模板,所以我可以为它设置不同的布局

这就是我的index.twig看起来像

{% extends "layouts/base.twig" %}

{% block content %}
  <div class="uk-child-width-1-3@m" uk-grid uk-scrollspy="cls: uk-animation-fade; target: > div > .uk-card; delay: 500; repeat: false">
{% for post in posts %}
    {% include "tease-post.twig" %}
{% endfor %}
  </div>
{% endblock %}

这是tease-post.twig

{% block content %}
<div>
    <div class="uk-card uk-card-default">
            <div class="uk-card-media-top">
                    <a href="{{post.link}}"><img src="{{post.thumbnail.src('full')}}" alt=""></a>
            </div>
            <div class="uk-card-body">
                    <h3 class="uk-card-title"><a href="{{post.link}}" class="uk-button uk-button-text">{{post.title}}</a></h3>
                    <p>{{post.get_preview(25,false,false,true)}}</p>
            </div>
            <div class="uk-card-footer">
                    <a href="{{post.link}}" class="uk-button uk-button-text">Read more</a>
            </div>
    </div>
</div>
{% endblock %}

知道它是如何工作的吗?无法找到任何相关文档..

1 个答案:

答案 0 :(得分:1)

根据您希望实现的目标,有一些不同的方法。这似乎是最简单的......

{% extends "layouts/base.twig" %}

{% block content %}
    <div class="uk-child-width-1-3@m" uk-grid uk-scrollspy="cls: uk-animation-fade; target: > div > .uk-card; delay: 500; repeat: false">
    {% for post in posts %}
        {% include "tease-'~ post.type ~'.twig" %}
    {% endfor %}
    </div>
{% endblock %}

然后,您可以创建一个名为tease-project.twig的文件(假设`项目是您的自定义帖子类型的名称),它可能看起来像这样......

{# tease-project.twig #}
<h2>My cool project is... {{ post.title }}</h2>

如果您希望使用CPT的特定存档页面做些特别的事情......

检查您的archive.php文件,如果您正在使用starter theme,则应加载名为archive-projects.twig的文件(假设projects是自定义的名称发布类型)。

逻辑是完全可自定义的,因此您可以根据具体情况加载所需的任何.twig个文件