derekderaps/twigshim

该软件包已被废弃且不再维护。作者建议使用 https://www.drupal.org/project/twigshim 软件包。

将 Twig 模板编译到 Drupal 7。

安装次数: 2,070

依赖项: 0

建议者: 0

安全性: 0

星星: 3

关注者: 22

分支: 1

开放问题: 6

类型:drupal-module

1.0.0-alpha1 2017-01-03 18:19 UTC

README

将 Twig 模板编译到 Drupal 7。特别适用于您已经在另一个系统中(例如外部样式指南)使用 twig 模板渲染组件,且不想在 PHPTemplate 中重新实现所有内容的情况。

安装

下载 Twig 库

此项目依赖于 Twig PHP 库,可以通过以下三种方式之一进行安装

  1. Composer Manager*(推荐)
  2. Composer
  3. 库 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上的文档关于编写安全代码清理函数