block静态块主要是指在后台添加的可用静态块
调用方法常见的有如下几种:(这边就不介绍使用widgets 调用的方法了,有兴趣的朋友可以自己在后台widgets中尝试设置)

1、直接在HomePage中调用(只限首页):

修改layout中的xml代码
<reference name=”content”>
<block type=”cms/block” name=”blockname” before=”-“>
<action method=”setBlockId”><id>block_id</id></action>
</block>
</reference>

通过修改reference 中的name属性值调整主体位置,通过block中的before或after属性值调整相对顺序

CMS 页以及static block还可以通过如下方法调用:
{{block type=”cms/block” name=”user-block” block_id=”one-block”}}
(其中的name为自定义的,block_id 为静态块的 identi)

2、直接在模板的 .phtml 中调用

<?php echo $this->getLayout()
->createBlock(‘cms/block’)
->setBlockId(‘block_id’)
->toHtml(); ?>

3、在对应的 .xml 中的目标位置调用

<block type=”cms/block” name=”blockname” as=”blockname” before=”-“>
<action method=”setBlockId”><id>block_id</id></action>
</block>
<!– 修改其中的 name as 以及id 确保正确调用,修改before参数确保位置正确 –>

4、使用 getChildHtml() 方法调用(类似方法3):

首先在page.xml文件中定义一个childhtml名称(这边用test代替)
可以参考before_body_end那段代码
<block type=”core/text_list” name=”before_body_end” as=”before_body_end”/>
定义自己需要的如:
<block type=”core/text_list” name=”test” as=”test”/>
然后将调用的代码添加到对应的XML布局文件的正确位置
例如这边我们插入到catalog.xml 中的<default>块中,这样就可以在任意页面调用,当然你也可以加到你想要的页面中。
<default><!–位于30行左右–>
<reference name=”test”>
<block type=”cms/block” name=”testname” before=”-“>
<action method=”setBlockId”><id>testblock</id></action>
</block>
</reference>
……
添加static block名称为testblock

内容自己定义,如: <h1>This is a test Block!</h1>
到你想让这块内容出现的页面调用它
这边我们在1column.phtml中调用
<?php echo $this->getChildHtml(‘test’) ?>

 

5.应用实例:

catalog.xml
<!–
Product view
–>部分,找到<block type=”catalog/product_view_media” name=”product.info.media” as=”media” template=”catalog/product/view/media.phtml”/>
复制并加以修改为:
<block type=”catalog/product_view_media” name=”product.info.mediagallery” as=”media_gallery” template=”catalog/product/view/mediagallery.phtml”/>
其中mediagallery.phtml 文件代码可参考media.phtml 文件根据需要进行相应修改

然后

除非注明, askADC博客 的文章均为原创,转载请注明作者和出处。
本文链接地址: http://blog.askadc.com/magento%e8%b0%83%e7%94%a8%e5%90%8e%e5%8f%b0block%e9%9d%99%e6%80%81%e5%9d%97%e7%9a%84%e5%87%a0%e7%a7%8d%e6%96%b9%e6%b3%95/

发表评论

邮箱地址不会被公开。 必填项已用*标注