Có tệp XML bố cục chủ đề cục bộ nào khác ngoài tệp localDB không?


14

Tôi đã tạo một chủ đề bằng cách tạo và chỉnh sửa tệp sau:

frontend/mypackage/default/layout/local.xml

Tôi có chế độ xem cửa hàng "site1" và muốn tạo ngoại lệ trên tệp localDB mặc định của "mypackage", vì vậy tôi đã tạo tệp này:

frontend/mypackage/site1/layout/local.xml

Tuy nhiên, ngay khi tôi tạo tệp này, Magento bỏ qua các thay đổi local.xml mặc định.

Làm cách nào để tôi bảo Magento sử dụng tệp local.xml theo mặc định và thêm các thay đổi trong tệp localDB của tệp đó vào đó?


Không đời nào. Lấy làm tiếc. Bằng cách này, câu hỏi hay.
dùng487772

Tôi đang đối mặt với kịch bản chính xác này. Tôi đã mở rộng local.xml từ chủ đề mặc định, không hoàn toàn thay thế nó. Thật tệ khi nó thay thế hoàn toàn bằng chủ đề phụ được chọn.
Axel

Có gì giống như default.xml không? Hoặc chúng ta có thể hack mã lõi Magento đi ngang qua các tệp xml, để kiểm tra tệp default.xml không?
Gerard Nijboer

Câu trả lời:


7

Kể từ Magento 1.9, bạn có thể thêm các cập nhật bố cục tùy chỉnh etc/theme.xmlnhư thế này:

<theme>
    <layout>
        <updates>
            <my_theme>
                <file>my_theme.xml</file>
            </my_theme>
        </updates>
    </layout>
</theme>

Nếu bạn xác định bố cục cụ thể chủ đề của mình như thế này thay vì sử dụng local.xml, thật dễ dàng để thêm một bản cập nhật khác trong chủ đề con.

Thật không may, cùng một vấn đề xảy ra với theme.xml chỉ có một từ chủ đề thực tế của bạn được sử dụng, chứ không phải từ chủ đề gốc. Nhưng có sự trùng lặp ít hơn nhiều.

Ví dụ theme.xmlcho chủ đề con:

<theme>
    <layout>
        <updates>
            <my_theme>
                <file>my_theme.xml</file>
            </my_theme>
            <my_child_theme>
                <file>my_child_theme.xml</file>
            </my_child_theme>
        </updates>
    </layout>
</theme>

Nguồn và thông tin thêm: http://alanstorm.com/magento_infinite_fallback_theme_xml


5

Magento không hợp nhất các thay đổi local.xml từ các tệp local.xml khác. Cách thức hoạt động dự phòng chủ đề Magento là bất kỳ tệp nào được tìm thấy trong gói / chủ đề hiện tại sẽ được ưu tiên và sử dụng hơn bất kỳ tệp chủ đề / gói nào khác có tên tương tự.

Theo cách này, bạn không thể tạo ghi đè hợp nhất. Điều này sẽ có thể có trong Magento 2, nhưng không thể có trong Magento 1.x.

Thật không may, bạn sẽ phải sao chép nó vào chủ đề địa phương của bạn từ mặc định và thực hiện các sửa đổi của bạn ở đó.

May mắn nhất.


2
+1. Điều này có thể chắc chắn đạt được theo chương trình nhưng chắc chắn sẽ không xứng đáng với nỗ lực.
dùng487772

3

Phil hoàn toàn đúng nhưng về mặt lý thuyết thì có một cách giải quyết (mặc dù không đẹp lắm).

Bạn có thể tạo một mô-đun tùy chỉnh sẽ giới thiệu bản cập nhật bố cục. Sau đó, trong mô-đun, bạn có thể kiểm tra xem chế độ xem cửa hàng không phải là giao diện được yêu cầu và xóa bản cập nhật bố cục này.

Điều tồi tệ của phương pháp này là bạn sẽ mã hóa chế độ xem cửa hàng. Và nhìn chung, điều này trông không đẹp.

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.