Magento が Active および Active 親クラスをメニューに書き込むのをやめたように見えるという奇妙な問題に遭遇しました。
私はデフォルトの Magento メニューを使用してきましたが、1 か月ほど問題なく動作しています。キャッシュをクリアし、カテゴリと製品のインデックスを再作成しました。
アドバイスをいただければ幸いです..これはファイル許可の問題でしょうか?
私にとって、local.xml のこの xml 変更は問題を解決します。
<default>
<reference name="catalog.topnav">
<action method="unsetData"><key>cache_lifetime</key></action>
<action method="unsetData"><key>cache_tags</key></action>
</reference>
</default>
Benmarks のアドバイスに従い、Block Html Caching を無効にすると、アクティブなクラスが再度作成されました。
Magento の HTML ブロック キャッシングは、かなり奇妙な獣です。そのうちの 1 つがトップ メニューです (テンプレート ファイルは、使用している Magento のバージョンによって異なります)。
ブロックキャッシングをオンにしてこのバグを取り除きたい場合は、新しいブロックタイプのモジュールを作成できます。
extends Mage_Catalog_Block_Navigation
ブロックの_construct()
メソッドに次のデータを設定します。
$this->addData(array(
'cache_lifetime' => null,
'cache_tags' => array(Mage_Catalog_Model_Category::CACHE_TAG, Mage_Core_Model_Store_Group::CACHE_TAG),
));
これにより、キャッシュ時間が null に設定されます。つまり、無効になります。
page.xml
次に、レイアウト ファイルで ( 内に) ナビゲーション バーを見つける必要があります。次のタグが付けられます。
<block type="catalog/navigation"...
独自のモジュールのナビゲーション ブロック クラスに置き換える必要があります。
<block type="mycompany/navigation"
キャッシュを更新すると、クラスが適切に動作することがわかるはずです。Magento のレイアウトの詳細については、Alan Storm の優れた本'No Frills Magento Layout'をお勧めします。Magento のデバッグ ツールに追加するには、このモジュールをチェックしてください。どのブロックがキャッシュされているかを示します (およびその他の有用なブロック情報)。