ОК, так что это приводит к другому вопросу, который я задал здесь недавно. В принципе, я хочу расширить класс Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection, поэтому я могу добавить дополнительные фильтры для коллекций продуктов, которые можно повторно использовать во всем моем магазине (например, самые продаваемые). Это предназначено для замены следующего кода, который я использую в настоящее время в файле template.phtml:
$_bs_productCollection = Mage::getResourceModel('reports/product_collection')
->addAttributeToSelect('name')
->addAttributeToFilter('visibility', $visibility)
->addOrderedQty()
->setOrder('ordered_qty', 'desc')
->setPageSize(6);
$_bs_productCollection->load();
Итак, я настроил свой модуль и загрузился (он отображается в файле admin/system/config/advanced). Структура папки выглядит следующим образом:
etc/modules/Samsmodule.xml
local/Samsmodule
local/Samsmodule/Catalog
local/Samsmodule/Catalog/etc
local/Samsmodule/Catalog/etc/config.xml
local/Samsmodule/Catalog/Model
local/Samsmodule/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php
local/Samsmodule/Catalog/Helper (not sure if this is needed or not)
Мой Samsmodule.xml:
<config>
<modules>
<Samsmodule_Catalog>
<active>true</active>
<codePool>local</codePool>
</Samsmodule_Catalog>
</modules>
</config>
Мой config.xml:
<config>
<modules>
<Samsmodule_Catalog>
<version>0.1.0</version>
</Samsmodule_Catalog>
</modules>
<global>
<models>
<catalog_resource_eav_mysql4>
<rewrite>
<product_collection>Samsmodule_Catalog_Model_Resource_Eav_Mysql4_Product_Collection</product_collection>
</rewrite>
</catalog_resource_eav_mysql4>
</models>
</global>
</config>
И мой Collection.php:
<?php
class Samsmodule_Catalog_Model_Resource_Eav_Mysql4_Product_Collection extends Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection
{
public function filterbyBestSelling($attribute,$visibility,$_category,$no_of_items)
{
$this->addAttributeToSelect($attribute)->addOrderedQty()->setOrder('ordered_qty', 'desc')->addAttributeToFilter('visibility', $visibility)->addCategoryFilter($_category)->setPageSize($no_of_items);
return $this;
}
}
И затем из моего template.phtml я вызываю его так:
$_bs_productCollection = Mage::getResourceModel('reports/product_collection')
->filterbyBestSelling('name',$visibility,$_category,6);
Но он не работает - чего я не хватает? Если я просто добавлю код из моего Collection.php в конец моего основного файла Collection.php и использую тот же вызов, он отлично работает.