web-dev-qa-db-fra.com

Utilisation de theme_image_style ()

J'essaie d'afficher les vignettes des images téléchargées dans un formulaire personnalisé. Bien que je puisse voir les images dans mon tableau de formulaires après les avoir téléchargées dans le répertoire tmp de Drupal, voici ce que j'essaie d'utiliser pour les afficher:

$url = file_create_url($form_object->uploads[$key]->uri);
$output .= '<div class="grid-3">'.theme_image_style(array('style' => 'form-preview', 'path' => $url)).'</div>';

Bien que $url Pointe vers la ressource de fichier, je ne peux pas afficher une image redimensionnée pour ma vie. Si j'utilise une balise img et que je mets $url Comme source, les images apparaissent, mais elles sont énormes.

Puis-je ne pas appeler theme_image_style() car ce ne sont que des images temporaires et non permanentes? Je peux les faire apparaître avec theme_image().

6
Kevin

Comme suggéré, utilisez le thème ('image_style', ...), à partir des documents - changez simplement votre code en ceci:

url = file_create_url($form_object->uploads[$key]->uri);
$output .= '<div class="grid-3">'.theme('image_style', array('style_name' => 'form-preview', 'path' => $url)).'</div>';
4
ipwa

Comme toujours, la documentation Drupal a la réponse. Vous devez déplacer le fichier vers le répertoire files. Vous devez également jamais appeler directement une fonction de thème mais appeler wrapper theme fonctionne donc:

theme_image_style(...) // Don't do this ever

theme('image_style', ...) // Do it like this and make themers happy.

Depuis les documents de l'API:

$ variables Un tableau associatif contenant:

  • style_name: nom du style à utiliser pour modifier l'image d'origine.
  • path: Le chemin du fichier image par rapport au répertoire Drupal files. Cette fonction ne fonctionne pas avec les images en dehors du répertoire files ni avec les images hébergées à distance.
  • alt: le texte alternatif pour les navigateurs textuels.
  • title: le texte du titre s'affiche lorsque l'image est survolée dans certains navigateurs populaires.
  • attributs: tableau associatif d'attributs à placer dans la balise img.
9
googletorp

est préférable d'ajouter votre classe avec la propriété attributes quelque chose comme

theme_image_style(array('style' => 'form-preview', 'path' => $url,'attributes'=>array('class'=>array('class1', 'class2')));
1
Yusef

J'ai dû résoudre ce problème pour servir des fichiers à partir de sites/tous/modules et la réponse peut être vue dans Style d'image de thème pour l'image située dans le répertoire du module

Implique la génération d'un rappel de thème personnalisé qui gère n'importe quel fichier et crée les dérivés de l'image lors de l'exécution de la demande de page, de sorte que vous liez directement au fichier plutôt que de faire une demande asynchrone qui crée l'image.

Meilleures suggestions/contournements bienvenus!

0
Alan D.