3

私は解決できないこの問題を抱えています。適切な言葉で説明できないからです。私はこれに慣れていないので、この不器用な質問で申し訳ありません。

以下に、私の目標の概要を示します。

私はこのために私のmagentoで同様の製品を販売しようとしています.

しかし、私は画像に1つだけ問題があります..

つまり、現在の製品のすべてのイメージを取得していますが、基本イメージが選択されていません。プログラムで最初のイメージを基本イメージとして設定するにはどうすればよいですか?

何か案は ?

4

2 に答える 2

3

こんにちは、次のようにできます。

$image =$imagePath."image.png";
$product->setMediaGallery(array('images'=>array (), 'values'=>array ()));
if(is_file($image))
{
    $product->addImageToMediaGallery($image, array ('image', 'small_image', 'thumbnail'), false, false);
}

つまり、最初にメディア ギャラリーを設定する必要があります。PS これは必要な手順です。

次に、addImageToMediaGallery を使用してすべての画像をギャラリーに追加します。ここで、「image」は「base_image」を参照します。

つまり、上記の例では、1 回の呼び出しで image.png を base_image、small_image、およびサムネイル画像に設定しています。

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

于 2013-09-23T09:22:00.560 に答える
2

以下を使用して同じ結果を達成しました。

$product->setSmallImage($path)
    ->setThumbnail($path)
    ->setImage($path)
    ->save();

メディア ギャラリーに 1 つ以上の画像がある場合に適しています。

私がやっている

$product->load();
$gallery = $product->getMediaGalleryImages();

$paths = array();
foreach ($gallery as $image) {
    $paths[] = $image->getFile();
}
sort($paths);

$path = array_shift($paths);
try {
    $product->setSmallImage($path)
        ->setThumbnail($path)
        ->setImage($path)
        ->save();
} catch (Exception $e) {
    echo $e->getMessage();
}

すべての製品画像を取得し、それらをファイル名で並べ替え、最初の画像を製品のプライマリ画像に設定します。インポートを実行してすべての写真を追加しましたが、プライマリ イメージを設定しませんでした。

私が使用したセットまたは「壊れた」製品を取得するには:

    $collection = Mage::getModel('catalog/product')
        ->getCollection()
        ->addAttributeToFilter('small_image', array('eq' => ''));
于 2013-10-08T09:08:18.040 に答える