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

Magento Add Cancel link on order list page (frontend)

 
阅读更多

1. rewrite in config.xml:

<config>   
    <helpers>
      <mysales>
        <class>Bysoft_Mysales_Helper</class>
      </mysales>
    </helpers>
    <frontend>
        <routers>
            <mysales>
                <use>standard</use>
                <args>
                    <module>Bysoft_Mysales</module>
                    <frontName>mysales</frontName>
                </args>
            </mysales>
            <sales>
	            <args>
	                <modules>
	                    <Bysoft_Mysales before="Mage_Sales">Bysoft_Mysales</Bysoft_Mysales>
	                </modules>
	            </args>
        </sales>
        </routers>  
    </frontend>
</config> 

 

rewrite core sales order controller:

<?php
require_once Mage::getModuleDir('controllers', 'Mage_Sales').DS.'OrderController.php';
class Bysoft_Mysales_OrderController extends Mage_Sales_OrderController {
	public function cancelAction()
	{

		// Retrieve order_id passed by clicking on "Cancel Order" in customer account
		$orderId = $this->getRequest()->getParam('id');
		
		// Load Mage_Sales_Model_Order object
		$order = Mage::getModel('sales/order')->load($orderId);
		
		// Retrieve catalog session.
		// We must use catalog session as customer session messages are not initiated for sales order view
		// and this is where we want to redirect at the end of this action
		// @see Mage_Sales_Controller_Abstract::_viewAction()
		$session = Mage::getSingleton('catalog/session');
		
		try {
		
			// Make sure that the order can still be canceled since customer clicked on "Cancel Order"
			if(!Mage::helper('mysales')->canCancel($order)) {
				throw new Exception('Order cannot be canceled anymore.');
			}
		
			// Cancel and save the order
			$order->cancel();
			$order->save();
		
			// If sending transactionnal email is enabled in system configuration, we send the email
			if(Mage::getStoreConfigFlag('sales/cancel/send_email')) {
				$order->sendOrderUpdateEmail();
			}
		
			$session->addSuccess($this->__('The order has been canceled.'));
		}
		catch (Exception $e) {
			Mage::logException($e);
			$session->addError($this->__('The order cannot be canceled.'));
		}
		
		// Redirect to current sale order view
		$this->_redirect('sales/order/history');
	}
}

 Helper file for checking if the order can be canceled:

<?php
class Bysoft_Mysales_Helper_Data extends Mage_Core_Helper_Abstract
{
	public function canCancel(Mage_Sales_Model_Order $order)
	{

	
		// If Magento decides that this order cannot be canceled
		if(!$order->canCancel()) {
			return false;
		}
	
	
	
		// Else... return true
		return true;
	}
}
	 

 Add link to template file:

 <?php if (Mage::helper('mysales')->canCancel($_order)):?>
       <span class="separator">|</span> 
        <a href="<?php echo $this->getUrl('sales/order/cancel', array('id'=>$_order->getId()));?>" class="link-cancel"><?php echo $this->__('Cancel') ?>
        </a>                        
  <?php endif;?>

 

分享到:
评论

相关推荐

    magento创建动态菜单 Create Dynamic CMS Navigation For Magento Frontend

    在这个主题中,“Create Dynamic CMS Navigation For Magento Frontend”指的是在Magento的前端生成可以根据CMS页面自动生成的动态菜单。 在Magento中,静态菜单通常是通过后台管理界面手动创建和维护的,而动态...

    Magento Order Export

    Magento Order Export 模块是为Magento电子商务平台设计的一个功能,用于导出订单数据。这个模块允许管理员方便地将Magento商店中的订单信息导出为可处理的格式,例如CSV或XML,以便进行数据分析、备份或其他外部...

    magento 加速插件 full page cache 花了我几十美金买的

    为了解决这个问题,"Full Page Cache"(FPC)插件应运而生,它是Magento性能优化的重要工具之一。 Full Page Cache 插件的核心功能是通过缓存整个页面来显著提高网站的加载速度。在传统的Web应用中,每次用户请求...

    Magento: 后台添加预览按钮 View product in frontend from Magento admin

    这篇博客“Magento:后台添加预览按钮 View product in frontend from Magento admin”主要探讨了如何通过自定义开发来实现这一功能,让管理员能够快速检查商品在网站前台的显示状态。 在Magento中,通常管理员需要...

    Magento插件(DeleteOrder)

    "DeleteOrder"插件是针对Magento系统的一个特定解决方案,解决了在默认情况下,Magento系统不支持直接删除订单的问题。这个插件允许用户在必要时永久删除订单,但需要注意的是,一旦订单被删除,数据将无法恢复,...

    Magento 全页缓存-brim_pagecache-2.1.3

    在Magento平台中,全页缓存是通过插件实现的,如"brim_pagecache-2.1.3",这款插件特别针对Magento 1.6到1.8的社区版本设计。 首先,我们来看"brim_pagecache-2.1.3.zip",这是该插件的主要安装包,包含了所有必要...

    magento-2-cancel-order

    content:deploy -f这是前端的结果 如果这个项目可以帮助您减少开发时间,那么可以给我一杯咖啡:)Magento产品滑块Magento产品横幅我们的Magento服务PSD到Magento 2主题转换Magento速度优化服务Magento安全补丁安装...

    Magento 添加后台管理 addColumn

    "Magento添加后台管理addColumn"这个主题主要涉及的是如何在Magento的后台管理面板自定义添加新的数据列,以展示更多店铺运营的相关信息。这通常涉及到对Magento的MVC(Model-View-Controller)架构的理解,以及对...

    magento结构和原理

    JS和CSS文件是通过app/design/frontend/default/你的主题/layout/page.xml文件加载的。当然也可以直接写到模板文件里。加载的JS和CSS目录放在/skin/frontend/default/你的主题/下。如果不存在该目录,会向/skin/...

    Magento认证工程师考试提纲

    - **描述Magento模板和布局文件的位置**:模板文件主要位于`app/design/frontend/&lt;theme&gt;/&lt;package&gt;/template/`目录下,而布局文件则位于`app/design/frontend/&lt;theme&gt;/&lt;package&gt;/layout/`。 - **描述Magento皮肤...

    magento static block

    10 predefined block positions on each page Ability to place any block in any position by easily changing CMS page layout Unlimited number of blocks inside each position Unlimited number of content...

    magento数据结构分析

    标题:“Magento数据结构分析” 描述:“Magento数据字典”提供了对Magento系统中各种数据库表的深入理解,这对于理解和优化Magento的性能至关重要。 一、Magento数据结构解析 Magento是一款功能强大的电子商务...

    magento2-frontend-developer.pdf

    这份文档是关于Magento 2前端开发的学习手册,提供了有关Magento 2前端开发的全面训练方法。为了帮助开发者掌握Magento 2前端开发的基本概念,这份材料被视为最全面的学习指南。虽然通过阅读这份学习指南可以为考试...

    magento2-disable-frontend:Magento 2模块来禁用前端

    在Magento 2中禁用前端 禁用Magento 2中的前端,以仅使用Admin和API路由。 1-禁用安装前端 手动安装 为Magento2安装禁用前端 下载扩展 解压缩文件 创建一个文件夹{Magento root} / app / code / Abelbm / ...

    magento2-example-cataloglist

    magento2-example-..../magento session:catalog:list --attributes "type_id,name,sku,price" --inventory_fields "qty,use_config_backorders" website --type "configurable" --type "simple" --order "type_id

    Magento深入理解Magento

    ### Magento深入理解——强大配置系统解析 #### 一、引言 Magento是一款极其灵活且功能丰富的电子商务平台,其核心竞争力之一在于其强大的配置系统。这一系统不仅为开发者提供了极高的定制化能力,还确保了平台的...

    magento快速复制网站_magento_magento快速复制站_

    在电商领域,经常会有需求将一个已经建立并运行良好的Magento站点快速复制到另一个服务器,用于测试、备份或者创建一个新的独立站点。这个过程涉及到数据库的备份与还原、文件系统的复制以及配置的调整等多个步骤。 ...

    magento模板

    Magento是一款开源的电子商务平台,以其强大的功能和高度的可定制性而受到许多在线商家的青睐。模板在Magento中扮演着至关重要的角色,它们决定了商店的外观和用户体验。"mEbay_v1.6.0"可能是一个专为Magento设计的...

    magento 兰亭模板2011

    4. **上传模板文件**:使用FTP客户端(如FileZilla)连接到你的服务器,并将解压后的模板文件上传到Magento的根目录下的`app/design/frontend`和`skin/frontend`文件夹,覆盖原有的主题文件。 5. **启用模板**:...

    magento学习重点

    Magento是一款强大的开源电子商务平台,它的灵活性和可扩展性使其成为许多开发者和商家的首选。学习Magento涉及多个方面,包括理解其架构、模板系统、模块化设计以及控制器重写等核心概念。 首先,调整Magento模块...

Global site tag (gtag.js) - Google Analytics