blocul meu modul personalizat, fără cache
<?php
spațiu de nume Drupal\amu_social_icon\Plugin\Block;
utilizați Drupal\Core\Block\BlockBase;
/**
* Oferă un bloc „pictogramă”.
*
* @Bloc(
* id = "amu_social_icon_block",
* admin_label = @Translation ("Bloc de pictograme sociale"),
* )
*/
clasa IconBlock extinde BlockBase {
/**
* {@inheritdoc}
*/
public function build() {
$config = \Drupal::config('amu_social_icon.settings');
întoarcere [
'#theme' => 'amu_social_icon_block',
'#icons' => $config->get('amu_social_icon_icons'),
'#attached' => [
'biblioteca' => [
„amu_social_icon/global-styling”,
],
],
];
}
/**
* @return int
*/
funcția publică getCacheMaxAge() {
întoarce 0;
}
}
contextul lingvistic pe care încerc să îl adaug pe adresele URL interne
<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>
Am înțeles că variabilele transmise de hook_theme sunt statice, așa că am încercat să o înlocuiesc pe blocul de preprocesare
funcția amu_social_icon_theme($existent, $tip, $temă, $cale) {
întoarcere [
'amu_social_icon_block' => [
'variabile' => [
'icoane' => nul,
'language' => \Drupal::languageManager()->getCurrentLanguage()->getId()
],
],
];
}
funcția amu_social_icon_preprocess_block(&$vars) {
dacă ($vars['plugin_id'] == 'amu_social_icon_block') {
$limba = \Drupal::languageManager()->getCurrentLanguage()->getId();
$vars['limba'] = $limba;
}
}
Niciuna dintre aceste lucrări. Trebuie să golesc memoria cache Drupal, astfel încât
{{ dump(limbă) }}
afișați limba curentă corectă