我想覆盖核心CatalogSearch模块中图层的“prepareProductCollection”功能。这就是我写的:
文件路径:Company/Module/Model/CatalogSearch/Layer.php
class Company_Module_Model_CatalogSearch_Layer extends Mage_CatalogSearch_Model_Layer
{
public function prepareProductCollection($collection)
{
parent::prepareProductCollection($collection);
Mage::getModel('cataloginventory/stock_item')->addCatalogInventoryToProductCollection($collection);
$collection->getSelect()->order('is_in_stock desc');
return $this;
}
}
在配置文件中:
<config>
<modules>
<Company_Module>
<version>0.0.0.1</version>
<Company_Module>
</modules>
<global>
<models>
<module>
<class>Company_Module_Model</class>
</module>
<catalogsearch>
<rewrite>
<layer>Company_Module_Model_CatalogSearch_Layer</layer>
</rewrite>
</catalogsearch>
</models>
</global>
</config>
我想我可能会遗漏一些东西?任何人都可以帮我这个吗?
答案 0 :(得分:1)
您错过了结束config.xml中的catalogsearch
标记
答案 1 :(得分:0)
在顶部添加require_once(app / Mage / CatalogSearch / Model / Layer)
答案 2 :(得分:0)
我试图做同样的事情。
我遵循了多个教程并尝试了几个方面。最后我总是遇到503错误(没有任何maintanance.flag文件 - 其他商店网站运作良好)。
但我设法解决了这个问题。我会告诉你我现在拥有的东西以及503的原因是什么,万一有人偶然发现了这个问题:
我已将Module Company / CatalogSearch命名为它,它由三个文件组成:
app / code / local / Company / CatalogSearch / Model / Layer.php:
<?php
class Company_CatalogSearch_Model_Layer extends Mage_CatalogSearch_Model_Layer {
public function prepareProductCollection($collection) {
parent::prepareProductCollection($collection);
// YOUR CODE HERE
return $this;
}
}
app / code / local / Company / CatalogSearch / etc / config.xml:
<?xml version="1.0"?>
<config>
<modules>
<Company_CatalogSearch>
<version>0.1</version>
</Company_CatalogSearch>
</modules>
<global>
<models>
<catalogsearch>
<rewrite>
<layer>Company_CatalogSearch_Model_Layer</layer>
</rewrite>
</catalogsearch>
</models>
</global>
</config>
app / etc / modules / Company_CatalogSearch.xml:
<?xml version="1.0"?>
<config>
<modules>
<Company_CatalogSearch>
<active>true</active>
<codePool>local</codePool>
</Company_CatalogSearch>
</modules>
</config>
这就是全部。
到503问题: 在文件app / code / local / Company / CatalogSearch / etc / config.xml中我有
<rewrite>
<layer>
Company_CatalogSearch_Model_Layer
</layer>
</rewrite>
而不是
<rewrite>
<layer>Company_CatalogSearch_Model_Layer</layer>
</rewrite>
希望有所帮助!