Magento - CatalogSearch模块覆盖不起作用

时间:2013-02-20 05:06:13

标签: php magento

我想覆盖核心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>

我想我可能会遗漏一些东西?任何人都可以帮我这个吗?

3 个答案:

答案 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>


希望有所帮助!