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

14

У меня есть категория в моем магазине, которая требует совершенно другого макета, чем стандартные макеты Magento. Поэтому я создал новую копию 1column.phtml, переименовал ее и внес одно небольшое изменение в тест.

Теперь проблема в том, что пользовательский макет не отображается. Я создал модуль (который работает так, как это видно в Admin> Config> Advanced Overview).

Мои файлы и содержимое:

приложение / и т.д. / модули / 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>

Приложение / код / ​​местные / Test / Page / и т.д. / 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>

приложение / дизайн / интерфейс / тест / по умолчанию / макет / 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" />

Очистите кеш и ... вот и все. Позвольте мне знать, если это работает для вас.

Marius
источник
после этого вход в систему и выход из
нее помогли
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