Thứ tự tải của Bố cục XML không chính xác


15

Khi tôi tạo tệp bố cục cho khu vực quản trị (cho dù trong nhóm mã cộng đồng hoặc cục bộ), đôi khi Magento đang tải xml bố cục đó trước khi bố trí mô-đun adminhtml xml. Hiệu quả là các cuộc gọi tham chiếu bị loại bỏ vì không có khối nào được tạo để áp dụng chúng.

Rõ ràng, bộ nhớ đệm không phải là một phần ở đây. Tôi đã thêm Mage_Adminhtmlvào <depends/>nút trong tệp khai báo mô-đun.

Đây có phải là một vấn đề mà bạn đã có trước đây? Nếu vậy, nó được giải quyết như thế nào?

Tôi đã làm việc về vấn đề này nhiều lần và tìm ra giải pháp mỗi lần, nhưng tôi không thể tìm ra nguyên nhân nào xảy ra ở nơi đầu tiên.

Câu trả lời:


16

Thật khó để nói mà không có một ví dụ cụ thể, nhưng tôi nghi ngờ bạn đang chạy vào một trật tự tập tin so với xử lý vấn đề trật tự.

Cụ thể, Magento tải các tệp XML của mình theo thứ tự mô-đun, được xử lý local.xmllần cuối. Đây là một danh sách điển hình, theo thứ tự

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

Các tệp XML bố cục đơn hàng được tải theo lệnh cho quy tắc XML bố cục đơn hàng được áp dụng -  trên mỗi tay cầm . Đây là phần cuối cùng khiến mọi người đi lên. Xử lý là các nút XML cấp cao nhất.

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

Xử lý là loại sự kiện giống như bố cục - đối với mỗi trang yêu cầu Magento đưa ra một số xử lý. Bạn có thể sử dụng Lỗi thương mại để xem xử lý nào được cấp cho một yêu cầu trang cụ thể

nhập mô tả hình ảnh ở đây

Đối với những người có hình ảnh bị tắt, các thẻ điều khiển được cấp cho yêu cầu trang cụ thể đó là

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

Điều này có nghĩa là, Magento sẽ chạy mọi defaultđoạn XML: đầu tiên cho core.xmltệp, sau đó là từng defaultđoạn cho page.xmltệp, cho đến hết local.xml.

Sau đó, Magento sẽ chạy mọi catalog_category_layered_nochildrenđoạn XML: đầu tiên cho core.xmltệp, sau đó cho page.xmltệp, tất cả các đường dẫn xuống local.xml.

Điều này tiếp tục cho mỗi xử lý.

Điều này có nghĩa là, nếu bạn có một chút XML cập nhật bố cục local.xmlbên trong một defaulttay cầm, nó sẽ chạy trước một chút XML cập nhật bố cục trong core.xmlđó nằm trong catalog_category_layered_nochildrentay cầm. Điều này, cho đến nay, điều gây ra sự nhầm lẫn nhất trong hệ thống XML bố cục, đặc biệt là vì có một chút trí tuệ thông thường trôi nổi xung quanh nói rằng "localDB tải lần cuối".

Nếu những điều trên làm bạn bối rối một chút và bạn cần tìm hiểu thêm về hệ thống Bố cục XML, tôi vẫn nghĩ rằng cuốn sách No Frills Magento Layout của tôi là cách tốt nhất để tìm hiểu hệ thống từ trong ra ngoài.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.