Cách sao chép tệp Code / Core system.xml vào Code / local trong magento


18

tôi muốn một số tùy chỉnh trong bảng quản trị vì vậy tôi đã thay đổi

   1) "app/code/core/../system.xml file its working fine. 

Nhưng tôi không muốn thay đổi mã trong thư mục lõi. Vì phiên bản của tôi thay đổi.

Vì vậy, tôi muốn di chuyển tập tin đó vào thư mục cục bộ của mình nhưng nó không hoạt động

 2) "app/code/local/../system.xml" files is not working

Ai đó có thể vui lòng hướng dẫn tôi cách ghi đè tệp system.xml không?

Cảm ơn

Câu trả lời:


28

Đối với các system.xmltệp, nó không hoạt động giống như đối với các tệp lớp. Các system.xmltập tin được thu thập từ các mô-đun hoạt động của Magento. Chỉ cần sao chép một trong localthư mục, điều đó không có nghĩa là nó nằm trong một mô-đun, vì tệp khai báo mô-đun vẫn nói rằng mô-đun thuộc về bộ coremã.
Nếu bạn muốn thêm các trường mới vào một phần hoặc ghi đè một số trường bạn cần để tạo mô-đun của riêng bạn.
Dưới đây là một ví dụ về cách bạn có thể thêm một trường mới trong phần Catalog->Frontendvà cách bạn có thể ghi đè một trường trong cùng một phần.
Hãy nói rằng mô-đun của bạn được gọi Easylife_Catalog.
Bạn sẽ cần các tệp sau:
app/etc/modules/Easylife_Catalog.xml- tệp khai báo

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Catalog>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Catalog />
            </depends>
        </Easylife_Catalog>
    </modules>
</config>

app/code/local/Easylife/Catalog/etc/config.xml - tập tin cấu hình

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Catalog>
            <version>0.0.1</version>
        </Easylife_Catalog>
    </modules>
</config>

app/etc/local/Easylife/Catalog/etc/system.xml- tệp hệ thống-> cấu hình
Giả sử bạn muốn thay đổi List Modetrường chỉ khả dụng ở cấp toàn cầu (không có cấp độ xem trang web và cửa hàng). Đường dẫn thiết lập là catalog/frontend/list_mode. Sau đó, system.xmlsẽ trông như thế này:

<?xml version="1.0"?>
<config>
    <sections>
        <catalog><!-- first part of the path -->
            <groups>
                <frontend><!-- second part of the path -->
                    <fields>
                        <list_mode><!-- third part of the path -->
                            <show_in_website>0</show_in_website><!-- this will override the core value -->
                            <show_in_store>0</show_in_store><!-- this will override the core value -->
                        </list_mode>
                    </fields>
                </frontend>
            </groups>
        </catalog>
    </sections>
</config>

Bây giờ hãy giả sử bạn muốn thêm một trường mới được gọi customtrong cùng một phần cấu hình. Bây giờ xml ở trên trở thành

<?xml version="1.0"?>
<config>
    <sections>
        <catalog><!-- first part of the path -->
            <groups>
                <frontend><!-- second part of the path -->
                    <fields>
                        <list_mode><!-- third part of the path -->
                            <show_in_website>0</show_in_website><!-- this will override the core value -->
                            <show_in_store>0</show_in_store><!-- this will override the core value -->
                        </list_mode>
                        <custom translate="label"><!-- your new field -->
                            <label>Custom</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>1000</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </custom>
                    </fields>
                </frontend>
            </groups>
        </catalog>
    </sections>
</config>

Tôi không biết có phương pháp nào để loại bỏ một số trường khỏi cấu hình bằng phương pháp này không. Tôi đã tìm nó nhưng không tìm thấy gì.


Cảm ơn. Tôi chỉ có một lưu ý nhỏ, thẻ <phụ thuộc> là không cần thiết, vì các mô đun cục bộ luôn được tải sau các mô đun lõi.
Jiří Chmiel

2
@ JiříChmiel. Ơ ... không, họ không có. tất cả các tệp khai báo mô-đun ( app/etc/modules) được tải, sau đó tất cả các <depends> thẻ được phân tích cú pháp và hệ thống phân cấp của các mô-đun được thiết lập. sau đó các mô-đun được tải theo thứ tự đó.
Marius

Cảm ơn câu trả lời tuyệt vời. Đối với tôi, <phụ thuộc> trong ứng dụng / etc / mô-đun / Easylife_Catalog.xml là những gì tôi đã thiếu. Không có điều đó, nó dường như ủng hộ tệp system.xml lõi hơn các thay đổi trong tệp system.xml cục bộ của tôi để sửa đổi các khai báo.
PromInc
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.