4

すべての製品のカスタム製品コレクションが必要です。現在、ストアのすべての製品を含むカテゴリはありません (8000 個の製品があるため、1 つの追加カテゴリに追加することはできません)。

私が必要としているのは、すべての製品の製品コレクションが表示される特定の CMS ページです。これまでのところ、ブロックを含む CMS ページがあります。

{{block type="catalog/product_list" template="catalog/product/list.phtml"}}

「Mage_Catalog_Block_Product_List」をオーバーライドするモジュールを作成しました

編集する必要がある関数は「保護された関数 _getProductCollection()」になると思います

ブロック呼び出しでわかるように、カテゴリは指定されていません。私が必要とするのは、オーバーライドされた _getProductCollection 関数で、ストア内のすべての製品が返されることです。

これを達成する方法はありますか?

4

2 に答える 2

14

ストアから製品のリストを取得するには、いくつかの方法があります。 この方法を試してください:

<?php
$_productCollection = Mage::getModel('catalog/product')
                        ->getCollection()
                        ->addAttributeToSort('created_at', 'DESC')
                        ->addAttributeToSelect('*')
                        ->load();
foreach ($_productCollection as $_product){
   echo $_product->getId().'</br>';
   echo $_product->getName().'</br>';
   echo $_product->getProductUrl().'</br>';
   echo $_product->getPrice().'</br>';
}
?>
于 2014-11-07T06:39:25.270 に答える
3

List ブロックをオーバーライドしないでください。これは、実際の商品リスト ページに影響します。

ファイルをローカル名前空間にコピーして名前を変更する簡単な方法:

から:

app/code/core/Mage/Catalog/Block/Product/List.php

に:

app/code/local/Mage/Catalog/Block/Product/Fulllist.php

その後、完全なモジュールを作成することなく、新しいブロックを使用できます。これは、List ブロックが同じように機能し、ストアで何も壊れないことを意味します。

その後、必要に応じて安全に変更できます。

/**
 * Retrieve loaded category collection
 *
 * @return Mage_Eav_Model_Entity_Collection_Abstract
 */
protected function _getProductCollection()
{
    $collection = Mage::getModel('catalog/product')->getCollection();

    // this now has all products in a collection, you can add filters as needed.

    //$collection
    //    ->addAttributeToSelect('*')
    //    ->addAttributeToFilter('attribute_name', array('eq' => 'value'))
    //    ->addAttributeToFilter('another_name', array('in' => array(1,3,4)))
    //;

    // Optionally filter as above..

    return $collection;
}

その後、次のように新しいブロックを使用できます。

{{block type="catalog/product_fulllist" template="catalog/product/list.phtml"}}
于 2013-02-26T14:04:39.797 に答える