如何将 php 模板转换为 Timber (Wordpress)
How to convert php template to Timber (Wordpress)
我可以创建一个全新的 Timber 模板,但我需要覆盖一个插件模板 (MEC Events) - 插件支持对此提供了帮助,但它在 php 中有效并引入我的基本树枝模板中的页眉和页脚,但不包括它应该包含的 post.thumbnail
和 post.title
。
在任何情况下,我都希望将整个站点保留在 Timber/Twig 中,但不知道从哪里开始将其转换为 Timber 模板。这是 php 模板,非常感谢任何帮助:
<?php
/**
* The Template for displaying all single events
*/
get_header();
$single = new MEC_skin_single();
$single_event_main = $single->get_event_mec(get_the_ID());
$single_event_obj = $single_event_main[0];
// 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); // Show Location
// 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);
get_footer();
我不熟悉 MEC 事件日历,但从您的代码片段来看,我认为您可以让它发挥作用,至少在一定程度上。
你有这三行,那种准备应该在模板中显示的数据。
$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 );
单-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
,您还可以在 PHP 模板中准备一个 post
变量:
<?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 );
我可以创建一个全新的 Timber 模板,但我需要覆盖一个插件模板 (MEC Events) - 插件支持对此提供了帮助,但它在 php 中有效并引入我的基本树枝模板中的页眉和页脚,但不包括它应该包含的 post.thumbnail
和 post.title
。
在任何情况下,我都希望将整个站点保留在 Timber/Twig 中,但不知道从哪里开始将其转换为 Timber 模板。这是 php 模板,非常感谢任何帮助:
<?php
/**
* The Template for displaying all single events
*/
get_header();
$single = new MEC_skin_single();
$single_event_main = $single->get_event_mec(get_the_ID());
$single_event_obj = $single_event_main[0];
// 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); // Show Location
// 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);
get_footer();
我不熟悉 MEC 事件日历,但从您的代码片段来看,我认为您可以让它发挥作用,至少在一定程度上。
你有这三行,那种准备应该在模板中显示的数据。
$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 );
单-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
,您还可以在 PHP 模板中准备一个 post
变量:
<?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 );