Переместить заголовок страницы 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?

Author: Rajeev K Tomy, 2015-10-04

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 действия.

  1. Он удаляет блок заголовка страницы CMS по умолчанию из макетов; Таким образом, в конечном итоге он удалит раздел заголовка по умолчанию, который вы просматриваете свою страницу cms.

  2. Он определяет новый корневой шаблон custom/page/cms_1column.phtml для вашей страницы CMS; Я объясню, зачем нам это нужно.

  3. Мы снова переопределяем блок заголовка страницы 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. Это позволит избежать соприкосновения с основными файлами и, следовательно, будет лучшим решением в данном случае.

 3
Author: Rajeev K Tomy, 2015-10-05 01:57:28

Это не может быть сделано в моем 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 здесь

 0
Author: Akhilesh Patel, 2017-04-13 12:55:02