功能介绍:Magento中如何重写block?
记录下如何对magento的block进行重写:
首先看下当前模块中的block返回的是什么,
//路径:Message/Count/Block/Count.php
<?php
class Message_Count_Block_Count extends Mage_Core_Block_Template
{
public function test()
{
echo "this is old block";
}
public function hello()
{
echo "hello world";
}
}
在模板文件count.phtml中调到当前block:
<?php echo $this->test();?>
<?php echo $this->hello();?>
前台输出的结果为:
现在我们对这个block进行重写,但又不能在原模块中修改,所以需要创建属于你自己代码的命名空间,例如New,App等,这里我的空间命名为New。现在我打算修改的是Message/Count/Block/Count.php 这个文件,所以我需要在New下也新建一个模块叫Count。接下来创建块(Block)目录,并复制Count.php到新目录(New/Count/Count.php)中。接着创建config.xml配置文件:
local
|---New
|---Block
| |---Count.php
|---etc
|---config.xml
修改Count.php的类名为 New_Count_Block_Count,并继承原类名Mage_Core_Block_Template。
接在,创建文件app/etc/modules/New_Count.xml,添加如下代码:
< ?xml version="1.0"?>
<config>
<modules>
<New_Count>
<active>true</active>
<codePool>local</codePool>
</New_Count>
</modules>
</config>
然后,编辑config.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<New_Count>
<version>0.1.0</version>
</New_Count>
</modules>
<global>
<blocks>
<count><!-- 重写的模块名字 -->
<rewrite>
<count>New_Count_Block_Count</count><!--<count>为模块下block下的类名 ,App_Count_Block_Count为重写的类名 -->
</rewrite>
</count>
</blocks>
</global>
</config>
最后来编辑新的block/Count.php文件:
<?php
class New_Count_Block_Count extends Mage_Core_Block_Template
{
public function test()
{
echo "this is new rewrite block";
}
public function hello()
{
echo '111111111111';
}
}
打开浏览器,重新加载:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。