web-dev-qa-db-fra.com

Comment obtenir l'image d'un produit dans Magento?

J'exécute la version 1.3.2.1, Mais sur le serveur de mon client, ils avaient Magento 1.3.0so.

echo $this->helper('catalog/image')->init($_product)->resize(163, 100);

, ne fonctionne pas sur l'installation du client.

En regardant les résultats renvoyés par leur Magento, la version 1.3.0 renvoie en réalité une URL bien qu'elle pointe vers le dossier multimédia de l'enveloppe.

Existe-t-il un moyen d'obtenir le chemin absolu de l'image?
Ou devrais-je apporter des modifications ailleurs qui indiqueraient à Magento que le répertoire des supports doit se trouver à la racine?

46
lock
echo $_product->getImageUrl();

Cette méthode de la classe Product devrait faire l'affaire pour vous.

53
silvo

Vous pouvez essayer de remplacer $this-> par Mage:: dans certains cas. Vous devez convertir en chaîne.

Dans mon cas, j'utilise l'extension DirectResize(lien direct) , mon code ressemble à ceci:

(string)Mage::helper('catalog/image')->init($_product, 'image')->directResize(150,150,3)

Les options de ratio (3ème paramètre) sont: 

  • aucune proportionnelle. L'image sera redimensionnée aux valeurs de largeur et de hauteur. 
  • proportionnel, basé sur la valeur de largeur 2
  • proportionnel, basé sur la valeur de hauteur 3
  • proportionnelle pour la nouvelle image peut tenir dans les valeurs de largeur et la hauteur. 4
  • proportionnel. La nouvelle image couvrira une zone avec les valeurs de largeur et de hauteur.

Mise à jour: autres informations et versions ici


La manière courante, sans plugin serait:

(string)Mage::helper('catalog/image')->init($_product, 'image')->resize(150)

Vous pouvez remplacer "image" par "small_image" ou "miniature".

32
Ricardo Martins

J'ai récemment eu besoin de faire cela aussi…

$_product->getMediaGalleryImages()->getItemByColumnValue('label', 'LABEL_NAME')->getUrl();

J'espère que cela vous aide!

13
Remy

Voici comment j'ai trouvé pour charger toutes les données d'image de tous les produits d'une collection. Je ne suis pas sûr pour le moment pourquoi il est nécessaire de passer de Mage :: getModel à Mage :: helper et de recharger le produit, mais cela doit être fait. J'ai procédé à une ingénierie inverse de ce code à partir de l'api soap image de magento, je suis donc presque certain qu'il est correct.

Je l'ai configuré pour charger les produits avec un code de fournisseur égal à '39', mais vous pouvez le remplacer par n'importe quel attribut, ou simplement charger tous les produits, ou charger la collection de votre choix (y compris les collections des fichiers phtml affichant les produits en cours). l'écran!)

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addFieldToFilter(array(
    array('attribute'=>'vendor_code','eq'=>'39'),
));

$collection->addAttributeToSelect('*');

foreach ($collection as $product) {

    $prod = Mage::helper('catalog/product')->getProduct($product->getId(), null, null);

    $attributes = $prod->getTypeInstance(true)->getSetAttributes($prod);

    $galleryData = $prod->getData('media_gallery');

    foreach ($galleryData['images'] as &$image) {
        var_dump($image);
    }

}
8
Mitch Thompson

Vous devez d’abord vérifier que la base, la petite image et la vignette sont bien sélectionnées dans l’administrateur de Magento.

admin-> catalogue-> gérer le produit-> produit-> image

Ensuite, sélectionnez vos rôles d'image (base, petite, miniature)enter image description here

Ensuite, vous appelez l'image en utilisant 

echo $ this-> helper ('catalogue/image') -> init ($ _ product, 'small_image') -> resize (163, 100);

J'espère que cela vous aide. 

5
Gowri
// Let's load the category Model and grab the product collection of that category

$product_collection = Mage::getModel('catalog/category')->load($categoryId)->getProductCollection();

// Now let's loop through the product collection and print the ID of every product 
foreach($product_collection as $product) {
  // Get the product ID

$product_id = $product->getId();

  // Load the full product model based on the product ID

$full_product = Mage::getModel('catalog/product')->load($product_id);

  // Now that we loaded the full product model, let's access all of it's data

  // Let's get the Product Name

  $product_name = $full_product->getName();

  // Let's get the Product URL path

  $product_url = $full_product->getProductUrl();

  // Let's get the Product Image URL

  $product_image_url = $full_product->getImageUrl();

  // Let's print the product information we gathered and continue onto the next one

 echo $product_name;

  echo $product_image_url;


}
4
Suma Gowda
<img src='.$this->helper('catalog/image')->init($product, 'small_image')->resize(225, 225).' width=\'225\' height=\'225\'/>
4
Arthur Yakovlev

Si vous avez un objet de collection de produits comme:

$collection = Mage::getModel('catalog/product')->getCollection(); 

Maintenant, vous pouvez obtenir le produit en utilisant $_product->getSku() si vous ne pouvez pas obtenir le chemin de l'image avec 

echo $this->helper('catalog/image')->init($_product,'small_image')->resize(135);

Ou 

$_product->getImageUrl();

Ensuite, vous pouvez ajouter un petit code 

$productModel = Mage::getModel('catalog/product');
$_prod = $productModel->loadByAttribute('sku', $_product->getSku()); 
$_prod->getImageUrl();
3
Shiv Kumar Sah

Vous devez définir le type d'image: small_image ou image 

echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(163, 100);
2
alex
$model = Mage::getModel('catalog/product'); //getting product model
$_products = $model->getCollection(); //getting product object for particular product id
foreach($_products as $_product) { ?>
    <a href = '<?php echo $model->load($_product->getData("entity_id"))->getUrl_path(); ?>'> <img src= '<?php echo $model->load($_product->getData("entity_id"))->getImageUrl();  ?>' width="75px" height="75px"/></a>
     <?php echo "<br/>".$model->load($_product->getData("entity_id"))->getPrice()."<br/>". $model->load($_product->getData("entity_id"))->getSpecial_price()."<br/>".$model->load($_product->getData("entity_id"))->getName()?>
<?php 
2
Vikrant 33

obtenir des images de produit dans magento en utilisant l'identifiant du produit

    $product_id = $_POST['product_id'];
    $storeId    = Mage::app()->getStore()->getId();
    $loadpro    = Mage::getModel('catalog/product')->load($product_id);

    $mediaApi      =  Mage::getModel("catalog/product_attribute_media_api");
    $mediaApiItems = $mediaApi->items($loadpro->getId());
    foreach ($mediaApiItems as $item) {
            //for getting existing Images
            echo $item['file'];
            }
1
Sathish Kumar VG
(string)Mage::helper('catalog/image')->init($product, 'image');

cela vous donnera l'URL de l'image, même si l'image est hébergée sur CDN.

0
Hari Krishnan