Как использовать стиль изображения в шаблоне Drupal 8 twig?


Как использовать стиль изображения в шаблоне Drupal 8 twig?

04.11.2015 01:10:45 Просмотров 77 Источник

Я пытаюсь распечатать изображение, используя стиль изображения, который я создал в своей теме drupal 8.

Я могу распечатать изображение в шаблоне, выполнив {{ content.баннер }} но как я могу применить стиль изображения к этому изображению? Я попытался найти документацию, но, похоже, ее там нет.

У вопроса есть решение - Посмотреть?

Ответы - Как использовать стиль изображения в шаблоне Drupal 8 twig? / How to use an image style in a Drupal 8 twig template?

Является ответом!
pavlovich

12.11.2015 01:56:17

В настоящее время drupal 8 не имеет специального фильтра для применения стиля изображения. Вместо этого вы можете установить новый атрибут для вашего изображения, как это:

{% set image = image|merge({'#image_style': 'thumbnail'}) %}

Затем просто выведите обновленное изображение:

{{ image }}

П. С. Вы можете сделать {{ dump(image) }}, чтобы увидеть, какие атрибуты можно обновить

https://stackoverflow.com/questions/33510051/how-to-use-an-image-style-in-a-drupal-8-twig-template/33669851#comment55268952_33669851
Я также нашел в настройках типа контента, вы можете отображать все изображения для этого типа контента, чтобы иметь стиль изображения X. Поэтому я мог бы сделать это из моего ответа или вашего, но ваш лучше imo.
https://stackoverflow.com/questions/33510051/how-to-use-an-image-style-in-a-drupal-8-twig-template/33669851#comment71049964_33669851
Какую переменную я должен использовать для "изображения"? содержание.field_bloc_1_image.предприятие не работает например :S
https://stackoverflow.com/questions/33510051/how-to-use-an-image-style-in-a-drupal-8-twig-template/33669851#comment79685822_33669851
Я не мог заставить это работать. Он не использует стиль изображения? У меня есть {% set image = content.field_global_image / merge ({'#image_style': 'thumbnail'})%} {{ изображение }}
https://stackoverflow.com/questions/33510051/how-to-use-an-image-style-in-a-drupal-8-twig-template/33669851#comment87030187_33669851
Я использую медиа-пакет для моего изображения и рендеринга его в узле отображения тизера. Этот код работал для меня, чтобы применить стиль изображения к полю с именем field_teaser_image: {#set image style #} {% set img = content.field_teaser_image.0|слияния (эскиз{ '#image_style':''}) %} {# визуализации изображения #} {{ ИМГ }} благодаря Павлович / Меган!
Kevin Wenger

28.07.2016 11:23:22

Я решаю эту проблему, создавая свой собственный фильтр веточек .

Вы можете сделать то же самое, создав свой собственный модуль, предоставляющий этот фильтр .

Не стесняйтесь повторно использовать его.

Код

namespace Drupal\twig_extender\TwigExtension;

use Drupal\node\Entity\Node;
use Drupal\Core\Link;
use Drupal\Core\Url;

use Drupal\file\Entity\File;
use Drupal\image\Entity\ImageStyle;

class Images extends \Twig_Extension {
     /**
     * Generates a list of all Twig functions that this extension defines.
     */
     public function getFunctions(){
         return array(
             new \Twig_SimpleFunction('image_style', array($this, 'imageStyle'), array('is_safe' => array('html'))),
         );
     }

    /**
    * Gets a unique identifier for this Twig extension.
    */
    public function getName() {
        return 'twig_extender.twig.images';
    }


     /**
      * Generate images styles for given image
      */
      public static function imageStyle($file_id, $styles) {
          $file = File::load($file_id);
          $transform = array();
          if (isset($file->uri->value)) {
              $transform['source'] = $file->url();
              foreach ($styles as $style) {
                  $transform[$style] = ImageStyle::load($style)->buildUrl($file->uri->value);
              }
          }
         return $transform;
      }
}

Использование

{% set transform = image_style(image.entity.fid.value, ['thumbnail', 'large']) %}

Тогда у вас есть доступ к исходному изображению и стилям

{{ transform.source }}
{{ transform.thumbnail }}
{{ transform.large }}

Надеюсь, это поможет вам парень !

https://stackoverflow.com/questions/33510051/how-to-use-an-image-style-in-a-drupal-8-twig-template/38630853#comment78619650_38630853
Я попробовал выше метод. Я поместил приведенный выше код в /modules/custom_module/src/TwigExtension/Images.php, но все еще получает ошибку Twig_Error_Syntax: Unknown "image_style" function. in Twig_ExpressionParser->..
https://stackoverflow.com/questions/33510051/how-to-use-an-image-style-in-a-drupal-8-twig-template/38630853#comment78620182_38630853
С этого момента я использую Bamboo Twig (модуль Drupal 8). Которые выставляют, в расширении Bamboo Twig Loader, 2 функции twig для визуализации изображений. Вот Док из бамбуковой веточки: drupal.org/docs/8/modules/bamboo-twig/usage . функции bamboo_render_image& bamboo_render_image_style.
Dalin

21.03.2019 05:04:06

Вероятно, стоит упомянуть, что полезно сначала подвергнуть сомнению ваше предположение. Вам действительно нужно сделать это в Twig? Если вы можете просто настроить режим просмотра (или поле представлений) для отображения поля изображения с соответствующим (отзывчивым) стилем изображения, это было бы намного проще.

Stef Van Looveren

08.11.2019 05:19:24

Как это сделать без модуля contrib: сделайте его своим собственным массивом рендеринга.

{% for item in content.field_images['#items'] %}
  {% set image = {
    '#theme':      'image_style',
    '#style_name': 'medium',
    '#uri':        item.entity.uri.value,
    '#alt':        item.alt,
    '#width':      item.width,
    '#height':     item.height
  } %}
  {{ image }}
{% endfor %}
Помочь в развитии проекта:
Закрыть X