如何重写或者扩展magento内置Block

 

如何重写或者扩展 magento 内置 Block

Block magento 中一个很重要的组长部份,在安装了 magento 后, magento 自身带了很多的模块,模块中有很多的 Block, 一般一个 Block 对应一个模板文件表示 html 的输出 .

如果我们要修改 magento 增加其功能适应自己的需求,一般都会涉及到要扩展原来的 magento. 下面我们通过一个例子说明怎么扩展 Block

如在上面的图中我们增加了‘打印’按钮

 

(1): 新建好如下 Adminhtml 和他下面的目录和文件 .

 

View.php:

 

<?php

 

class DEMO_Adminhtml_Block_Sales_Order_View extends Mage_Adminhtml_Block_Sales_Order_View

{

 

public function __construct ()

{

parent :: __construct ();

$this ->_addButton( 'order_print' , array (

'label' => Mage::helper( 'sales' )->__( 'Print' ),

//'onclick' => "popWin('/sales/order/print/order_id/{$this->getOrder()->getId()}')",

'onclick' => 'popWin(/'' . $this ->getPrintUrl() . '/',/'printwin/',/'width=800,height=600,resizable=yes,scrollbars=yes/')' ,

));

}

public function getPrintUrl()

{

return $this ->getUrl( '*/sales_print/print' );

}

}

 

红色部份类为原有 block 的类,我们必须继承原有的类来扩展 block 的功能。在这个 block 中,我们可以增加新的方法或者 override 父类方法来增加其功能。在他的模板文件中可以使用 $this 来引来此类,从而可以调用此类中的公用方法

 

 

 

 

 

 

 

 

config.xml

 

<?xml version="1.0"?>

 

<config>

<modules>

< DEMO_Adminhtml>

<version>0.1.0</version>

</ DEMO_Adminhtml>

</modules>

 

<global>

<blocks>

<adminhtml>

<rewrite>

<sales_order_view> DEMO_Adminhtml_Block_Sales_Order_View</sales_order_view>

</rewrite>

</adminhtml>

</blocks>

</global>

</config>

 

注意这里的 sales_order_view 被新的类所代替 , 而此类继承了原先的类,所以原本功能不会受影响

 

(2):app/etc/modules/ DEMO_All.xml

 

<?xml version="1.0"?>

<config>

< DEMO_Adminhtml>

<active>true</active>

<codePool>local</codePool>

</ DEMO_Adminhtml>

</modules>

</config>

 

指明模块代码存放的路经 .

 

(3): 说明

design/adminhtml/default/default/layout/sales.xml 中引用了此 block

 

<reference name="content">

<block type="adminhtml/ sales_order_view " name="sales_order_edit"></block>

</reference>

 

一般 block 都有一个如 : template="sales/order/view/info.phtml" 的属性,如果没有指明,此可以去这个 block 中这个类中去查找,很有可能在构选方法中用形如 :

$this- >setTemplate( 'widget/form/container.phtml' ) 进行了设置 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值