0

私はここで立ち往生しています。クライアントは、製品の詳細ページ (製品のアップセル セクション) にランダムな製品を表示したいと考えていました。複数の理由から、組み込みのアップセル機能を使用しないことにしましたが、それについて説明する必要はありません。

現在、次のようなランダムな製品を表示しています。

<?php

    $category = Mage::getModel('catalog/category')->load(9);
    $products = Mage::getModel('catalog/product')
        ->getCollection()
        ->addCategoryFilter($category)
        ->load();

    foreach ($products as $product) {
        $result[$product->getId()] = $product;
    }

    $_product = Mage::getModel('catalog/product')->load(array_rand($result, 1));

?>

<a href="<?php echo $_product->getProductUrl(); ?>" title="<?php echo $_product->getName(); ?>">

    <img src="<?php echo $this->helper('catalog/image')->init($_product, 'thumbnail')->resize(190); ?>" />

    <?php echo $_product->getName(); ?><br />
    <?php echo Mage::helper('core')->currency($_product->getPrice()); ?>

</a>

問題は、Mage::getModel('catalog/product') を呼び出すことによって、現在の製品が上書きされていると思われることです。たとえば、「カートに追加」ボタンをクリックすると、製品詳細ページの実際の製品ではなく、カスタム特集アップセル製品がカートに追加されます。

4

1 に答える 1

2

その理由は$_product、デフォルトのテンプレートが使用する変数をオーバーライドしているためです。独自の変数名を使用すれば問題ありません

$_myProduct = Mage::getModel('catalog/product')->load(array_rand($result, 1));
于 2013-02-09T23:13:05.103 に答える