Warning: Cannot modify header information - headers already sent by (output started at /www/wwwroot/sbboke.com/wp-content/plugins/wordpress-seo/src/integrations/front-end-integration.php:409) in /www/wwwroot/sbboke.com/wp-content/themes/pacify/content-single.php on line 5

在MAGENTO中使用自己的布局和模板文件创建自己的页面

今天我们将讨论如何在magento中使用布局和模板文件创建自己的页面。但是在此之前,我们先讨论一下magento中的布局,布局是一个包含句柄,块和动作的组件。在此文件中,我们定义哪些块将出现在页眉,页脚,左,右和主要内容中。

首先让我们谈谈句柄,在magento中只有两种类型的句柄,它们是默认句柄和更新句柄。大多数布局文件中都有默认句柄,当我们要向网站的每个页面添加内容时,我们都会使用它们,其中更新句柄仅显示在特定的自定义页面,商店和主题上。让我们一次讨论一下-

定制手柄

通过组合以下在config.xml中为前端控制器定义的路由名称动作控制器名称(即控制器文件的名称)和动作控制器的动作方法(即控制器文件的动作)来创建客户句柄。

让我们看一下magento的“与我们联系”模块,尤其是布局文件夹中的contact.xml,您会注意到contact_index_index句柄,其中contact是路由名称(联系人),可以在frontend \ routers \下的\ Mage \ Contacts \ etc \ config.xml中找到,index是动作控制器名称(索引),它是\ Mage \ Contacts \ controllers \ IndexController.php,最后一个索引是Action Controller动作方法(index),它是控制器文件\ Mage \ Contacts \ controllers \中的方法IndexController.php

商店句柄

商店句柄,您可以将其放置为仅针对特定商店渲染块,例如,您有三个商店,分别是英语,法语和德语。而且,如果您只想为英语商店渲染块,则可以在布局xml文件中将以下STORE_ <STORE_CODE>添加为句柄,并且它仅对英语商店渲染。

主题句柄

您可以将主题句柄设置为仅针对特定主题渲染块,例如,产品页面有两个主题(theme_1和theme_2),它们仅更改产品页面的配色方案。现在,您只想为theme_1渲染一个额外的块,那么您可以在布局xml文件中添加以下THEME_ <DESIGN_AREA> _ <PACKAGE_NAME> _ <THEME_NAME>作为句柄,并且仅针对特定主题渲染。例如-:THEME_frontend_default_default

这是magento加载布局句柄的顺序-:

  • 默认或自定义
  • 商店
  • 主题
  • 自订

有关更多信息,您可以检查loadLayout函数,该函数可以在以下位置找到:\ Mage \ Core \ Controller \ Varien \ Action.php

请注意,可以通过将loadLayout函数中的自定义句柄作为参数传递来替换默认句柄。在loadLayout函数中检查以下行-:

$this->getLayout()->getUpdate()->addHandle($handles ? $handles : 'default');

希望你们现在对布局如何与布局xml文件一起使用有所了解。现在让我们使用逐步实现-从我们的自定义页面开始:

步骤1 –在您的本地文件夹下创建一个新模块,在本例中为\ app \ local \ Scommerce \ Enquiry。

步骤2 –使用以下代码在Scommerce_All.xml或Scommerce_Equiry.xml中的etc \ modules目录中注册模块:

<Scommerce_Sales>
    <active>true</active>
    <codePool>local</codePool>
</Scommerce_Sales>

步骤3 –使用以下代码在模块\ app \ local \ Scommerce \ Enquiry \ etc \ config.xml的etc目录下创建config.xml

<config>
    <modules>
        <Scommerce_Enquiry>
             <version>0.0.1</version>
        </Scommerce_Enquiry>
    </modules>
    <global>
       <blocks>
          <enquiry>
            <class>Scommerce_Enquiry_Block</class>
          </enquiry>
       </blocks>
    </global>
    <frontend>
         <routers>
            <enquiry>
                <use>standard</use>
                <args>
                    <module>Scommerce_Enquiry</module>
                    <frontName>enquiry</frontName>
                </args>
            </enquiry>
        </routers>
        <layout>
            <updates>
                <enquiry>
                    <file>enquiry.xml</file>
                </enquiry>
            </updates>
        </layout>
    </frontend>
</config>

步骤4 –使用以下代码在app \ code \ local \ Scommerce \ Enquiry \ Block \ Page.php中创建块:

class Scommerce_Enquiry_Block_Page extends Mage_Core_Block_Template
{
protected function _construct()
{
parent::_construct();
$this->setTemplate('enquiry/page.phtml');
}
}

步骤5 –使用以下代码在app \ code \ local \ Scommerce \ Enquiry \ IndexController.php中创建IndexController:

class Scommerce_Enquiry_IndexController
      extends Mage_Core_Controller_Front_Action
{
public function indexAction()
{
$this->loadLayout();
$this->renderLayout();
}
}

在上面的步骤中,请注意两个函数LoadLayout,它们加载布局xml文件,而renderLayout在页面上呈现内容。

步骤6 –现在,使用以下代码在\ app \ design \ frontend \ base \ default \ layout \ enquiry.xml中创建enquiry.xml(这是我们在步骤2中指定的名称)文件:

<layout version="0.1.0">
    <default>
        <reference name="footer_links">
            <action method="addLink"
                       translate="label title"
                       module="enquiry">
               <label>Enquiry</label>
               <url>enquiry</url>
               <title>Enquiry</title>
            </action>
        </reference>
    </default>
 
    <enquiry_index_index translate="label">
        <label>Enquiry</label>
        <reference name="breadcrumbs">
            <action method="addCrumb">
                <crumbName>Home</crumbName>
                <crumbInfo>
                  <label>Home</label>
                  <title>Home</title>
                  <link>/</link>
                </crumbInfo>
            </action>
            <action method="addCrumb">
                <crumbName>Enquiry</crumbName>
                <crumbInfo>
                   <label>Enquiry</label>
                   <title>Enquiry</title>
                </crumbInfo>
            </action>
        </reference>
        <reference name="content">
            <block type="enquiry/page" name="enquiry"
                      template="enquiry/page.phtml"/>
        </reference>
    </enquiry_index_index>
</layout>

请注意,我们这里有两个句柄,默认和自定义句柄(route_controller_action)。您可以将其与我们一开始讨论的内容联系起来。

步骤7 –让我们使用以下代码在\ app \ design \ frontend \ base \ default \ template \ enquiry \ page.phtml中创建我们的主要phtml文件-:

<div>
    <h1>Our first own page block, wow!!!!!!!!!</h1>
</div>

就这样,就这么简单。希望本文对您有所帮助。请留下您的评论,让我们知道您的想法?谢谢。

相关文章

0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论