добавление шаблона на страницу cms в magento

Я надеюсь, что кто-то может помочь мне с этим. Я пытался добавить собственный шаблон в список доступных макетов при добавлении страницы CMS в magento. Я следовал этому руководству.

Однако мой собственный шаблон не отображается в списке доступных макетов. Я смог сделать это успешно, взломав файл ядра магнето, как описано в конце этой статьи, но предпочел бы сделать это как модуль.

Я создал следующие файлы

приложение/код/местный/mycustom/шаблон/config.xml

<?xml version="1.0"?>
<config>
    <modules>
       <mycustom_template>
           <version>0.1.0</version>
       </mycustom_template>
    </modules>
    <global>
       <page>
          <layouts>
            <home translate="label">
               <label>Home Page</label>
               <template>page/home.phtml</template>
               <layout_handle>custom_homepage</layout_handle>
            </home>
          </layouts>
        </page>
    </global>
</config>

и приложение/etc/modules/mycustom_template.xml

<?xml version="1.0"?>
<config>
  <modules>
    <mycustom_template>
      <active>true</active>
      <codePool>local</codePool>
      <depends>
        <Mage_Page />
      </depends>
    </mycustom_template>
  </modules>
</config>

person khaos337    schedule 01.03.2014    source источник
comment
попробуйте эту ссылку   -  person Zaheerabbas    schedule 01.03.2014
comment
Эта ссылка говорит, чтобы делать именно то, что я делаю. Он также ссылается на ту же вики-страницу, которой я следил изначально. Кажется, это не работает.   -  person khaos337    schedule 01.03.2014
comment
Я только что понял проблему. В Magento все ваши имена пространств имен и модулей должны начинаться с прописной буквы. Простое изменение этого соглашения об именах на Mycustom_Template изменило все!   -  person khaos337    schedule 01.03.2014


Ответы (2)


Создайте файл 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>
                <custom_layout module="page" translate="label">
                    <label>Custom layout</label>
                    <template>page/custom_layout.phtml</template>
                    <layout_handle>custom_layout</layout_handle>
                </custom_layout>
            </layouts>
        </page>
    </global>
    <frontend>
        <layout>
            <updates>
                <easylife_layout>
                    <file>easylife_layout.xml</file>
                </easylife_layout>
            </updates>
        </layout>
    </frontend>
</config>

создать приложение/дизайн/интерфейс/ваш пакет/ваша тема/макет/easylife_layout.xml

<?xml version="1.0"?>
<layout>
    <custom_layout translate="label">
        <label>Custom layout</label>
        <reference name="root">
            <action method="setTemplate"><template>page/custom_layout.phtml</template></action>
            <action method="setIsHandle"><applied>1</applied></action>
        </reference>
    </custom_layout>
</layout>

и, наконец, создайте app/design/frontend/your package/yourtheme/template/page/custom_layout.phtml.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->getLang() ?>" lang="<?php echo $this->getLang() ?>">
<head>
<?php echo $this->getChildHtml('head') ?>
</head>
<body<?php echo $this->getBodyClass()?' class="'.$this->getBodyClass().'"':'' ?>>
<?php echo $this->getChildHtml('after_body_start') ?>
<div class="wrapper custom-layout">
    <?php echo $this->getChildHtml('global_notices') ?>
    <div class="page">
        <?php echo $this->getChildHtml('header') ?>
        <div class="main-container custom-layout-container">
            <div class="main">
                <?php echo $this->getChildHtml('breadcrumbs') ?>
                <div class="col-main">
                    <?php echo $this->getChildHtml('global_messages') ?>
                    <?php echo $this->getChildHtml('content') ?>
                </div>
            </div>
        </div>
        <?php echo $this->getChildHtml('footer') ?>
        <?php echo $this->getChildHtml('before_body_end') ?>
    </div>
</div>
<?php echo $this->getAbsoluteFooter() ?>
</body>
</html>

Я надеюсь, что это поможет вам.

person Amit Bera    schedule 01.03.2014
comment
Спасибо, но это по-прежнему не отображает шаблон в раскрывающемся списке макета страницы в CMS. - person khaos337; 01.03.2014
comment
Вы хотите создать новый макет? или хотите вызвать файл phtml - person Amit Bera; 01.03.2014
comment
Я уже создал новый шаблон. Я хочу назначить этот шаблон на главную страницу через CMS -> Pages, а затем, выбрав макет на вкладке «Дизайн» нужной страницы. - person khaos337; 01.03.2014

Взгляните на /app/code/core/Mage/Page/etc/config.xml, и вы увидите, что вам нужно добавить в свой собственный xml-файл.

<global>
    <page>
        <layouts>
            ...
        </layouts>
    </page>
</global>
person Nathan    schedule 27.08.2015