Переместить заголовок страницы CMS за пределы обычного макета
У меня есть страница CMS с 1-столбцовым макетом. Я хотел бы переместить заголовок страницы за пределы основного контейнера страницы. Текущая настройка выглядит следующим образом:
<div class="main-container col1-layout">
<div class="main">
<div class="page-title">
<h1>Page Title</h1>
</div>
<p>Some content here..</p>
</div>
</div>
</div>
Я бы хотел, чтобы элемент заголовка страницы располагался вне основного контейнера. Можно ли это сделать с помощью обновления XML?
2 answers
Вы не можете сделать это с помощью простого xml-обновления макета. Самый простой способ добиться этого - создать новый корневой шаблон, специфичный для вашей страницы cms. Шаги для этого приведены ниже.
1. XML-файл обновления макета
Перейдите в раздел CMS > Pages > [Select your CMS Page] > Design > Layout Update XML
. Поместите этот код обновления макета туда.
<!-- removing default page heading block -->
<reference name="content">
<remove name="page_content_heading" />
</reference>
<!-- defines new root template;add new page head block -->
<reference name="root">
<action method="setTemplate">
<template>custom/page/cms_1column.phtml</template>
</action>
<block type="core/template" name="cms_page_heading" as="cms_page_heading" template="cms/content_heading.phtml"/>
</reference>
Этот код в основном выполняет 3 действия.
Он удаляет блок заголовка страницы CMS по умолчанию из макетов; Таким образом, в конечном итоге он удалит раздел заголовка по умолчанию, который вы просматриваете свою страницу cms.
Он определяет новый корневой шаблон
custom/page/cms_1column.phtml
для вашей страницы CMS; Я объясню, зачем нам это нужно.Мы снова переопределяем блок заголовка страницы CMS, но на этот раз он находится внутри блока
root
, а не внутри блокаcontent
.
2. Определите Пользовательский корневой шаблон
Теперь создайте новый файл app\design\frontend\[package]\[theme]\template\custom/page/cms_1column.phtml
и скопируйте все содержимое app\design\frontend\[package]\[theme]\template\page/1column.phtml
в этот файл. Затем назовите наш блок заголовка внутри этого файла следующим образом это.
<div class="wrapper">
<?php echo $this->getChildHtml('global_notices') ?>
<div class="page">
<?php echo $this->getChildHtml('header') ?>
<?php echo $this->getChildHtml('cms_page_heading') ?>
<div class="main-container col1-layout">
<div class="main">
...
Как вы можете видеть <?php echo $this->getChildHtml('cms_page_heading') ?>
эта часть отображает блок заголовка страницы CMS и находится над блоком layout-div. Вы можете настроить положение блока заголовка страницы CMS в соответствии с вашими потребностями в соответствии с вашими потребностями.
Мы используем новый корневой шаблон только для добавления этого пользовательского блока заголовка страницы CMS. Это позволит избежать соприкосновения с основными файлами и, следовательно, будет лучшим решением в данном случае.
Это не может быть сделано в моем XML. Согласно приведенному ниже xml
<cms_page translate="label">
<label>CMS Pages (All)</label>
<reference name="content">
<block type="core/template" name="page_content_heading" template="cms/content_heading.phtml"/>
<block type="page/html_wrapper" name="cms.wrapper" translate="label">
<label>CMS Content Wrapper</label>
<action method="setElementClass"><value>std</value></action>
<block type="cms/page" name="cms_page"/>
</block>
</reference>
</cms_page>
Заголовок страницы страницы CMS поступает из content_heading.phtml
, которая называется внутренней областью содержимого.
Поэтому, если вы хотите, чтобы это было вне основного контейнера, вы можете поместить условие в 1column.phtml
, например
<?php if(Mage::app()->getRequest()->getRouteName() === 'cms' && $this->getContentHeading()):?>
<div class="page-title">
<h1><?php echo $this->getContentHeading(); ?></h1>
</div>
<?php endif; ?>
Или хороший способ - вы можете установить свой собственный корневой файл для страницы CMS и изменить его в соответствии с вашими требованиями.
Вы можете следовать инструкциям для нового макета страницы cms здесь