2015-11-03 13 views

risposta

11

Attualmente drupal 8 non ha un filtro speciale per applicare lo stile di immagine. Invece è possibile impostare nuovo attributo per l'immagine in questo modo:

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

Poi semplicemente uscita l'immagine aggiornata:

{{ image }} 

P.S. È possibile fare {{ dump(image) }} per vedere quali attributi è possibile aggiornare

+0

Inoltre ho trovato anche nelle impostazioni del tipo di contenuto, è possibile visualizzare tutte le immagini per quel tipo di contenuto di essere di Image Style X. Quindi potrei farlo dalla mia risposta o dalla tua, ma la tua è meglio imo. – Kato

+1

Quale variabile dovrei usare per "immagine"? content.field_bloc_1_image.entity non funziona ad esempio: s –

+0

Non ho potuto farlo funzionare. Non usa lo stile dell'immagine? Ho {% set image = content.field_global_image | merge ({'# image_style': 'thumbnail'})%} {{image}} – paulcap1

4

Risolve questo creando il mio filtro Twig.

È possibile fare lo stesso creando il proprio modulo esponendo questo filtro .

Sentiti libero di riutilizzarlo.

Codice

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; 
     } 
} 

Uso

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

Poi si ha accesso all'immagine di origine & stili

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

auguriamo che contribuiscano yo ragazzo!

+0

Ho provato sopra il metodo. Ho inserito il codice sopra in '/ modules/custom_module/src/TwigExtension/Images.php', ottenendo comunque la funzione errore' Twig_Error_Syntax: Unknown "image_style". in Twig_ExpressionParser -> .. ' – ARUN

+0

Da ora sto usando Bamboo Twig (modulo Drupal 8). Che espongono, nell'estensione Bamboo Twig Loader, 2 funzioni di ramoscello per il rendering delle immagini. Ecco il documento di Bamboo Twig: https://www.drupal.org/docs/8/modules/bamboo-twig/usage. Le funzioni sono 'bamboo_render_image' e' bamboo_render_image_style'. –

Problemi correlati