Я не знаком с календарем событий ME C, но, посмотрев на ваш фрагмент кода, я думаю, вы могли бы заставить его работать, по крайней мере, до определенного уровня.
У вас есть эти три линии, такие , готовят данные, которые должны отображаться в шаблоне.
$single = new MEC_skin_single();
$single_event_main = $single->get_event_mec(get_the_ID());
$single_event_obj = $single_event_main[0];
В Timber и Twig вам нужно подготовить данные в PHP, а затем передайте его вашему шаблону Twig. Вот как бы я это сделал.
<?php
$context = Timber::get_context();
$single = new MEC_skin_single();
$single_event_main = $single->get_event_mec( get_the_ID() );
$context = array_merge( $context, [
'single' => $single,
'single_event_obj' => $single_event_main[0],
] );
Timber::render( 'single-event.twig', $context );
single-event.twig
{% extends 'base.twig' %}
{% block content %}
{# Date Widget #}
{{ single.display_date_widget(single_event_obj) }}
{# Time Widget #}
{{ single.display_time_widget(single_event_obj) }}
{# Location Widget #}
{{ single.display_location_widget(single_event_obj) }}
{# Label Widget #}
{{ single.display_label_widget(single_event_obj) }}
{# Export Widget #}
{{ single.display_export_widget(single_event_obj) }}
{# Social #}
{{ single.display_social_widget(single_event_obj) }}
{% endblock }
В Timber у вас обычно есть базовый шаблон, который вы расширяете. И в этом базовом шаблоне вы определяете блоки, в которые будет помещаться ваш контент. Для этого и нужны теги {% extend %}
и {% block %}
. Благодаря этому вы можете избавиться от get_header()
и get_footer()
.
Поскольку $single
является объектом с методами display_*_widget()
, мы можем получить доступ к этой функции через точечную запись. Методы нуждаются в $single_event_obj
в качестве параметра, поэтому мы гарантируем, что эта переменная также передается в данные шаблона.
В случае, если вам теперь нужен доступ к post.thumbnail
и post.title
, вы также можете подготовить переменная post
в вашем шаблоне PHP:
<?php
$context = Timber::get_context();
$single = new MEC_skin_single();
$single_event_main = $single->get_event_mec( get_the_ID() );
$context = array_merge( $context, [
'post' => Timber::get_post(),
'single' => $single,
'single_event_obj' => $single_event_main[0],
] );
Timber::render( 'single-event.twig', $context );