การเพิ่มเลย์เอาต์ที่กำหนดเองสำหรับการใช้ CMS และหมวดหมู่ด้วยปัญหาโมดูลที่กำหนดเอง


14

ฉันมีหมวดหมู่ในร้านค้าของฉันที่ต้องใช้เลย์เอาต์ที่แตกต่างกันโดยสิ้นเชิงกับเลย์เอาต์ Magento มาตรฐาน ดังนั้นฉันจึงสร้างสำเนา 1column.phtml ใหม่และเปลี่ยนชื่อใหม่และทำการทดสอบเพียงเล็กน้อย

ตอนนี้ปัญหาคือว่าเค้าโครงที่กำหนดเองไม่ปรากฏขึ้น ฉันสร้างโมดูล (ซึ่งทำงานตามที่เห็นใน Admin> Config> ภาพรวมขั้นสูง)

ไฟล์และเนื้อหาของฉันมีดังนี้:

app / etc / โมดูล / Test_Page.xml

    <?xml version="1.0"?>
<config>
    <modules>
        <Test_Page>
            <active>true</active>
            <codePool>community</codePool>
            <version>0.1.0</version>
            <depends>
                <Mage_Page />
            </depends>
        </Test_Page>
    </modules>
</config>

app / รหัส / ท้องถิ่น / ทดสอบ / หน้า / etc / config.xml

    <?xml version="1.0"?>
<config>
    <modules>
        <Test_Page>
            <version>0.1.0</version>
        </Test_Page>
    </modules>
    <global>
        <page>
            <layouts>
                <homepage module="page" translate="label">
                    <label>Homepage</label>
                    <template>page/home.phtml</template>
                    <layout_handle>homepage</layout_handle>
                </homepage>

                <!-- add more layouts here -->
            </layouts>
        </page>
    </global>
    <frontend>
        <layout>
            <updates>
                <Test_Page>
                    <file>test_page.xml</file>
                </Test_Page>
            </updates>
        </layout>
    </frontend>
</config>

app / ออกแบบ / ส่วนหน้า / ทดสอบ / default / รูปแบบ / test_page.xml

    <?xml version="1.0"?> 
<layout>
    <homepage translate="label">
        <label>Home Page</label>
        <reference name="root">
            <action method="setTemplate"><template>page/home.phtml</template></action>
            <action method="setIsHandle"><applied>1</applied></action>
        </reference>
    </homepage> 
</layout>

ฉันไม่เห็นสิ่งที่ฉันทำไปมันกำลังอ่านเป็นโมดูล แต่รูปแบบที่กำหนดเองไม่ได้ถูกแสดง :(

คำตอบ:


21

ในการทำให้มันปรากฏในโครงร่างดรอปดาวน์คุณต้องสร้างโมดูลที่กำหนดเอง (คุณยังสามารถเพิ่มบางสิ่งในไฟล์แกน แต่โปรดอย่าทำเช่นนั้น) ลองตั้งชื่อนามสกุลของ Easylife_Layout สำหรับสิ่งนี้คุณต้องสร้างไฟล์ต่อไปนี้: app/etc/modules/Easylife_Layout.xml- ไฟล์ประกาศ

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

app/code/local/Easylife/Layout/etc/config.xml - ไฟล์กำหนดค่า

<?xml version="1.0"?> 
<config>
    <modules>
        <Easylife_Layout>
            <version>0.0.1</version>
        </Easylife_Layout>
    </modules>
    <global>
        <page>
            <layouts> 
                <lookbook module="page" translate="label">
                    <label>Lookbook</label>
                    <template>page/1column-lookbook.phtml</template>
                    <layout_handle>lookbook</layout_handle>
                </lookbook> 
            </layouts>
        </page>
    </global>
    <frontend>
        <layout>
            <updates>
                <easylife_layout>
                    <file>easylife_layout.xml</file>
                </easylife_layout>
            </updates>
        </layout>
    </frontend>
</config>

app/design/frontend/{interface}/{theme}/layout/easylife_layout.xml - ไฟล์เลย์เอาต์

<?xml version="1.0"?> 
<layout>
    <lookbook translate="label">
        <label>Lookbook</label>
        <reference name="root">
            <action method="setTemplate"><template>page/1column-lookbook.phtml</template></action>
            <action method="setIsHandle"><applied>1</applied></action>
        </reference>
    </lookbook> 
</layout>

อันสุดท้ายจำเป็นในกรณีที่คุณต้องการอ้างอิงโครงร่างที่กำหนดเองของคุณในไฟล์เลย์เอาต์ สิ่งที่ต้องการ:

<update hande="lookbook" />

ล้างแคชและ ... เพียงเท่านี้ Le tme รู้ไหมว่ามันเหมาะกับคุณไหม


เข้าสู่ระบบและออกเคล็ดลับสำหรับฉันหลังจากนี้
Cyptus

6

มีความเป็นไปได้สองอย่าง:

  1. คุณเพิ่มเลย์เอาต์ที่กำหนดเองในหมวดหมู่ของคุณและทำสิ่งนี้:

    <layout>
        <reference name="root">
            <action method="setTemplate"><template>page/1column-lookbook.phtml</template></action>
        </reference>
    </layout>
  2. คุณใช้มันเป็นเลย์เอาต์ของหน้าและเพิ่มเข้าไปconfig.xmlในglobal/page/layouts/แต่ฉันไม่รู้ว่าจะทำอย่างไร

หากคุณต้องการเพียงครั้งเดียวคุณสามารถอยู่กับวิธีแก้ปัญหาแรก แต่ต้องระวัง มีอยู่<action method="setIsHandle"><applied>1</applied></action>ในpage.xmlบางครั้งการตั้งค่านี้ป้องกันการเปลี่ยนแปลงของแม่แบบ

วิธีแก้ปัญหาแรก: เลือกหมวดหมู่ของคุณไปถึงCustom Designและใส่ทุกอย่างภายใน<layout />โหนดลงในCustom Layout Updatetextarea เช่น:

<reference name="root">
    <action method="setBackgroundGraphic">
        <background>two-pieces</background>
    </action>
    <action method="setTemplate">
    <template>page/2columns-right-highStep.phtml</template>
    </action>
    <action method="setIsHandle">
        <applied>1</applied>
    </action>
</reference>

ฉันจะต้องติดการอ้างอิงรูปแบบสำหรับอันแรกได้อย่างไร ฉันลองใช้รหัสที่คล้ายกันมากใน layout.xml แต่ไม่รู้ว่าจะวางไว้ที่ระดับใดฉันมีการอ้างอิงสำหรับหน้าหมวดหมู่ทั้งหมดเป็นค่าเริ่มต้นโดยใช้ <catalog_category_view> ดังนั้นฉันคิดว่าฉันต้องการสิ่งที่คล้ายกันเพื่อเพิ่มตัวเลือกอื่น
Chris Morris

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