0

こんにちは、foreach内に があるスクリプトがありますforeach1 つ目foreachは一意の ID に使用されますが、2 つ目foreachは製品の関連画像に使用され、画像の数に応じてループする必要があります。ただし、関連する画像を 1 つだけ取得するように制限されています。関連するすべての画像を取得するにはどうすればよいですか?

$i=0;
foreach ($collection as $product_all) { 
    //echo $product_all->getId().'<br/>';
    if($i==10) break;  
    $id = $product_all->getId();        
    $neew = Mage::getModel('catalog/product')->load($id);         
    //echo'<pre>';
        echo 'active products id ===='.$neew ->getId().'<br/>';  
        echo 'active products name ===='.$neew->getname().'<br/>';    
        echo 'active products style_ideas ===='.$neew->getstyle_ideas().'<br/>';  
        echo 'active products size and fit ===='.$neew->getsize_fit().'<br/>';  
        echo 'active products short description ===='.$neew->getshort_description().'<br/>';  
        echo 'active products  description ===='.$neew->getdescription().'<br/>';  
        //print_r($neew); 
        if (count($neew->getMediaGalleryImages()) > 0){
            $i = 0 ;
            $j = 0 ;
            foreach ($neew->getMediaGalleryImages() as $_image){
                  $relative_image = Mage::helper('catalog/image')->init($neew->getProduct(), 'image', $_image->getFile())->resize(2000);
                  $relative_image1 = str_replace('/webApps/migration/productapi/new/','/',$relative_image);
                  //echo 'relative_image => '.$relative_image1.'<br/>';
                  $relative_image_save = $relative_image1 ;
                  $relative_image_save1 = explode('/', $relative_image_save);//explode / to get only image name
                  $end1 = end($relative_image_save1);
                  $relative_image3 = $end1;
                  //$handle1 = fopen( $relative_image3, 'w') or die('Cannot open file:  '. $relative_image);
                  $path12 = '/mnt/aviesta/development/webApps/migration/productapi/new/'.'sku-'.$neew->getsku().'_' .$i++.'.jpg';
                  copy($relative_image_save, $path12);
                  echo 'relative image with sku path_'.$j++.' ====>'.$path12.'<br/><br/>'; 
               }
           }
      $i++;
}
4

2 に答える 2

0

少し急いで質問を投稿したと思います。スクリプトは正常に機能ます。最初の製品の場合、製品の画像は1つでしたが、新しい製品の場合は複数の画像があり、スクリプトは正常に機能ますポスト .....

于 2013-01-25T05:16:02.147 に答える
0

あなたのコードから、2番目の foreach ループの前に配列を初期化することで問題を解決できると思います。その配列に画像を保存すると、すべての画像を取得するのに役立ちます....これは私があなたの質問から理解したものです。これが正しい場合..、以下のコードが機能する可能性があります....

foreach()
{
    //Your code....
     $image_list = array();
     $i = 0;
     foreach()
      {
        // Your usual code 
       $image_list[$i] = your_image;
       //storing images one-by-one in your variable..
       $i++;
       }
}

後で変数を返すことも、print_r(); だけを返すこともできます。出力を取得する

于 2013-01-25T05:06:33.117 に答える