`
haohappy2
  • 浏览: 315654 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

how to user static block in Magento

阅读更多
 

Static Block是Magento提供的非常实用的一种Block类型。通过Static Block,可以让不懂代码的店铺管理员轻易修改网站中的一些动态内容,而不需要修改Magento的核心代码。Magento Static Block的创建相当简单,通过后台CMS->Static Block即可查看或新建Static Block。建立完毕之后,可以在任意的Magento页面添加该段代码。

本文从创建Static Block开始讲起,然后包括在布局文件,模板文件及CMS页面中添加创建的Static Block。最后,通过这些知识,运用到实际的Magento模版开发当中,我们讲述如何在Magento的首页添加一个幻灯片。

创建Static Block

在后台菜单cms–>static block位置,新建立一个static block,如下图,并根据如下提示,了解每个域的大致作用。

Magento Static Block

Block Title:随便填写,方便识别位置与作用
Identifier:全局唯一,用于在模板或布局文件中调用
Store View:可见、可调用范围
Content:这里只需要填写HTML代码即可,没有太特殊的东西。值得注意的是这里引用图片,添加链接的方式。
添加图片方式,

<img src=”{{media url=”home_banner.jpg”}}” alt=”" width=”950″ height=”280″ />

添加链接方式,

<a href=”{{store url=’customer/account/login/’}}”>Login</a>

在布局文件中添加Static Block

Static Block在CMS菜单下,其统一的Block类型是type=”cms/block”,在布局文件中看到的此类Block一律是在CMS下的Static Block中定义的。Static Block在布局文件中的添加方式如下。

01
02
03
04
05
<block type="cms/block" name="block_name">
    <action method="setBlockId">
        <id>block_id</id>
    <action>
</block>

<id>标签内的值即在创建Static Block时填写的Identifier。另外这里定义了block的name属性,用于在模板文件中通过getChildHtml()方法引用该Static Block。

在模板文件中调用Static Block

在模板文件中调用Static Block有两种方法。
a)第一种是通过getChildHtml()方法调用,使用该方法的前提是在布局文件中,需要调用的Static Block已经在某一个Block内形成了父子关系,然后可以在父Block中使用getChildHtml()方法。

01
echo $this->getChildHtml('block_name')

b)第二种方法是在模板文件中使用createBlock()创建一个Block,然后再将Static Block赋予新创建的Block,然后toHtml()输出。使用该种方法不需要在布局文件中提前引用该Static Block。

01
echo $this->getLayout()->createBlock('cms/block')->setBlockId('foot_links')->toHtml()

在CMS页面添加Static Block

在CMS页面中添加Static Block同样非常简单,上面提到过所有的Static Block都属于cms/block类型,name属性可以随便取,建议保持一定的相关性,并且全局唯一,block_id属性即建立Static Block时填写的identifier。

{{block type=”cms/block” name=”cms_test_block” block_id=”order_form”}}

在后台创建一个order_form静态块
Block Title :Order Form
Identifier :order_form
Status :Enabled
Content :自定义内容

1.如果要在.phtml文件中直接调用这个静态块,那可以采用以下方法

[php]
  1. <?php  
  2. $block = Mage::getModel('cms/block')  
  3.  ->setStoreId(Mage::app()->getStore()->getId())  
  4.  ->load('order_form');  
  5. $content = $block->getContent(); // Block的原始内容已经获得  
  6.   
  7. $processor = Mage::getModel('core/email_template_filter');  
  8. echo $html = $processor->filter($content);  
  9. ?>  


Mage::getModel('core/email_template_filter')->filter()是必须的,因为Static Block里可能包含Magento的模板语言(如:{{store url=""}}),fiter将翻译成实际的值
Magento中调用静态Block主要有两个地方。
是否感觉这代码太长了呢,那你还可以这么写

[php]
  1. <?php echo $this->getLayout()->createBlock(‘cms/block’)->setBlockId('order_form')->toHtml() ?>   

2.如何在CMS页面的Content中调用这个静态块呢?你可以采用以下方法

[php]
  1. {{block type="cms/block"  name="cms_test_block"  block_id="order_form" }}   


将里面order_form改成你的静态块对应的block_id则可

3.怎么样在layout中调用静态块呢?

[xhtml]
  1.  <reference name="footer">  
  2.     <block type="cms/block" name="order_form" before="-">  
  3.         <action method="setBlockId"><block_id>order_form</block_id></action>  
  4.     </block>      
  5. </reference>   

 
 
到此,你应该能够灵活的运用magento中的静态块了吧!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics