В Magento есть несколько стандартных типов страниц, так называемых шаблонов (template) или “лайяутов” (layout).
Это Empty, 1 column, 2 columns with left bar, 2 columns with right bar, 3 columns.
Казалось бы все есть, но если понадобится еще один пользовательский вид страницы Magento, к примеру в 4 колонки? Или стандартный в 2 колонки но с другими размерами колонок для новостей?
Ниже простой пример, как сделать пользовательский тип страницы для Magento.
Можно сделать двумя способами:
- через папку Magento app/code/local/Mage (скопировав файлы из app/code/core/Mage)
- создать модуль для 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 для создания пользовательского типа страниц
https://github.com/magefast/MagentoCustomPageType