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,如下图,并根据如下提示,了解每个域的大致作用。

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

”"

添加链接方式,

Login

在布局文件中添加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 >

标签内的值即在创建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. $block = Mage::getModel('cms/block')  
  2.  ->setStoreId(Mage::app()->getStore()->getId())  
  3.  ->load('order_form');  
  4. $content = $block->getContent(); // Block的原始内容已经获得  
  5.   
  6. $processor = Mage::getModel('core/email_template_filter');  
  7. echo $html = $processor->filter($content);  
  8. ?>  


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

[php]
  1. 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_formblock_id>action>  
  4.     block>      
  5. reference>   

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

你可能感兴趣的:(magento)