Orden de carga incorrecto del diseño XML


15

Cuando creo un archivo de diseño para el área de administración (ya sea en la comunidad o en el grupo de códigos local), a veces Magento carga ese diseño xml antes de que se cargue el diseño del módulo Adminhtml xml. El efecto es que las llamadas de referencia se descartan porque no hay ningún bloque creado para aplicarlas.

Obviamente, el almacenamiento en caché no está jugando un papel aquí. He agregado Mage_Adminhtmlel <depends/>nodo en el archivo de declaración del módulo.

¿Es este un problema que has tenido antes? Si es así, ¿cómo se resuelve?

He resuelto este problema varias veces y encuentro una solución cada vez, pero no puedo entender qué causa que esto suceda en primer lugar.

Respuestas:


16

Es difícil de decir sin un ejemplo concreto, pero sospecho que te estás encontrando con un problema de orden de archivos vs. manejar.

Específicamente, Magento carga sus archivos XML en orden de módulo, con local.xmlel último agregado. Aquí hay una lista típica, en orden

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

Los archivos XML de diseño de pedidos se cargan dictando las reglas XML de diseño de pedidos que se aplican,  por identificador . Es esta última parte la que hace tropezar a la gente. Los controladores son esos nodos XML de nivel superior.

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

Los controladores son una especie de eventos similares para el diseño: para cada solicitud de página, Magento emite una serie de controladores. Puede usar Commerce Bug para ver qué identificadores se emiten para una solicitud de página en particular

ingrese la descripción de la imagen aquí

Para aquellos con imágenes apagadas, los identificadores emitidos para esa solicitud de página en particular fueron

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

Lo que esto significa es que Magento ejecutará cada defaultfragmento XML: primero para el core.xmlarchivo, luego cada defaultfragmento para el page.xmlarchivo, hasta el final local.xml.

Luego, Magento ejecutará cada catalog_category_layered_nochildrenfragmento XML: primero para el core.xmlarchivo, luego para el page.xmlarchivo, hasta el final local.xml.

Esto continúa para cada asa.

Lo que esto significa es que si tiene un poco de XML de actualización de diseño local.xmldentro de un defaultcontrolador, se ejecutará antes de un poco de XML de actualización de diseño core.xmlque esté dentro del catalog_category_layered_nochildrencontrolador. Esto es, con mucho, lo que causa la mayor confusión en el sistema XML de diseño, especialmente porque hay un poco de sabiduría convencional que dice "las cargas locales.xml son las últimas".

Si lo anterior lo confundió un poco y necesita aprender más sobre el sistema XML Layout, sigo pensando que mi libro No Frills Magento Layout es la mejor manera de aprender el sistema de adentro hacia afuera.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.