วิธีการแทนที่ไฟล์. phtml ใน Magento 2


15

ฉันต้องการปรับแต่งหน้ารายละเอียดผลิตภัณฑ์ดังนั้นจึงจำเป็นต้องแทนที่ไฟล์. phtml บางไฟล์ในตำแหน่งต่อไปนี้

ดังนั้นฉันต้องการทราบวิธีการแทนที่ไฟล์. phtmlในvendor\magento\module-catalog\view\frontend\templates\productหรือvendor\magento\module-theme\view

คำตอบ:


23

บางครั้งเราจำเป็นต้องทำการแก้ไขแม่แบบที่มีอยู่ แทนที่จะทำการเปลี่ยนแปลงโดยตรงกับไฟล์เทมเพลตที่มีอยู่เราควรแทนที่พวกเขาในธีมของเราเอง ให้เราสมมติว่าเราต้องการอัปเดตหน้ารายการหมวดหมู่ ( list.phtml) หากต้องการทำเช่นนั้นให้สร้างโครงสร้างไดเรกทอรีต่อไปนี้:

app/design/frontend/Mycompany/Basic/Magento_Catalog/templates/product

ที่นี่ฉันคิดว่าชุดรูปแบบปัจจุบันของเราคือพื้นฐาน ตอนนี้คัดลอกไฟล์ list.phtml ลงในไดเรกทอรีผลิตภัณฑ์จากตำแหน่งต่อไปนี้:

app/vendor/magento/module-catalog/view/frontend/templates/product/list.phtml

ตอนนี้คุณสามารถทำการแก้ไขใด ๆ ที่คุณต้องการไฟล์แทนที่ของคุณ

สำหรับรายละเอียดโปรดอ่านบทช่วยสอนนี้ช่วยคุณได้มาก


2
สวัสดีฉันเพิ่งเขียนทับไฟล์ list.phtml ในเส้นทางต่อไปนี้ \ app \ design \ frontend \ Magento \ luma \ Magento_Catalog \ templates \ product \ list.phtml แต่มันไม่ทำงาน ฉันจะรู้ได้อย่างไรว่าฉันทำผิดที่ไหน?
Vigna S

ปัญหาเดียวกันไม่ว่ากี่ครั้งที่ฉันกดการรีเฟรชค่าเริ่มต้นจะถูกโหลดมากกว่าที่กำหนดเองของฉัน และใช่ฉันมีเส้นทางที่ถูกต้องก่อนที่จะมีใครถาม แต่ฉันกำลังใช้ผู้แต่งเพื่อติดตั้งวีโอไอพีดังนั้นค่าเริ่มต้นจะอยู่ในสถานที่ที่แตกต่างกันถ้ามันสำคัญ
ดัสติน Poissant

ฉันต้องล้างแคชบล็อก html และจากนั้นก็ใช้งานได้อย่างสมบูรณ์แบบสำหรับฉัน! (ฉันล้างแคชเช่นblog.gardenhouse.io/2018/05/29/นี้)
paul

วิธีการแทนที่แม่แบบจากโมดูลของคุณว่า?
Black

8

ฉันกำลังตอบคำถามของฉันเอง

ฉันค้นพบวิธีการแทนที่ไฟล์. phtml ในตำแหน่งที่กล่าวถึงในคำถามของฉัน

คุณต้องวางไว้ในตำแหน่งต่อไปนี้เพื่อแทนที่ไฟล์ต้นฉบับ

app\design\frontend\<VENDOR_NAME>\<THEME_NAME>\Magento_Catalog\templates\product\view

และฉันเชื่อว่าทฤษฎีนี้เหมือนกันสำหรับการเอาชนะไฟล์. phtml อื่น ๆ ใน Magento 2


คุณช่วยอธิบายสั้น ๆ เพิ่มเติมได้ ... เช่นเดียวกับที่ฉันต้องคัดลอกไฟล์ phtml ที่กำหนดเองของฉันไปยังโฟลเดอร์ธีม isit? ชอบเข้าไปในแอพ \ design \ frontend \ <VENDOR_NAME> \ luma \ Magento_Catalog \ ฉันต้องสร้างโฟลเดอร์ผู้ขายของฉันและคัดลอกไฟล์ ph core หลักลงไปไหม หากทำเช่นนั้นคุณไม่จำเป็นต้องใช้เทมเพลตในโฟลเดอร์มุมมองใช่ไหม
Sushivam

สวัสดีฉันพยายามแทนที่ไฟล์ phtml สำหรับวิดเจ็ตและฉันไม่แน่ใจว่าเส้นทางที่ฉันใช้ถูกต้องแล้ว Magento_Catalog เป็นส่วนหนึ่งของเส้นทางของคุณโดยเฉพาะกับโฟลเดอร์โมดูลที่คุณกำลังเอาชนะหรือไม่? ดังนั้นถ้าฉันแทนที่ผู้ขาย \ magento \ module-catalog-widget \ view \ frontend \ templates \ product \ widget \ content ฉันจะแทนที่ Magento_Catalog ในอินสแตนซ์ของคุณด้วย Magento_Catalog_Widget ในอินสแตนซ์ของฉันหรือไม่ สับสนเล็กน้อยเพราะยังไม่ชัดเจนสำหรับฉัน
robgt

6

ในการแทนที่ phtml, เลย์เอาต์และไฟล์เว็บเพื่อเป็นเจ้าของธีมที่กำหนดเอง

1) เพื่อแทนที่ไฟล์เทมเพลต:

ผู้ขาย / วีโอไอพี / โมดูลแคตตาล็อก / view / ส่วนหน้า / แม่ / สินค้า / list.phtml

ตามเส้นทางนี้

app / ออกแบบ / ส่วนหน้า / ผู้ขาย / ธีม / Magento_Catalog / แม่ / สินค้า / list.phtml

2) เพื่อแทนที่ไฟล์เลย์เอาต์:

ผู้ขาย / วีโอไอพี / โมดูลแคตตาล็อก / view / ส่วนหน้า / รูปแบบ / catalog_product_view.xml

ตามเส้นทางนี้

app / ออกแบบ / ส่วนหน้า / ผู้ขาย / ธีม / Magento_Catalog / รูปแบบ / catalog_product_view.xml


วิธีการแทนที่ / ปรับแต่งไฟล์โมดูลอื่น ๆ เช่น Observer, Controller ฯลฯ
Tahir Yasin

6

ในการแทนที่ไฟล์ pthml และเลย์เอาต์จาก

vendor/magento/module-catalog/view/frontend/templates/product/list.phtml

เข้าไป

app/Mycompany/OverideCatalog/view/frontend/templates/product/list.phtml

เค้าโครง:

vendor/magento/module-catalog/view/frontend/layout/catalog_category_view.xml

เข้าไป

app/Mycompany/OverideCatalog/view/frontend/layout/catalog_category_view.xml

<block class="Magento\Catalog\Block\Product\ListProduct" name="category.products.list" as="product_list" template="Mycompnay_OverideCatalog::product/list.phtml">

3

แทนที่เทมเพลต (phtml) ตามธีมที่กำหนดเอง

หากคุณต้องการแทนที่vendor\magento\module-catalog\view\frontend\templates\product\some.phtmlก่อนอื่นคุณต้องสร้างธีมที่กำหนดเองของคุณโปรดอ้างอิงลิงค์นี้สำหรับวิธีสร้างธีมที่กำหนดเอง

หลังจากนั้นสร้างไฟล์ phtml ในชุดรูปแบบที่กำหนดเองของคุณเพื่อแทนที่ค่าเริ่มต้น

 app/design/frontend/vendor-name/theme-name/Magento_Catalog/templates/product/some.phtml

ในที่สุดก็ล้างแคชของ magento เช่นเดียวกับเบราว์เซอร์แล้วตรวจสอบหน้าของคุณไฟล์ phtml ใหม่สะท้อนให้เห็นเท่านั้น

เช่นเดียวกับที่คุณทำได้สำหรับการแทนที่แม่แบบทั้งหมด

โชคดี


ขอบคุณฉันเพิ่งค้นพบและตอบการค้นพบในคำถามของฉันเองคำตอบของคุณคล้ายกับสิ่งที่ฉันค้นพบ
nuwaus

2

เปิดโฟลเดอร์: /vendor/magento/theme-frontend-luma/และคัดลอกแม่แบบโมดูลและไฟล์โครงร่างจากโฟลเดอร์มุมมอง

จากนั้นสร้างโฟลเดอร์: /app/design/frontend/spacename/Theme/

จากนั้นสร้างโฟลเดอร์โมดูลและสร้างแม่แบบและโฟลเดอร์เค้าโครง

แทรกเทมเพลตและไฟล์เลย์เอาต์จากโฟลเดอร์มุมมองโมดูล


0

Classy Llama ทำงานได้ดีในบทความที่แสดงหลายสถานการณ์และวิธีการแทนที่ไฟล์เทมเพลตในแต่ละสถานการณ์

https://www.classyllama.com/blog/template-override-m2

มันช่วยฉันได้เมื่อฉันมาที่กระทู้นี้เพื่อค้นหาคำตอบ

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