web-dev-qa-db-ja.com

Magentoで製品の画像を取得する方法は?

バージョン1.3.2.1で実行していますが、クライアントのサーバーにはMagento 1.3.0があったため、以前のコードでローカルコピーの画像を表示し、

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

、クライアントのインストールでは機能しません。

Magentoが返す結果を見ると、バージョン1.3.0は実際にはURLを返しますが、スキンのメディアフォルダーを指します。

画像の絶対画像パスを取得する方法はありますか?
または、Magentoにメディアディレクトリがルート上にあることを通知する他の場所で変更を行う必要がありますか?

47
lock
echo $_product->getImageUrl();

Productクラスのこのメソッドは、あなたのためのトリックを行う必要があります。

54
silvo

場合によっては、$this->Mage::に置き換えることができます。文字列に変換する必要があります。

私の場合、 DirectResize extension(direct link) を使用しているため、コードは次のようになります。

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

比率オプション(3番目のパラメーター)は次のとおりです。

  • 比例しない。画像の幅と高さの値が変更されます。
  • 幅の値2に基づいて比例
  • 高さの値3に基づいて比例
  • 新しい画像のプロポーショナルは、幅と高さの値に収まります。 4
  • 比例。新しい画像は、幅と高さの値を持つ領域をカバーします。

更新:その他の情報とバージョン こちら


一般的な方法、プラグインなしでは(

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

「image」を「small_image」または「thumbnail」に置き換えることができます。

32
Ricardo Martins

私も最近これを行う必要がありました...ここに私がそれを得た方法があります:

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

それがあなたを助けることを願っています!

13
Remy

コレクション内のすべての製品のすべての画像データを読み込む方法を以下に示します。現時点では、なぜMage :: getModelからMage :: helperに切り替えて製品をリロードする必要があるのか​​わかりませんが、それを行う必要があります。私はこのコードをmagentoイメージsoap APIからリバースエンジニアリングしました。そのため、間違いなく正しいと確信しています。

「39」に等しいベンダーコードの製品をロードするように設定していますが、それを任意の属性に変更したり、すべての製品をロードしたり、必要なコレクション(現在の製品を表示するphtmlファイル内のコレクションを含む)スクリーン!)

$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

まず、Magento adminでベース画像、小さい画像、およびサムネイル画像が選択されていることを確認する必要があります。

admin-> catalog-> manage product-> product-> image

次に、画像の役割(ベース、スモール、サムネイル)を選択しますenter image description here

次に、画像を使用して呼び出します

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

これがお役に立てば幸いです。

5
Gowri
<img src='.$this->helper('catalog/image')->init($product, 'small_image')->resize(225, 225).' width=\'225\' height=\'225\'/>
5
Arthur Yakovlev
// 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

次のような製品コレクションオブジェクトがある場合:

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

これで、イメージパスを取得できない場合は、$_product->getSku()を使用して製品skuを取得できます

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

または

_$_product->getImageUrl();
_

その後、小さなコードを追加できます

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

画像タイプを設定する必要があります:small_imageまたは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

製品IDを使用してMagentoで製品画像を取得する

    $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
(string)Mage::helper('catalog/image')->init($product, 'image');

これにより、画像がCDNでホストされている場合でも、画像のURLが表示されます。

0
Hari Krishnan