мой пользовательский блок модуля, предположительно без кеша
<?php
пространство имен Drupal\amu_social_icon\Plugin\Block;
используйте Drupal\Core\Block\BlockBase;
/**
* Предоставляет блок «Значок»
*
* @Блокировать(
* id = "аму_социальный_икон_блок",
* admin_label = @Translation("Блок социальных иконок"),
* )
*/
класс IconBlock расширяет BlockBase {
/**
* {@inheritdoc}
*/
общедоступная функция сборки () {
$config = \Drupal::config('amu_social_icon.settings');
возвращаться [
'#theme' => 'amu_social_icon_block',
'#icons' => $config->get('amu_social_icon_icons'),
'# прикрепленный' => [
'библиотека' => [
'amu_social_icon/глобальный стиль',
],
],
];
}
/**
* @возврат внутр.
*/
общедоступная функция getCacheMaxAge() {
вернуть 0;
}
}
языковой контекст, который я пытаюсь добавить к внутренним URL-адресам
<ul class="social-icon menu socialicon-nav">
{{ dump(language) }}
{% for icon in icons %}
{% if icon.url is not empty %}
{% if icon.url starts with '/' %}
<li><a href="/{{ language }}{{ icon.url }}" aria-label="{{ icon.aria_label }}"><i aria-hidden="true" class="{{ icon.icon }}"></i></a></li>
{% else %}
<li><a href="{{ icon.url }}" aria-label="{{ icon.aria_label }}"><i aria-hidden="true" class="{{ icon.icon }}"></i></a></li>
{% endif %}
{% endif %}
{% endfor %}
</ul>
я понял, что переменная, переданная hook_theme, является статической, поэтому я попытался переопределить ее в блоке предварительной обработки.
функция amu_social_icon_theme ($ существующая, $ тип, $ тема, $ путь) {
возвращаться [
'аму_социал_икон_блок' => [
'переменные' => [
'значки' => ноль,
'язык' => \Drupal::languageManager()->getCurrentLanguage()->getId()
],
],
];
}
функция amu_social_icon_preprocess_block(&$vars) {
если ($vars['plugin_id'] == 'amu_social_icon_block') {
$language = \Drupal::languageManager()->getCurrentLanguage()->getId();
$vars['язык'] = $язык;
}
}
Ни одна из этих работ. Мне нужно очистить кеш друпала, чтобы
{{ дамп(язык) }}
отображать правильный текущий язык