Допустим, у нас есть сайт с поддержкой двух и более языков, и нужно выводить разные логотипы в зависимости от текущего языка. Ну, потому что там надписи переведены.
Если исходить из того, что лого выводится в блоке Site branding, то вопрос решается вот таким небольшим кодом, размещенным в файле темы mytheme.theme
:
/**
*
* hook_preprocess_block()
*
* @param array $variables
*/
function mytheme_preprocess_block(&$variables) {
if ($variables['plugin_id'] == 'system_branding_block') {
// определяем язык
if (\Drupal::languageManager()->getCurrentLanguage()->getId() == 'ru') {
$logo_name .= 'logo.svg';
} else {
$logo_name .= 'logo-en.svg';
}
$variables['site_logo'] = '/themes/mytheme/' . $logo_name;
}
}
Файлы с логотипами, соответственно, хранятся в /themes/mytheme/logo.svg
и /themes/mytheme/logo-en.svg
. А если на странице несколько блоков с разными лого (например, в хедере и футере), различать их можно, проверяя содержимое $variables['elements']['#id']
.