Twig:确定菜单项是否有翻译

时间:2018-05-25 07:23:25

标签: twig drupal-8

在我的Drupal 8设置中,我配置了两种语言(德语:默认,英语)。并非所有页面都有英文翻译,但它们会显示在导航中。

我想突出显示那些链接到没有当前所选语言翻译的网页的菜单项。

那么我怎么能在Twig中做到这一点?当我转储菜​​单项时,我看到一个类 MenuLinkContent 的对象,它有一个字段 entity ,可能包含答案:

object(Drupal\menu_link_content\Plugin\Menu\MenuLinkContent)[31277]
    [...]
  protected 'entity' =>
    object(Drupal\menu_link_content\Entity\MenuLinkContent)[31407]
      [...]
        protected 'translations' => 
          array (size=2)
            'x-default' => 
              array (size=2)
                ...
            'en' => 
              array (size=2)
                ...
[...]

但我似乎无法真正阅读这些价值观。

1 个答案:

答案 0 :(得分:0)

很容易,首先,您必须通过yourtheme_preprocess将当前语言添加到任何变量

yourtheme_preprocess(&$vars, $hook)
{
  $language = \Drupal::languageManager()->getCurrentLanguage()->getId();
  $vars['langcode'] = $language;
}

现在在你的树枝模板中,你必须检查你的实体是否有翻译,

{% if node.hasTranslation(langcode) %}
   {% set node = node.getTranslation(langcode) %}
{% endif %}