#templates #drupal #twig #drupal-8
#шаблоны #drupal #twig #drupal-8
Вопрос:
Я создаю шаблон TWIG для домашней страницы моего сайта на Drupal 8.
page--front.html.twig
Я хочу отобразить на этой странице фотографию текущего пользователя.
Как отобразить изображение текущего пользователя в модели TWIG?
Ответ №1:
Вы можете использовать этот код для получения изображения пользователя:
$user = DrupaluserEntityUser::load(Drupal::currentUser()->id());
if (!$user->user_picture->isEmpty()) {
$displayImg = file_create_url($user->user_picture->entity->getFileUri());
}else{
$displayImg = '';
}
Затем передайте его как переменную в twig, проверьте, пустое оно или нет, и в зависимости от этого распечатайте внутри какого-нибудь тега img.
Обновить:
Чтобы получить URL-адрес в стиле изображения, вы могли бы сделать что-то вроде:
$style = Drupal::entityTypeManager()->getStorage('image_style')->load('thumbnail');
$url = $style->buildUrl($displayImg);
Основано на: https://www.webomelette.com/how-render-your-images-image-styles-drupal-8
И вы должны назначить переменную twig из вашего контроллера домашней страницы.
Комментарии:
1. Спасибо, это пользовательский модуль или в файле .theme ? Есть ли другой способ сделать это? Например, я могу получить имя пользователя с помощью
{{ user.displayname }}
и идентификатор с{{ user.id }}
непосредственно в годах TWIG. Я хотел бы отобразить изображение пользователя со стилем.2. Обновлен мой ответ о том, как получить URL-адрес в стиле изображения. Извините, я не знаю лучшего решения для этого, даже если это звучит логично, чего вы ожидали.
3. Как мне следует поступить? вы должны поместить этот код в .theme или в пользовательский модуль?