0

私は Magento 1.7.0.2 を使用しており、製品のカスタム イメージをランダムな product_list に表示しようとしています。

まず、すべてのセットに属性を追加し、プレースホルダー イメージを設定しました。データベースで *used_in_product_listing* を検索し、1 に設定しました。

これは私のProduct_List_Randomクラスです:

class Mage_Catalog_Block_Product_List_Random extends Mage_Catalog_Block_Product_List
{
    protected function _getProductCollection()
    {
        if (is_null($this->_productCollection)) { 
            $categoryID = $this->getCategoryId();            
            if($categoryID)            {              
                $category = new Mage_Catalog_Model_Category();
                $category->load($categoryID);
                $collection = $category->getProductCollection();
            } else { 
                $collection = Mage::getResourceModel('catalog/product_collection'); 
            }
            Mage::getModel('catalog/layer')->prepareProductCollection($collection);
            $collection->addAttributeToSelect('*');
            $collection->getSelect()->order('rand()');
            $collection->addStoreFilter();
            $numProducts = $this->getNumProducts() ? $this->getNumProducts() : 0;
            $collection->setPage(1, $numProducts)->load();

            $this->_productCollection = $collection;
        }
        return $this->_productCollection;
    }
}

$collection->addAttributeToSelect('*');ここでは、フロントエンドで画像の URL を取得するために追加しようとしました。

これは私がこれまでフロントエンドで試したことです:

$_productCollection=$this->getLoadedProductCollection();
foreach ($_productCollection as $_product):

    echo $this->helper('catalog/image')->init($_product, 'specialprice_image')->resize(158, 270);

    echo $_product->getResource()->getAttribute('specialprice_image')->getFrontend()->getValue($_product);

    echo $_product->getAttributeText('specialprice_image');

    $product = Mage::getModel('catalog/product')->load($_product->getId()); ?>
    echo $product->getAttributeText('specialprice_image');
endforeach;

ヘルパーがプレースホルダーの URL を教えてくれます。それらの他の方法は私に何も与えていません。

誰かがこの問題で私を助けてくれることを願っています。

4

1 に答える 1

0

Mage_Catalog_Block_Product_List_Randomクラスを編集した後に機能するようになりました

2行のコードを削除しました。

$collection->addAttributeToSelect('*');
$collection->addStoreFilter();

完全なコード:

class Mage_Catalog_Block_Product_List_Random extends Mage_Catalog_Block_Product_List
{
    protected function _getProductCollection()
    {
        if (is_null($this->_productCollection)) { 
            $categoryID = $this->getCategoryId();            
            if($categoryID)            {              
                $category = new Mage_Catalog_Model_Category();
                $category->load($categoryID);
                $collection = $category->getProductCollection();
            } else { 
                $collection = Mage::getResourceModel('catalog/product_collection'); 
            }
            Mage::getModel('catalog/layer')->prepareProductCollection($collection);
            $collection->getSelect()->order('rand()');
            $numProducts = $this->getNumProducts() ? $this->getNumProducts() : 0;
            $collection->setPage(1, $numProducts)->load();

            $this->_productCollection = $collection;
        }
        return $this->_productCollection;
    }
}

そしてフロントエンドで私はこのコードを使用しています:

<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>">
    <img src="<?php echo $this->helper('catalog/image')->init($_product, 'specialprice_image')->resize(158, 270); ?>" width="158" height="270" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" />
</a>
于 2013-01-21T09:34:18.760 に答える