derekderaps / twigshim
Requires
- twig/twig: ~1.29
This package is not auto-updated.
Last update: 2022-02-01 13:03:58 UTC
README
将 Twig 模板编译到 Drupal 7。特别适用于您已经在另一个系统中(例如外部样式指南)使用 twig 模板渲染组件,且不想在 PHPTemplate 中重新实现所有内容的情况。
安装
下载 Twig 库
此项目依赖于 Twig PHP 库,可以通过以下三种方式之一进行安装
- Composer Manager*(推荐)
- Composer
- 库 API*
通过 Composer Manager
这是推荐安装方法。 安装 Composer Manager 模块* 并按照其安装说明生成您的 composer.json
和下载您的 vendor
依赖项。除 Composer Manager 项目中概述的步骤外,无需进行额外工作。
或者 通过 Composer
按照主要 Composer 项目的安装说明进行操作,然后 cd
到此模块的目录(可能是 sites/all/modules/contrib/twigshim
),并运行 composer install
。
或者 通过库 API
安装 库 API 模块* 并将 Twig 库 下载到您的库目录(可能是 sites/all/libraries
)。
安装 Twig Shim 模块
按照正常的 Drupal 模块安装程序。
*有关安装 Drupal 模块的说明,请参阅 Drupal.org 文档。
使用方法
如果您的模板不在默认主题的 templates
子目录中,请访问 /admin/conig/development/twigshim
并设置适当的路径。所有模板引用都相对于此路径解析。不要包含前导或尾随斜杠。
主要的 Twig Shim 函数是 twigshim_render()
。用您的模板路径(相对于您刚刚设置的模板目录)和可选的变量数组调用此函数,变量数组用于模板。示例
/**
* Implements hook_block_view().
*/
function mymodule_block_view($delta = '') {
switch ($delta) {
// Render the header block.
case 'myblock':
return twigshim_render('chrome/header.twig', array(
'campaign' => variable_get('mysite_current_campaign', 'Donate now!'),
'hidePopup' => !user_is_anonymous(),
));
break;
}
}
在渲染实体时,使用辅助函数 twigshim_render_entity()
自动将实体的每个字段和属性拉入变量数组。它从每个键的开头删除 field_
,便于在样式指南和实现之间重用变量。
/**
* Implements theme_HOOK() for paragraphs_item__button().
*/
function mytheme_paragraphs_item__button(&$vars) {
// Get a wrapper for the button entity.
$button = entity_metadata_wrapper('paragraphs_item', $vars['paragraphs_item']);
// Set values for any fields that don't follow the standard format.
$template_vars['href'] = $button->field_href->url->value();
return twigshim_render_entity('paragraphs_item', $button, 'button/button.twig', $template_vars);
}
请注意,在将变量传递给Twig Shim之前,调用者负责正确地清理所有变量。请参阅Drupal.org上的文档关于编写安全代码和清理函数。