1

モジュールにかなり奇妙な問題がありますhttp://www.magentocommerce.com/magento-connect/visistat-connector-6644.html

default次のようにハンドルにブロックを追加します。

<default>
    <reference name="after_body_start">
        <block type="page/html_footer" name="footer" template="sfcvisistat/tracking.phtml"/>
    </reference>
</default>

標準フッターと同じ名前を効果的に使用します。

これは、この定義からフッターテンプレートを取得するカスタムモジュール以外の場所を壊しません。したがって、実際のフッターが削除されます

名前を一意のものに変更することで問題を解決しましたが、この問題をデバッグするためのヒントがあれば知りたいのですが、なぜこの定義がreferenceコンテキスト外で使用されるのでしょうか?

ありがとう

4

1 に答える 1

2

before_body_endこれがリマーケティング スクリプトの場合は、より適切な親ブロックと思われます。なぜコア フッターをオーバーライドするのかは、ベンダーの質問です。


編集:OPコメントに応じて、推奨されるベストプラクティスとコンテキストを提供します:

理想的かつ一般的に、Magento のテーマ設定とモジュール開発では、コア チームによって追加されたブロック、特に構造ブロックは、サイトの最終的な実装者以外の人物によって削除または変更されるべきではありません (互換性を考慮せずに)。審議)。これは、他のコア コードやサードパーティ モジュール コードが、ブロック インスタンスがレイアウト内に元の名前まったく同じ機能を持って存在することを期待している可能性があるためです。

現在、元の投稿では、フッターのコア ブロック クラスが同じ ( page/html_foot) であり、名前も同じであることが示されています。レイアウトが処理され、ブロック階層が設定されると、問題が発生します。フッター ブロックの元の (コア) インスタンスは、レイアウト オブジェクトからアクセスできなくなり (その親を介してのみアクセス可能)、新しい (カスタム) フッター ブロックインスタンスは、レイアウト作成後のコードで参照されるものになります。

于 2012-05-03T21:49:16.507 に答える