4

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

我想我可能错过了什么?谁能帮我这个?

4

3 回答 3

1

catalogsearch您错过了在 config.xml 中结束标记

于 2013-02-20T07:40:49.430 回答
0

我试图做同样的事情。
我遵循了多个教程并尝试了几件事。最后,我总是遇到 503 错误(没有任何 maintanance.flag 文件 - 其他商店网站运行良好)。
但我设法解决了这个问题。我将向您展示我现在拥有的东西以及 503 的原因是什么,以防有人偶然发现这个问题:

我将模块命名为 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;
    }
}


应用程序/代码/本地/公司/目录搜索/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>


应用程序/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>


希望有帮助!

于 2014-04-29T09:40:11.017 回答
0

在顶部添加 require_once(app/Mage/CatalogSearch/Model/Layer)

于 2013-07-25T11:24:49.037 回答