วิธีคัดลอกไฟล์ Code / Core system.xml ไปยัง Code / local ใน magento


18

ฉันต้องการการปรับแต่งบางอย่างในแผงการดูแลระบบดังนั้นฉันจึงทำการเปลี่ยนแปลง

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

แต่ฉันไม่ต้องการเปลี่ยนรหัสภายในโฟลเดอร์หลัก เนื่องจากการเปลี่ยนแปลงเวอร์ชันของฉัน

ดังนั้นฉันจึงต้องการย้ายไฟล์นั้นไปยังโฟลเดอร์ในเครื่องของฉัน แต่มันไม่ทำงาน

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

ใครช่วยกรุณาแนะนำฉันถึงวิธีการแทนที่ไฟล์ system.xml?

ขอบคุณ

คำตอบ:


28

สำหรับsystem.xmlไฟล์มันไม่ทำงานเหมือนที่ทำกับไฟล์คลาส system.xmlไฟล์จะถูกเก็บรวบรวมจากโมดูลที่ใช้งานของวีโอไอพี เพียงแค่คัดลอกไฟล์ในlocalโฟลเดอร์มันไม่ได้หมายความว่ามันอยู่ในโมดูลเพราะไฟล์ประกาศของโมดูลยังบอกว่าโมดูลนั้นเป็นของcorecodepool
หากคุณต้องการเพิ่มเขตข้อมูลใหม่ลงในส่วนหรือแทนที่เขตข้อมูลบางส่วนที่คุณต้องการสร้างโมดูลของคุณเอง
นี่คือตัวอย่างของวิธีที่คุณสามารถเพิ่มเขตข้อมูลใหม่ในส่วนCatalog->Frontendและวิธีที่คุณสามารถแทนที่หนึ่งในส่วนเดียวกัน พูดเถอะว่าโมดูลของคุณเรียกว่า
คุณจะต้องใช้ไฟล์ต่อไปนี้: - ไฟล์ประกาศEasylife_Catalog

app/etc/modules/Easylife_Catalog.xml

<?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 - ไฟล์กำหนดค่า

<?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- system-> ไฟล์กำหนดค่า
สมมติว่าคุณต้องการเปลี่ยนList Modeฟิลด์ให้ใช้งานได้ในระดับโลกเท่านั้น (ไม่มีเว็บไซต์และระดับมุมมองร้านค้า) catalog/frontend/list_modeเส้นทางการตั้งค่า จากนั้นsystem.xmlจะมีลักษณะเช่นนี้:

<?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>

ตอนนี้สมมติว่าคุณต้องการเพิ่มเขตข้อมูลใหม่ที่เรียกว่าcustomในส่วนการกำหนดค่าเดียวกัน ตอนนี้ xml ด้านบนจะกลายเป็น

<?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>

ฉันไม่รู้ว่ามีวิธีลบบางฟิลด์จากการกำหนดค่าโดยใช้วิธีนี้หรือไม่ ฉันมองหามัน แต่ไม่พบอะไรเลย


ขอบคุณ ฉันมีโน้ตเพียงเล็กน้อยเท่านั้นไม่จำเป็นต้องติดแท็ก <depends> เนื่องจากโมดูลโลคัลจะถูกโหลดหลังจากโมดูลหลักเสมอ
Jiří Chmiel

2
@ JiříChmiel อืม ... ไม่ใช่พวกเขาไม่ใช่ ไฟล์การประกาศโมดูลทั้งหมด ( app/etc/modules) ถูกโหลดจากนั้น<depends> แท็กทั้งหมดจะถูกแยกวิเคราะห์และสร้างลำดับชั้นของโมดูล จากนั้นโมดูลจะถูกโหลดตามลำดับนั้น
Marius

ขอบคุณสำหรับคำตอบที่ดี สำหรับฉัน <depends> ในแอพ / etc / modules / Easylife_Catalog.xml คือสิ่งที่ฉันขาดหายไป หากไม่มีสิ่งนี้ก็ดูเหมือนจะให้ความสำคัญกับไฟล์ core system.xml มากกว่าการเปลี่ยนแปลงในไฟล์ local.xml ของฉันสำหรับการแก้ไขการประกาศ
PromInc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.