Php 如何设置在Magento主页上显示的产品数量

Php 如何设置在Magento主页上显示的产品数量,php,magento,Php,Magento,我有一个新的.phtml文件和一个新的.php文件,我确信主页上显示的产品只来自这些文件。目前只有6种产品正在展出。我只是想知道我怎样才能显示更多的产品应该以3的倍数递增,比如9,12,15等等。 我尝试将两个文件中的所有“6”替换为“9”,但无法获取我要查找的内容?请任何人帮帮我,给我一些窍门! 下面是新的.php文件代码: class Mage_Catalog_Block_Pro duct_New extends Mage_Catalog_Block_Product_Abstract { p

我有一个新的.phtml文件和一个新的.php文件,我确信主页上显示的产品只来自这些文件。目前只有6种产品正在展出。我只是想知道我怎样才能显示更多的产品应该以3的倍数递增,比如9,12,15等等。 我尝试将两个文件中的所有“6”替换为“9”,但无法获取我要查找的内容?请任何人帮帮我,给我一些窍门! 下面是新的.php文件代码:

class Mage_Catalog_Block_Pro duct_New extends Mage_Catalog_Block_Product_Abstract
{
protected $_productsCount = null;

const DEFAULT_PRODUCTS_COUNT = 5;

/**
 * Initialize block's cache
 */
protected function _construct()
{
    parent::_construct();

    $this->addColumnCountLayoutDepend('empty', 10)
        ->addColumnCountLayoutDepend('one_column', 5)
        ->addColumnCountLayoutDepend('two_columns_left', 4)
        ->addColumnCountLayoutDepend('two_columns_right', 4)
        ->addColumnCountLayoutDepend('three_columns', 3);

    $this->addData(array(
        'cache_lifetime'    => 86400,
        'cache_tags'        => array(Mage_Catalog_Model_Product::CACHE_TAG),
    ));
}

/**
 * Get Key pieces for caching block content
 *
 * @return array
 */
public function getCacheKeyInfo()
{
    return array(
       'CATALOG_PRODUCT_NEW',
       Mage::app()->getStore()->getId(),
       Mage::getDesign()->getPackageName(),
       Mage::getDesign()->getTheme('template'),
       Mage::getSingleton('customer/session')->getCustomerGroupId(),
       'template' => $this->getTemplate(),
       $this->getProductsCount()
    );
}

/**
 * Prepare collection with new products and applied page limits.
 *
 * return Mage_Catalog_Block_Product_New
 */
protected function _beforeToHtml()
{
    $todayStartOfDayDate  = Mage::app()->getLocale()->date()
        ->setTime('00:00:00')
        ->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);

    $todayEndOfDayDate  = Mage::app()->getLocale()->date()
        ->setTime('23:59:59')
        ->toString(Varien_Date::DATETIME_INTERNAL_FORMAT);

    $collection = Mage::getResourceModel('catalog/product_collection');
    $collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());


    $collection = $this->_addProductAttributesAndPrices($collection)
        ->addStoreFilter()
        ->addAttributeToFilter('news_from_date', array('or'=> array(
            0 => array('date' => true, 'to' => $todayEndOfDayDate),
            1 => array('is' => new Zend_Db_Expr('null')))
        ), 'left')
        ->addAttributeToFilter('news_to_date', array('or'=> array(
            0 => array('date' => true, 'from' => $todayStartOfDayDate),
            1 => array('is' => new Zend_Db_Expr('null')))
        ), 'left')
        ->addAttributeToFilter(
            array(
                array('attribute' => 'news_from_date', 'is'=>new Zend_Db_Expr('not null')),
                array('attribute' => 'news_to_date', 'is'=>new Zend_Db_Expr('not null'))
                )
          )
        ->addAttributeToSort('news_from_date', 'desc')
        ->setPageSize(9)
        ->setCurPage(1)
    ;

    $this->setProductCollection($collection);

    return parent::_beforeToHtml();
}

/**
 * Set how much product should be displayed at once.
 *
 * @param $count
 * @return Mage_Catalog_Block_Product_New
 */
public function setProductsCount($count)
{
    $this->_productsCount = $count;
    return $this;
}

/**
 * Get how much products should be displayed at once.
 *
 * @return int
 */
public function getProductsCount()
{
    if (null === $this->_productsCount) {
        $this->_productsCount = self::DEFAULT_PRODUCTS_COUNT;
    }
    return $this->_productsCount;
}
}


有两种和三种方法可以控制产品的数量

1如果您使用的是通用magento loadedcollection,则可以从

System -> Configuration -> Catalog -> Frontend tab
2如果您使用自定义代码获取产品

您可以添加setsize和setpage方法来限制集合,例如:

$collection = Mage::getModel('...')
        ->getCollection()
        ->setPageSize(20)
        ->setCurPage(1);

3根据您使用页面的方式,还可以从布局XML设置产品限制 例:


我希望上面的任何内容都能对您有所帮助。

请尝试以下代码来设置magento主页中的产品数量

{{block type="catalog/product_new" category_id="3" products_count="9"  name="home.catalog.product.new" alias="product_homepage" template="catalog/product/new.phtml" }}

这些文件是使用loadedcollection of products还是您编写了定制代码来获取产品?我想这是一个定制代码。您的意思是magento示例数据中使用的最畅销产品?没有最畅销的产品是不同的模块,新产品是不同的。感谢您的帮助!!在cms主页中,我可以看到{{block type=catalog/product\u new name=catalog.new template=catalog/product/new.phtml\u productsCount=6}}如果我将此值从6更改为9,则没有任何更改。如果您仅使用通用的magento产品集合,上述更改也会起作用。。您可以复制phtml文件的代码吗?
$collection = Mage::getModel('...')->getCollection();
$collection->getSelect()->limit(20);
<block type="catalog/product_list" name="bestsellers">
    <action method="setLimit"><value>3</value></action>
</block>
{{block type="catalog/product_new" category_id="3" products_count="9"  name="home.catalog.product.new" alias="product_homepage" template="catalog/product/new.phtml" }}