aaronkirkham / wp-timber-view-controller
WordPress 上使用 Timber 的视图控制器
Requires
- brain/hierarchy: ^2.3
- timber/timber: ^1.7
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 尝试渲染的模板的层次列表。请仔细检查显示的模板路径和文件名是否正确。