วิธี / แนวทางที่ถูกต้องในการแก้ไขเทมเพลต Magento คืออะไร?


15

โปรดแนะนำวิธีการที่ถูกต้องฉันต้องการปรับแต่งหน้า "EMAIL to Friend" ในหน้าต่างป๊อปอัปเมื่อผู้ใช้คลิกที่ปุ่ม (ส่งอีเมลผลิตภัณฑ์นี้) เมื่อเปิดใช้งานการแนะนำแม่แบบฉันพบว่ามีการสร้างปุ่มขึ้น

ส่วนหน้า / RWD / default / แม่แบบ / แคตตาล็อกสินค้า / / view / sharing.phtml

และไฟล์เลย์เอาต์ที่เกี่ยวข้องคือcatalog.xml(ในส่วนหน้า / rwd / default / layout)

ดังนั้นฉันจึงสร้าง a local.xmlในโฟลเดอร์เดียวกันที่catalog.xmlมีรหัสต่อไปนี้ (ที่ฉันได้รับtest.phtmlแทนที่จะsharing.phtmlเป็น 'ดีบั๊ก')

<?xml version="1.0"?>
<layout version="0.1.0">
    <default>

        <catalog-product-view>
            <reference name="content">
                <block type="catalog/product_view" name="product.info" template="catalog/product/view.phtml">
                    <block type="catalog/product_view" name="product.info.sharing" as="sharing" template="catalog/product/view/test.phtml"/>
                </block>
            </reference>
        </catalog-product-view>

    </default>
</layout>

แต่ไม่มีอะไรเกิดขึ้นฉันหมายความว่าฉันจะเปลี่ยน (เขียนทับ) การออกแบบธีมเริ่มต้นโดยไม่ต้องแก้ไขที่มีอยู่xmlและphtmlไฟล์ได้อย่างไร

คำตอบ:


10

นี่คือสิ่งที่คุณควรใส่ไว้ในlocal.xmlไฟล์ของคุณ

<?xml version="1.0"?>
<layout version="0.1.0">
    <catalog_product_view>
        <reference name="product.info.sharing">
            <action method="setTemplate">
                <template>catalog/product/view/test.phtml</template>
            </action>
        </reference>
    </catalog_product_view>
</layout>

ข้อผิดพลาดที่คุณได้ทำ

  • คุณใช้สองการปรับปรุงรูปแบบที่จับ : และdefault catalog-product-viewว่าเป็นสิ่งที่ผิด. คุณต้องการเพียงหนึ่งหมายเลขอ้างอิงการปรับปรุงเค้าโครง สิทธิที่คุณควรใช้ที่นี่คือcatalog_product_view

  • ดังนั้นจึงcatalog-product-viewไม่เป็นที่รู้จักสำหรับวีโอไอพี ชื่อที่เหมาะสมคือcatalog_product_view

  • ตั้งแต่การแบ่งปันบล็อกถูกกำหนดไว้แล้วผ่านตอนนี้คุณต้องดูบล็อกนั้นและเปลี่ยนแม่โดยการเพิ่มการกระทำcatalog.xml setTemplateนั่นคือสิ่งที่สคริปต์ข้างต้นทำ

หวังว่าคุณจะได้รับความคิด


ฉันใช้ local.xml ของคุณยังคงแสดงรายการที่มีอยู่ (ฉันได้สร้าง test.phtml) ในโฟลเดอร์ที่ระบุ
Dimag Kharab

คุณล้างแคชของคุณหรือไม่ สิ่งนี้ควรจะใช้ได้ถ้าคุณทำทุกอย่างถูกต้อง
Rajeev K Tomy

แคชชั่วคราวถูกปิดใช้งานในกรณีของฉันและฉันได้ทำดัชนีอีกครั้งด้วย (ฉันเดาว่ามันไม่จำเป็น)
Dimag Kharab

เพิ่มนี้โดยตรงภายใต้โหนด<reference name="content"><block type="core/template" name="test.block" template="catalog/product/view/test.phtml" /></reference> <catalog_product_view>และดูว่าเนื้อหาไฟล์ test.phtml มีอยู่ที่ส่วนล่างของหน้าดูผลิตภัณฑ์หรือไม่
Rajeev K Tomy

ยังไม่มีโชคดี
Dimag Kharab

10

ฉันจะพยายามให้คำตอบทั่วไป

วิธีการเปลี่ยนแม่แบบ

ในธีมของคุณคุณสามารถแทนที่phtmlไฟล์ใดก็ได้จากธีมเริ่มต้นหรือธีมหลัก คัดลอกไฟล์ต้นฉบับไปapp/design/frontend/[package]/[theme]/template/[path/to/phtml]และทำการเปลี่ยนแปลงของคุณ

หากคุณยังไม่มีธีมที่กำหนดเองเฉพาะโครงการเช่นเนื่องจากคุณเพิ่งซื้อธีมต้องแน่ใจว่าได้สร้างธีมที่

app/design/frontend/[original-package]/[project-name]

มันจะสืบทอดมาจาก[original-package]/[default]คุณไม่จำเป็นต้องคัดลอกทุกอย่างจากค่าเริ่มต้นเพียงแค่ไฟล์ที่คุณต้องการทำการเปลี่ยนแปลง

การเปลี่ยนแปลงเฉพาะโมดูล

อีกทางเลือกหนึ่งในการแทนที่phtmlไฟล์คือการเปลี่ยนเส้นทางของเทมเพลต โดยปกติสามารถทำได้ในโครงร่าง XML ดังนี้:

<reference name="the-block-name">
    <action method="setTemplate"><name>path/to/new/template.phtml</name></action>
</reference>

แต่นี่มีวัตถุประสงค์เพื่อใช้งานโดยโมดูลที่ต้องการเปลี่ยนเทมเพลตไม่ใช่สำหรับการเปลี่ยนแปลงเฉพาะของธีม เทมเพลตใหม่ควรเป็นเช่นbase/defaultนั้น

วิธีใช้ local.xml / theme.xml

local.xmlไฟล์ต้องอยู่ในไดเรกทอรีของชุดรูปแบบที่เกิดขึ้นจริงที่คุณใช้คือ

app/design/frontend/[package]/[theme]/layout

หลายlocal.xmlไฟล์ในลำดับชั้นทางเลือกจะไม่นำมาพิจารณา ครั้งแรกของสิ่งเหล่านี้ที่สามารถพบได้ถูกนำมาใช้:

app/design/frontend/[package]/[theme]/layout/local.xml
app/design/frontend/[package]/default/layout/local.xml
app/design/frontend/base/default/layout/local.xml

(สมมติว่าลำดับชั้นเริ่มต้นและไม่มีลำดับชั้นที่กำหนดเอง)

วิธีทำการเปลี่ยนแปลง

คุณควรมีการแก้ไขเฉพาะใน local.xml ไม่ใช่คำจำกัดความซ้ำที่มีอยู่ในไฟล์ XML ดั้งเดิมแล้ว นั่นหมายถึงหลีกเลี่ยงการคัดลอกไฟล์ XML จากธีมเริ่มต้นเพื่อทำการเปลี่ยนแปลงโดยตรงในไฟล์ รักษาlayoutไดเรกทอรีของชุดรูปแบบของคุณให้สะอาด!

องค์ประกอบทั่วไปของlocal.xmlคือ<remove>การลบบล็อกที่มีอยู่ทั้งหมด<action method="unsetChild">และ<action method="append">ย้ายบล็อกจากผู้ปกครองหนึ่งไปยังอีกหรือเรียกวิธีการอื่น ๆ ในบล็อกที่มีอยู่เพื่อปรับเปลี่ยนพฤติกรรมของพวกเขา

Magento 1.9

เริ่มต้นด้วย Magento 1.9 การปฏิบัติที่ดีที่สุดคือการไม่ใช้layout/local.xmlการเปลี่ยนแปลงเหล่านี้ แต่จริงๆแล้วetc/theme.xml

ในระยะสั้นคุณสามารถเพิ่มการปรับปรุงเค้าโครงในแอพ / design / frontend / yourpackage / etc / theme.xml ข้อดีคือคุณสามารถควบคุมลำดับการโหลดของการอัพเดตเลย์เอาต์ของคุณ ก่อนที่ Magento 1.9 local.xml จะถูกโหลดครั้งสุดท้ายเสมอและมันเป็นไปไม่ได้ที่จะมีการเรียกใช้คำสั่งเลย์เอาต์หลังจากนั้น

ฉันไม่ได้ใช้ local.xml อีกต่อไปสำหรับการแก้ไขธีมเฉพาะโครงการ ฉันคิดว่า local.xml ใช้เพื่อเหตุผลด้านความเข้ากันได้แบบย้อนหลัง (ใน 1.9 และสูงกว่า) เนื่องจากไม่มีประโยชน์ในการใช้งานอีกต่อไป Local.xml ถูกกำจัดใน Magento 2 ด้วย ( https://github.com/magento/magento2/issues/1037 )

ที่มา: https://erfanimani.com/dont-use-local-xml/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.