なぜmage_catalog_block_layer_filter_priceがライブサイトでオーバーライドされていないのですか?
-
16-10-2019 - |
質問
Magento EE 1.12.0.0と協力しています
私のモジュールの1つでは、mage_catalog_block_layer_filter_priceをオーバーライドしましたが、ローカルホストでは完全に正常に動作しますが、ライブサイトに同じモジュールをインストールすると機能しません。
それは意味します
mage_catalog_block_layer_filter_priceを拡張する「royal_filters_block_catalog_layer_filter_price」を除いて、すべてのファイルがオーバーライドされています
私の構成ファイル:
<global>
...
<blocks>
<catalog>
<rewrite>
<layer_state>Royal_Filters_Block_Catalog_Layer_State</layer_state>
<layer_view>Royal_Filters_Block_Catalog_Layer_View</layer_view>
<product_list_toolbar>Royal_Filters_Block_Catalog_Product_List_Toolbar</product_list_toolbar>
<layer_filter_attribute>Royal_Filters_Block_Catalog_Layer_Filter_Attribute</layer_filter_attribute>
<layer_filter_price>Royal_Filters_Block_Catalog_Layer_Filter_Price</layer_filter_price>
</rewrite>
</catalog>
...
</blocks>
...
</global>
他の4つのクラスはすべてオーバーライドされていますが、最後のクラスではありません。
また、私の他のモジュールはうまく機能します。
私のライブサイトは、私のローカルホストとまったく同じです。
しかし、まだライブサイト
mage_catalog_block_layer_filter_decimalを使用します。 mage_catalog_block_layer_filter_priceの代わりにmage_catalog_block_layer_filter_decimalをオーバーライドできますか?
解決 3
実際、私のライブサイトでは、価格フィルターにmage_catalog_block_layer_filter_decimalを使用しているため、必要なものを達成するためにそのクラスをオーバーライデンします。
my config.xml
<global>
...
<blocks>
<catalog>
<rewrite>
<layer_state>Royal_Filters_Block_Catalog_Layer_State</layer_state>
<layer_view>Royal_Filters_Block_Catalog_Layer_View</layer_view>
<product_list_toolbar>Royal_Filters_Block_Catalog_Product_List_Toolbar</product_list_toolbar>
<layer_filter_attribute>Royal_Filters_Block_Catalog_Layer_Filter_Attribute</layer_filter_attribute>
<layer_filter_decimal>Royal_Filters_Block_Catalog_Layer_Filter_Decimal</layer_filter_decimal>
</rewrite>
</catalog>
...
</blocks>
...
</global>
また、ブロックでmage_catalog_block_layer_filter_decimalを拡張します
他のヒント
ファイルとフォルダの名前を正しく綴っていることを確認してください。 Royal/Filters/Block/Catalog/Layer/Filter/Price.php
. 。ローカルマシンがWindows(ファイル名の場合は鈍感な場合)にあり、ライブサイトがLinux(ケースに敏感)にある場合、この種の問題が発生する可能性があります。ログフォルダーも確認してください。また、同じブロックをオーバーライドする他の拡張機能があることを確認してください。
編集
Magento EEには、レイヤーフィルターのブロックのセットがあります。たぶんそのうちの1つはあなたの場合に使用されています。これが例です: Enterprise_Search_Model_Catalog_Layer_Filter_Price
.
ブロッククラス名を使用してテンプレートパスヒントをアクティブにし、価格フィルターのレンダリングに使用されるブロックの種類を確認します。
リモートホストに拡張機能がある可能性が非常に高く、ローカルにはありません。 Mage_Catalog_Block_Layer_Filter_Price
.
この場合、解決策(あまり良くありません)は、代わりにこの拡張機能のクラスを拡張することです。