用magento布局给特定CMS页面添加静态块
有次在做一个项目的时候,我需要在头部和某些页面内容中间加入一个独有的静态块。元素必须完全在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页面。你觉得这个方法怎么样呢?你又是如何解决这个问题的呢?欢迎你和我们分享。
版权声明:本站内容源自互联网,如有内容侵犯了你的权益,请联系删除相关内容。