Додавання користувальницьких макетів для використання CMS та категорій із проблемою зі спеціальним модулем


14

У моєму магазині є категорія, яка вимагає зовсім іншого розташування до стандартних макетів Magento. Тому я створив нову копію 1column.phtml і перейменував її та вніс одну невелику зміну для тестування.

Тепер проблема полягає в тому, що користувацький макет не відображається. Я створив модуль (який працює так, як це видно в адміністраторі> Налаштування> Розширений огляд).

Мої файли та вміст такі:

app / тощо / модулі / 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 / code / local / Тест / Сторінка / тощо / 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 / design / frontend / test / default / layout / 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" />

Очистіть кеш-пам'ять і ... це все. Знайте, чи працює це для вас.



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 Updateтекстовій області, наприклад:

<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>, тому я припустив, що мені потрібно щось подібне, щоб додати інший варіант
Кріс Морріс

редагував відповідь
Fabian Blechschmidt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.