วิธีสร้างโครงร่างโมดูลที่จะแสดงในทุกธีม


13

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

ดังนั้นคำถามของฉันคือฉันควรทำอย่างไรเพื่อให้โมดูลทั้งหมดของฉันทำงานกับธีมใด ๆ ที่ติดตั้งหลังจากการตั้งค่าโมดูล


1
หากคุณวางไฟล์เลย์เอาต์ของคุณในการออกแบบ / ส่วนหน้า / ฐาน / ค่าเริ่มต้น / ... พวกเขาจะแสดงสิ่งที่เป็นรูปแบบ
Sander Mangel

คำตอบ:


17

ใส่ทุกอย่างในbase/defaultเส้นทาง

ตัวอย่าง:

app/design/frontend/base/default

skin/frontend/base/default


อุ๊ย! ไม่ได้คิดเกี่ยวกับมันคุณถูกต้องจะทดสอบทันทีที่มาถึงสำนักงาน
Yaroslav

+1 - มีโมดูลมากเกินไปที่ระบุว่า "ชุมชน" ซึ่งไม่เป็นไปตามแนวทางปฏิบัตินี้และควรจะเป็น
pspahn

เทมเพลตฐานถูกนำมาใช้ใน Magento 1.4 เพื่อแก้ไขปัญหานี้อย่างแน่นอน ในเวอร์ชันก่อนหน้านี้การคัดลอกไฟล์เทมเพลตหากคุณไม่ได้ใช้แพ็คเกจเริ่มต้นเป็นวิธีที่ทำได้
Kristof ที่ Fooman

5

ความจริงที่ยากคือคุณไม่สามารถจริงๆรับประกันว่าพวกเขาจะ วางไฟล์ของคุณในbase/default(หรือdefault/defaultถ้าพวกเขาแทนที่แม่แบบหลัก - ในขณะที่คุณไม่ต้องการเขียนทับไฟล์ฐานด้วยการติดตั้งโมดูลแม้ว่าสิ่งนี้จะบังคับให้คุณทำซ้ำสำหรับรุ่นองค์กร) จะรับประกันได้ว่าพวกเขากลายเป็นทางเลือก ให้ความสำคัญในระดับสูงสุดเสมอ

โมดูลส่วนใหญ่มาพร้อมกับคู่มือการติดตั้งซึ่งรวมถึงการกล่าวถึงการคัดลอกไฟล์เทมเพลตไปยังธีมของผู้ใช้หากมีการกำหนดเอง นั่นคือสิ่งที่ดีที่สุดที่คุณสามารถทำได้


4

สิ่งหนึ่งที่เราใช้ไปสองสามครั้งคือ [Fabrizio Branca] [Custom Fallback] [1] ของ modlue มันเป็นโมดูลที่มีประโยชน์มากสำหรับการระบุลำดับชั้นทางเลือกธีมทางเลือกของคุณเอง สิ่งหนึ่งที่คุณสามารถทำได้คือระบุ:

  1. custom/theme

  2. base/default

  3. default/default

จากนั้นโมดูลใด ๆ ที่วางเท็มเพลตของตัวเองในdefault/defaultธีม จะไม่ทำงานหากพวกเขาพยายามที่จะแทนที่base/defaultแพ็คเกจ

คุณสามารถระบุจำนวนแพ็กเกจ / ธีมใด ๆ ในลำดับชั้นทางเลือกที่กำหนดเอง

[1]: http://www.fabrizio-branca.de/ [2]: http://www.fabrizio-branca.de/custom-design-fallbacks-in-magento.html


2

เทมเพลตและไฟล์เลย์เอาต์ใด ๆ ในbase/defaultจะถูกโหลดจนกว่าจะมีการแทนที่ที่อื่นตามเส้นทาง อย่างไรก็ตามหากโมดูลที่กำหนดเองของคุณเป็นวิดเจ็ตบางประเภทคุณควรตรวจสอบให้แน่ใจว่าโมดูลดังกล่าวนั้นถูกต้องตามที่ต้องการ หากตัวอย่างเช่นคุณกำลังทำการเปลี่ยนแปลงซึ่งแสดงในหน้าผลิตภัณฑ์ผ่านการgetChildHtmlโทรเหล่านั้นควรอยู่ในชุดรูปแบบที่สอดคล้องเช่นกัน หากอย่างไรก็ตามเทมเพลตโมดูลของคุณเป็นเพจด้วยตนเองและไม่ได้โหลดจากbase/defaultนั้นมีบางสิ่งที่บล็อกการกำหนดค่าโครงร่างและคุณควรค้นหาว่าอะไร


ความคิดเห็นที่น่าสนใจมากเกี่ยวกับgetChildฉันมีสายบางชนิดนี้
Yaroslav

1

ไม่มีคำตอบง่ายๆสำหรับเรื่องนี้ ขึ้นอยู่กับโมดูลที่คุณมี ตัวอย่างเช่นบาง บริษัท โมดูลที่เอาชนะไฟล์หลัก ดังนั้นคุณควรตรวจสอบสิ่งที่ไฟล์ที่มีอยู่ในapp/etc/modulesและapp/code/local/Mage, app/code/community/Mageโฟลเดอร์ อย่างที่คุณอาจทราบแล้วโฟลเดอร์แรกคือโฟลเดอร์การเริ่มต้นโมดูลซึ่งคุณสามารถปิดใช้งานหรือเปิดใช้งานโมดูลที่เกี่ยวข้องโดยไฟล์ xml สองโฟลเดอร์สุดท้าย (ถ้ามี) เป็นรหัสหลักที่แทนที่โฟลเดอร์

จากนั้นเปิดหนึ่งในไฟล์ xml ที่มีetc/modulesไดเรกทอรี คุณจะเห็นบางสิ่งเช่นด้านล่าง:

<?xml version="1.0"?>
<config>
<modules>
    <Company_Namespace>
        <active>true</active>
        <codePool>local</codePool>
    </Company_Namespace>
</modules>

นี่คือส่วนสำคัญCompanyและNamespace. เมื่อคุณเข้าเยี่ยมชมapp/code/localหรือapp/code/communityโฟลเดอร์ที่คุณจะเห็นโฟลเดอร์ชื่อและต่อไปนี้โดยการย่อยโฟลเดอร์ชื่อCompanyNamespace

เมื่อคุณค้นหาคุณจะเห็นโฟลเดอร์ย่อยชื่อNamespace /etcโฟลเดอร์นี้เก็บไฟล์config.xmlกำหนดค่าโมดูลที่เกี่ยวข้อง ไฟล์นี้มีบรรทัดการกำหนดค่าที่เกี่ยวข้องกับโมดูลซึ่งคุณสามารถอ้างอิงไฟล์ที่เกี่ยวข้องกับโมดูลนี้

อย่างที่ฉันพูดในบรรทัดแรกของฉันมันยากที่จะจัดการ


ฉันคิดว่าคุณพลาดจุดของคำถาม เขาถูกถามเกี่ยวกับการปรับปรุงเค้าโครง แนวปฏิบัติที่เหมาะสมที่สุดคือการใช้พา ธ ฐาน / ค่าเริ่มต้น / yourmodule
Mark Shust
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.