特定类别的木材 / TWIG spearate 模板
Timber / TWIG spearate Templates for specific Categories
所以在入门主题中我们有这个:
archive.php:
$templates = array( 'archive.twig', 'index.twig' );
$context = Timber::get_context();
$context['title'] = 'Archive';
if ( is_day() ) {
$context['title'] = 'Archive: ' . get_the_date( 'D M Y' );
} else if ( is_month() ) {
$context['title'] = 'Archive: ' . get_the_date( 'M Y' );
} else if ( is_year() ) {
$context['title'] = 'Archive: ' . get_the_date( 'Y' );
} else if ( is_tag() ) {
$context['title'] = single_tag_title( '', false );
} else if ( is_category() ) {
$context['title'] = single_cat_title( '', false );
array_unshift( $templates, 'archive-' . get_query_var( 'cat' ) . '.twig' );
} else if ( is_post_type_archive() ) {
$context['title'] = post_type_archive_title( '', false );
array_unshift( $templates, 'archive-' . get_post_type() . '.twig' );
}
$context['posts'] = new Timber\PostQuery();
Timber::render( $templates, $context );
根据我的理解,如果我导航到 http://.......com/index.php/category/newcategory/,它应该去获取 archive-newcategory.twig文件,作为模板。
另一个例子,如果我去 http://.......com/index.php/category/anothercat/ 它应该去获取 archive-anothercat.twig 。有没有可能我理解错了?因为如果是这种情况,我的入门主题将无法按预期工作。
我在文档中找不到动态解决方案,如果不是的话。
一切正常。当 is_category()
为真时,存档将通过 get_query_var( 'cat' )
获取类别 ID,而不是类别名称。
您可以更新 archive.php 中的代码以添加您要使用的 Twig 模板。例如:
else if ( is_category() ) {
$term = new Timber\Term( get_queried_object_id() );
$context['term'] = $term;
$context['title'] = single_cat_title( '', false );
array_unshift( $templates, 'archive-' . $term->slug . '.twig' );
}
或者您也可以使用不同的 PHP 模板。考虑 list of PHP templates on wphierarchy.com。在那里你可以看到你可以在主题根目录中使用 category.php 文件:
$context = Timber::get_context();
$context['title'] = single_cat_title( '', false );
Timber::render( 'archive-category.twig', $context );
所以在入门主题中我们有这个:
archive.php:
$templates = array( 'archive.twig', 'index.twig' );
$context = Timber::get_context();
$context['title'] = 'Archive';
if ( is_day() ) {
$context['title'] = 'Archive: ' . get_the_date( 'D M Y' );
} else if ( is_month() ) {
$context['title'] = 'Archive: ' . get_the_date( 'M Y' );
} else if ( is_year() ) {
$context['title'] = 'Archive: ' . get_the_date( 'Y' );
} else if ( is_tag() ) {
$context['title'] = single_tag_title( '', false );
} else if ( is_category() ) {
$context['title'] = single_cat_title( '', false );
array_unshift( $templates, 'archive-' . get_query_var( 'cat' ) . '.twig' );
} else if ( is_post_type_archive() ) {
$context['title'] = post_type_archive_title( '', false );
array_unshift( $templates, 'archive-' . get_post_type() . '.twig' );
}
$context['posts'] = new Timber\PostQuery();
Timber::render( $templates, $context );
根据我的理解,如果我导航到 http://.......com/index.php/category/newcategory/,它应该去获取 archive-newcategory.twig文件,作为模板。 另一个例子,如果我去 http://.......com/index.php/category/anothercat/ 它应该去获取 archive-anothercat.twig 。有没有可能我理解错了?因为如果是这种情况,我的入门主题将无法按预期工作。 我在文档中找不到动态解决方案,如果不是的话。
一切正常。当 is_category()
为真时,存档将通过 get_query_var( 'cat' )
获取类别 ID,而不是类别名称。
您可以更新 archive.php 中的代码以添加您要使用的 Twig 模板。例如:
else if ( is_category() ) {
$term = new Timber\Term( get_queried_object_id() );
$context['term'] = $term;
$context['title'] = single_cat_title( '', false );
array_unshift( $templates, 'archive-' . $term->slug . '.twig' );
}
或者您也可以使用不同的 PHP 模板。考虑 list of PHP templates on wphierarchy.com。在那里你可以看到你可以在主题根目录中使用 category.php 文件:
$context = Timber::get_context();
$context['title'] = single_cat_title( '', false );
Timber::render( 'archive-category.twig', $context );