aaronkirkham/wp-timber-view-controller

WordPress 上使用 Timber 的视图控制器

v1.2.0 2018-05-19 00:05 UTC

This package is not auto-updated.

Last update: 2024-09-22 08:52:59 UTC


README

如果你像我一样讨厌为 WordPress 编写两个文件来渲染 twig 模板(例如,用于上下文的 page.php 和用于标记的 page.twig),那么这个库就是为你准备的。它遵循 WordPress 模板层次结构,因此你也可以创建例如 single-{post_type}.twig 的文件。

如何使用

使用 wp-timber-view-controller 很简单。

composer require aaronkirkham/wp-timber-view-controller

然后在你主题的 functions.php 文件中放置以下代码

require_once( __DIR__ . '/vendor/autoload.php' );

new Timber\Timber;
new Timber\ViewController;

然后就可以了。你的 Twig 模板将被自动渲染。

这个库使用内部的 Timber::$dirname 变量来定位你的模板(默认文件夹是 views)。如果你想将文件存放在不同的文件夹中,你必须重写这个变量。

// look inside /templates/ instead of /views/
Timber::$dirname = 'templates';

如果你需要向 Timber 上下文中添加变量,有一些方便的过滤器可供使用。

过滤器:timber_context--%TEMPLATE%

当渲染特定模板时,会触发 timber_context--%TEMPLATE% 过滤器(其中 %TEMPLATE% 是当前模板名称)。如果你想在特定页面上获取 WordPress 的文章,这会很有用。

add_filter( 'timber_context--404', function( $ctx ) {
  $ctx['message'] = '404 - Not Found';
  return $ctx;
});
add_filter( 'timber_context--single', function( $ctx ) {
  $ctx['post'] = new \Timber\Post();
  return $ctx;
});

在上面的示例中,message 变量将在使用 404.twig 模板渲染的所有页面上可用,而 post 变量将在所有 single.twig 模板上可用。

注意

如果你想为每个模板添加数据到上下文中,你应该使用由 Timber 触发的 timber_context 过滤器。

add_filter( 'timber_context', function( $ctx ) {
  $ctx['foo'] = 'bar';
  return $ctx;
});

现在变量 foo 在所有模板中都可用。

白屏了吗?

如果你的 twig 模板没有渲染,或者你只看到一个白屏,你应该在 wp-config.php 中开启 WP_DEBUG 来查看 wp-timber-view-controller 尝试渲染的模板的层次列表。请仔细检查显示的模板路径和文件名是否正确。