Шаблоны для лесоматериалов / TWIG для отдельных категорий
Итак, в стартовой теме у нас есть это:
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:/index.php/category/newcategory/, он должен взять файл archive-newcategory.twig в качестве шаблона. Другой пример, если я захожу на http:/index.php/category/anothercat/, он должен взять архив-anothercat.twig. Возможно ли, что я понимаю что-то не так? Потому что, если это так, моя начальная тема не работает, как задумано. Я не могу найти динамическое решение в документах, если это не то.
1 ответ
Это работает как задумано. когда is_category()
верно, архив будет получать идентификатор категории через get_query_var( 'cat' )
а не название категории.
Вы можете обновить код в 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. Рассмотрим список шаблонов PHP на wphierarchy.com. Там вы можете увидеть, что вы можете использовать файл category.php в корне вашей темы:
$context = Timber::get_context();
$context['title'] = single_cat_title( '', false );
Timber::render( 'archive-category.twig', $context );