Magento1: Новый тип страницы в Magento

В Magento есть несколько стандартных типов страниц, так называемых  шаблонов (template) или “лайяутов” (layout).

Это Empty, 1 column, 2 columns with left bar, 2 columns with right bar, 3 columns.

Казалось бы все есть, но если понадобится еще один пользовательский вид страницы Magento, к примеру в 4 колонки? Или стандартный в 2 колонки но с другими размерами колонок для новостей?

Ниже простой пример, как сделать пользовательский тип страницы для Magento.

Можно сделать двумя способами:

  1. через папку Magento app/code/local/Mage (скопировав файлы из app/code/core/Mage)
  2. создать модуль для Magento, который просто будет добавлять функционал к стандартным файлам Magento из app/code/core/Mage

Наверное лучший способ – это создать как модуль Magento.

Пример.

  • Откроем папку app/code/local
  • Создадим папку поставщика/разработчика модуля(ей) Magento, к примеру Myname
  • Откроем Myname и создадим папку для модуля, назовем Custompage
  • Далее создадим файл конфигурации для Magento, в котором настраивается тип страниц.
  • Откроем Custompage и создадим папку etc, и в папке etc создадим файл config.xml
  • Открываем и смотрим файл app/code/core/Mage/Page/etc/config.xml, как  видно в XML теге page/layouts задаются типы страниц в Magento,
    и шаблоны .phtml для вывода контента. Задача модуля в том чтобы изменить/добавить в тег
  • Добавим изменения-правки в новый модуль Magento, открываем app/code/local/Myname/Custompage/etc/config.xml и вставим следующий код
<?xml version="1.0"?>
<config>
    <modules>
        <Myname_Custompage>
            <version>1.0</version>
        </Myname_Custompage>
    </modules>
    <global>
        <page>
            <layouts>
                <one_column_custom module="page" translate="label">
                    <label>Custom 1 column</label>
                    <template>page/1column.phtml</template>
                    <layout_handle>page_one_column_custom</layout_handle>
                </one_column_custom>
            </layouts>
        </page>
    </global>
</config>

Был добавлен блок

<one_column_custom module="page" translate="label">
    <label>Custom 1 column</label>
    <template>page/1column.phtml</template>
    <layout_handle>page_one_column_custom</layout_handle>
</one_column_custom>

где
label — название типа страницы Magento (появится в админ панели)
template — шаблон .phtml файл, который будет обрабатывать вывод контента
layout_handle — системный идентификатор типа страницы, можно будет работать через код и XML (к примеру обновлять блоки)

  • Создадим шаблон, файл .phtml для обработки контента страницы нового типа.
    Открываем файлы/папку темы Magento которую используем или по умолчанию app/design/frontend/default/default. И создадим файл 1column-custom.phtml
  • Теперь осталось только подключить модуль для Magento. И сбросить кеш.
  • Подключим модуль Magento, открываем app/etc/modules,
    и создаем файл Myname_Custompage.xml.
    И вставим следущий код
<?xml version="1.0"?>
<config>
    <modules>
        <Myname_Custompage>
            <active>true</active>
            <codePool>local</codePool>
        </Myname_Custompage>
    </modules>
</config>
  • И обновим кеш Magento

Зайдем в админ панель Magento: CMS -> Pages -> кнопка Add new page и в вкладке(таб) Design в выборе Layout появилось “Custom 1 column”

Новый тип страницы для Magento

Скачать модуль Magento для создания пользовательского типа страниц
https://github.com/magefast/MagentoCustomPageType