用magento布局给特定CMS页面添加静态块

来源:互联网 发布:泰国电影 知乎 编辑:程序博客网 时间:2024/04/28 01:22

有次在做一个项目的时候,我需要在头部和某些页面内容中间加入一个独有的静态块。元素必须完全在magento后台定义,而且能很轻易地在一个新的CMS页面创建、定义和移除。因此,元素必须被放置在主内容之外,不可能用后台CMS添加,而是要用magento布局添加。下面是我如何实现的:

正如你所知的,magento只为CMS页面提供下面的句柄

  • 首页句柄和404页面句柄
  • 一个所有CMS页面公用的句柄

如果一个CMS块要显示在首页,我们会在local.xml文件里使用首页句柄。同样的,如果要在所有CMS页面显示,我们可以使用所有CMS页面通用的句柄。但是,用户创建的个人CMS页面又该怎么办呢?

幸运的是:Magento允许我们通过后台CMS编辑器为每一个CMS页面定义一个自定义布局。这样的话,一个CMS页面的布局就被数据库中为这个特殊页面定义的值修改。

首先,我们为名为"static-block-1"特殊CMS页面创建一个静态块,加入下面的简单样式:

<div class=”element-blue”>        <h3>Static Block 1</h3>        <p>This is blue static element 1 </p></div>

接着,我们将创建一个包含了刚才创建的静态块的CMS页面。通过这个页面的Design标签更新布局XML,里面有头部和一个段落。今天以一列布局为例。

<reference name="root">        <block type="cms/block" name="myelement">            <action method="setBlockId"><block_id>static-block-1</block_id></action>        </block></reference>

最后,我们要更新我们的模板文件,添加一行调用我们元素的代码。打开1colum.phtml文件(app/design/frontend/default/你的主题/template/page/1column.phtml),按下面代码进行修改:

…<div class="page">        <?php echo $this->getChildHtml('header') ?>        <?php echo $this->getChildHtml('myelement') ?>…

虽然这个方法很快速,效果也不错,但是用同样的步骤添加元素会让人觉得乏味,特别是一个项目有6、7个这样的CMS页面。你觉得这个方法怎么样呢?你又是如何解决这个问题的呢?欢迎你和我们分享。

0 0
原创粉丝点击