Неправильний порядок завантаження макета XML


15

Коли я створюю файл макета для адміністраторської області (чи в спільноті, чи в локальному пулі кодів), іноді Magento завантажує цей макет xml до того, як буде завантажено макет модуля Adminhtml 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 можна переглянути, які ручки видаються для певного запиту на сторінку

введіть тут опис зображення

Для вимкнутих зображень ручки, видані для конкретного запиту на сторінці, були

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

Це означає, що Magento запускатиме кожен defaultфрагмент XML: спочатку для core.xmlфайлу, потім кожного defaultфрагмента для page.xmlфайлу, аж до local.xml.

Потім Magento запустить кожен catalog_category_layered_nochildrenфрагмент XML: спочатку для core.xmlфайлу, потім для page.xmlфайлу, аж до local.xml.

Це триває для кожної ручки.

Це означає, що якщо у вас є трохи оновлення макета XML local.xmlвсередині defaultручки, воно запуститься перед тим, як трохи оновити макет XML, core.xmlякий знаходиться всередині catalog_category_layered_nochildrenручки. Це, безумовно, те, що викликає найбільше плутанини в системі компонування XML, тим більше, що навколо цього плаває трохи загальноприйнятої мудрості, яка говорить про те, що "локальні завантаження xx останніми".

Якщо вищезгадане вас трохи заплутало і вам потрібно дізнатися більше про систему Layout XML, я все ще думаю, що моя книга " Без надмірностей" Magento Layout - це найкращий спосіб вивчити систему зсередини.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.