当然,您可以在所有主题文件中更改它。
但是,如果您想在站点范围内更改所有添加到购物车的行为,您可能需要扩展 CartController 并将添加操作转发到您自己的 ajax 模块。
一个例子:
应用程序/代码/本地/MyCompany/Ajax/controllers/CartController.php:
<?php
require_once 'Mage/Checkout/controllers/CartController.php';
class MyCompany_Ajax_CartController extends Mage_Checkout_CartController {
public function addAction() {
$this->_forward('add', 'index', 'ajax', $this->getRequest()->getParams());
}
}
应用程序/代码/本地/MyCompany/Ajax/etc/config.xml:
<?xml version="1.0"?>
<config>
[...]
<frontend>
<routers>
<checkout>
<args>
<modules>
<mycompany_ajax before="Mage_Checkout">MyCompany_Ajax</mycompany_ajax>
</modules>
</args>
</checkout>
</routers>
</frontend>
</config>
另一种方法是添加一个监听器来监听 controller_action_predispatch_checkout_cart_add 事件并在那里转发。