レイアウトXMLの誤った読み込み順序


15

管理領域のレイアウトファイル(コミュニティまたはローカルコードプール)を作成すると、Adminhtmlモジュールのレイアウトxmlがロードされる前に、Magentoがそのレイアウトxmlをロードすることがあります。その効果は、参照呼び出しを適用するブロックが作成されていないため、参照呼び出しが破棄されることです。

明らかに、キャッシングはここでは役割を果たしていません。私が追加されているMage_Adminhtml中で<depends/>、モジュール宣言ファイル内のノード。

これは以前に抱えていた問題ですか?もしそうなら、それはどのように解決されますか?

私はこの問題に何度も取り組み、そのたびに解決策を見つけましたが、そもそもこれが何によって起こるのかはわかりません。

回答:


16

具体的な例を挙げないと言うのは難しいですが、ファイルの順序とハンドルの順序の問題に直面しているのではないかと思います。

具体的には、MagentoはXMLファイルをモジュール順にロードしlocal.xml、最後に追加します。典型的なリストを順番に示します

frontend/base/default/layout/core.xml
frontend/rwd/default/layout/page.xml
frontend/rwd/default/layout/directory.xml
frontend/rwd/default/layout/cms.xml
frontend/rwd/default/layout/customer.xml
frontend/rwd/default/layout/catalog.xml
frontend/rwd/default/layout/catalog_msrp.xml
frontend/rwd/default/layout/catalogsearch.xml
frontend/base/default/layout/payment.xml
frontend/rwd/default/layout/sales.xml
frontend/base/default/layout/sales/billing_agreement.xml
frontend/base/default/layout/sales/recurring_profile.xml
frontend/base/default/layout/cataloginventory.xml
frontend/base/default/layout/shipping.xml
frontend/rwd/default/layout/checkout.xml
frontend/rwd/default/layout/paypal.xml
frontend/base/default/layout/bml.xml
frontend/rwd/default/layout/poll.xml
frontend/rwd/default/layout/review.xml
frontend/rwd/default/layout/tag.xml
frontend/base/default/layout/reports.xml
frontend/base/default/layout/googleanalytics.xml
frontend/rwd/default/layout/wishlist.xml
frontend/base/default/layout/paypaluk.xml
frontend/base/default/layout/giftmessage.xml
frontend/rwd/default/layout/contacts.xml
frontend/base/default/layout/sendfriend.xml
frontend/rwd/default/layout/rss.xml
frontend/base/default/layout/productalert.xml
frontend/rwd/default/layout/oauth.xml
frontend/base/default/layout/authorizenet.xml
frontend/rwd/default/layout/bundle.xml
frontend/rwd/default/layout/captcha.xml
frontend/base/default/layout/centinel.xml
frontend/rwd/default/layout/newsletter.xml
frontend/rwd/default/layout/downloadable.xml
frontend/base/default/layout/pagecache.xml
frontend/rwd/default/layout/persistent.xml
frontend/base/default/layout/weee.xml
frontend/base/default/layout/xmlconnect.xml
frontend/base/default/layout/moneybookers.xml
frontend/base/default/layout/pulsestorm_checkoutstep.xml
frontend/rwd/default/layout/local.xml

注文レイアウトXMLファイルは、ハンドルごとに注文レイアウトXMLルールが適用されるようにロードされます  。人をつまずかせるのはこの最後の部分です。ハンドルは、これらの最上位のXMLノードです。

<config>
    <handle_name>
    </handle_name>
</config>

ハンドルは、レイアウトのイベントのようなものです。すべてのページ要求に対して、Magentoは多くのハンドルを発行します。Commerce Bugを使用して、特定のページリクエストに対して発行されたハンドルを確認できます。

ここに画像の説明を入力してください

画像がオフになっている場合、その特定のページリクエストに対して発行されたハンドルは

<default />
<catalog_category_layered_nochildren />
<STORE_default />
<THEME_frontend_rwd_default />
<catalog_category_view />
<catalog_category_default />
<CATEGORY_3 />

つまり、MagentoはすべてのdefaultXMLチャンクを実行します。まずcore.xmlファイルに対して、次にファイルに対してすべてのdefaultチャンクを実行しpage.xmlますlocal.xml

次に、Magentoはすべてのcatalog_category_layered_nochildrenXMLチャンクを実行します。最初にcore.xmlファイルに対して、次にファイルに対して、最後までを実行しpage.xmlますlocal.xml

これは、ハンドルごとに続きます。

あなたはレイアウト更新XMLのビットを持っている場合は、この手段は何ですか、local.xml内部のdefaultハンドル、それが実行される前に、レイアウト更新XMLのビットcore.xml内部ているのcatalog_category_layered_nochildrenハンドル。これは、特に「local.xmlが最後にロードされる」という従来の知恵が漂っているため、レイアウトXMLシステムで最も混乱を引き起こすものです。

上記で少し混乱し、レイアウトXMLシステムについてさらに学習する必要がある場合、私の本「No Frills Magento Layout」はシステムを徹底的に学習する最良の方法だと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.