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