Drupal 8 Twig - 自定义块 - 两个工作第三的树枝模板不是吗?

时间:2017-09-28 09:42:21

标签: drupal twig drupal-8 drupal-theming

我有一个自定义模块modero_kbo,用于创建自定义块。 我需要以不同的方式显示此块,具体取决于它在我的页面上的位置。

我在modero_kbo.module中有这个功能:

function modero_kbo_theme() {
  return array(
    'modero_kbo_vat' => array(
      'variables' => array(
        'form' => NULL
      )
    ),
    'modero_kbo__landing_page' => array(
      'variables' => array(
        'form' => NULL
      )
    ),
    'modero_kbo__landing_page__modero_kbo_form_2.html.twig' => array(
      'variables' => array(
        'form' => NULL
      )
    ),
  );
}

这是我的自定义主题.theme文件:

/**
 * Implements hook_theme_suggestions_HOOK_alter() for modero_kbo.html.twig.
 */
function moderosolid_theme_suggestions_modero_kbo_vat_alter(array &$suggestions, array $variables) {
  if($node = \Drupal::routeMatch()->getParameter('node')){
    $suggestions[] = 'modero_kbo__' . $node->bundle();
    $suggestions[] = 'modero_kbo__' . $node->bundle() . '__' . $variables['form']['#attributes']['data-drupal-selector'];
  }
}

所有3个模板建议都显示在我页面上的html源代码中。 前两个实际工作,第三个不工作。 我已经检查了所有的文件名和拼写。

我有3个不同的模板文件,前两个正在工作,第三个在建议列表中显示,但由于某种原因未使用?

modero-kbo-vat.html.twig
modero-kbo--landing-page.html.twig
modero-kbo--landing-page--modero-kbo-form-2.html.twig

enter image description here

1 个答案:

答案 0 :(得分:0)

我们在这里发现的一个错误是我应该只使用modero_kbo_theme()函数中的第一个数组。

moderosolid_theme_suggestions_modero_kbo_vat_alter改变了这个主题。

我们无法弄清楚为什么第3个钩子不起作用,我们怀疑表格变量可能在过程中的某个时刻不可用。

我通过复制块并使用自定义模板创建新块来解决此问题。