Twig: определить, есть ли у пункта меню перевод - PullRequest
0 голосов
/ 25 мая 2018

В моей настройке 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 голосов
/ 25 мая 2018

Легко, во-первых, вы должны добавить свой текущий язык к любой переменной с помощью yourtheme_preprocess

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

, и теперь в вашем шаблоне ветки вы должны проверить свою сущность, если есть перевод,

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