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

catalogsearchconfig.xml でタグを終了していません

于 2013-02-20T07:40:49.430 に答える
0

上部に require_once(app/Mage/CatalogSearch/Model/Layer) を追加します

于 2013-07-25T11:24:49.037 に答える
0

私はまったく同じことをしようとしました。
複数のチュートリアルに従い、いくつかのことを試しました。結局、私は常に 503 エラーが発生することになりました (maintanance.flag ファイルがなくても - 他のショップサイトはうまくいきました)。
しかし、私はそれを修正することができました。誰かがその問題に出くわした場合に備えて、私が今持っているものと、503 の理由が何であったかを示します。

モジュールに Company/CatalogSearch という名前を付けました。これは次の 3 つのファイルで構成されています。

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>


それが役立つことを願っています!

于 2014-04-29T09:40:11.017 に答える