Tag Archives: Override

Magento Override Controller

Here we are overing the function addAction in CartController.php

1) Chnage the directory to magento installtion

2) vi app/etc/modules/Phpcodez_Checkout.xml
<?xml version=”1.0″?>
<config>
<modules>
<Phpcodez_Checkout>
<active>true</active>
<codePool>local</codePool>
</Phpcodez_Checkout>
</modules>
</config>

3)vi app/code/local/Phpcodez/Checkout/etc/config.xml

<?xml version=”1.0″?>
<config>

<modules>
<Phpcodez_Checkout>
<version>0.1.0</version>
</Phpcodez_Checkout>
</modules>

<frontend>
<routers>
<checkout>
<args>
<modules>
<phpcodez_checkout before=”Mage_Checkout”>Phpcodez_Checkout</phpcodez_checkout>
</modules>
</args>
</checkout>
</routers>
</frontend>

</config>

3) vi app/code/local/Phpcodez/Checkout/controllers/CartController.php

<?php
require_once Mage::getModuleDir(‘controllers’, ‘Mage_Checkout’).DS.’CartController.php’;

class Phpcodez_Checkout_CartController extends Mage_Checkout_CartController{

public function addAction() {
$cart = $this->_getCart();
$params = $this->getRequest()->getParams();
try {
if (isset($params[‘qty’])) {
$filter = new Zend_Filter_LocalizedToNormalized(
array(‘locale’ => Mage::app()->getLocale()->getLocaleCode())
);
$params[‘qty’] = $filter->filter($params[‘qty’]);
}

$product = $this->_initProduct();
$related = $this->getRequest()->getParam(‘related_product’);

/**
* Check product availability
*/
if (!$product) {
$this->_goBack();
return;
}

$cart->addProduct($product, $params);
if (!empty($related)) {
$cart->addProductsByIds(explode(‘,’, $related));
}

$cart->save();

$this->_getSession()->setCartWasUpdated(true);

/**
* @todo remove wishlist observer processAddToCart
*/
Mage::dispatchEvent(‘checkout_cart_add_product_complete’,
array(‘product’ => $product, ‘request’ => $this->getRequest(), ‘response’ => $this->getResponse())
);

if (!$this->_getSession()->getNoCartRedirect(true)) {
if (!$cart->getQuote()->getHasError()){
$message = $this->__(‘%s was added to your shopping cart.’, Mage::helper(‘core’)->escapeHtml($product->getName()));
$this->_getSession()->addSuccess($message);
}
$this->_goBack();
}
} catch (Mage_Core_Exception $e) {
if ($this->_getSession()->getUseNotice(true)) {
$this->_getSession()->addNotice(Mage::helper(‘core’)->escapeHtml($e->getMessage()));
} else {
$messages = array_unique(explode(“n”, $e->getMessage()));
foreach ($messages as $message) {
$this->_getSession()->addError(Mage::helper(‘core’)->escapeHtml($message));
}
}

$url = $this->_getSession()->getRedirectUrl(true);
if ($url) {
$this->getResponse()->setRedirect($url);
} else {
$this->_redirectReferer(Mage::helper(‘checkout/cart’)->getCartUrl());
}
} catch (Exception $e) {
$this->_getSession()->addException($e, $this->__(‘Cannot add the item to shopping cart.’));
Mage::logException($e);
$this->_goBack();
}
}

}
?>

Magento Override Block

1) Change the directory to magento installation

2) vi app/etc/modules/Phpcodez_Checkout.xml and paste the below given code
<?xml version=”1.0″?>
<config>
<modules>
<Phpcodez_Checkout>
<active>true</active>
<codePool>local</codePool>
</Phpcodez_Checkout>
</modules>
</config>
3) mkdir app/code/local/Phpcodez
4) mkdir app/code/local/Phpcodez/Checkout
5) mkdir app/code/local/Phpcodez/Checkout/etc
6) mkdir app/code/local/Phpcodez/Checkout/Block
7) vi app/code/local/Phpcodez/Checkout/etc/config.xml and paste the below given code
<?xml version=”1.0″?>
<config>
<modules>
<Phpcodez_Checkout>
<version>0.1.0</version>
</Phpcodez_Checkout>
</modules>
<global>
<blocks>
<checkout>
<rewrite>
<links>Phpcodez_Checkout_Block_Links</links>
</rewrite>
</checkout>
</blocks>
</global>
</config>

8) vi app/code/local/Phpcodez/Checkout/Block/Links.php and paste here the below given code
<?php
class Phpcodez_Checkout_Block_Links extends Mage_Checkout_Block_Links{
public function addCheckoutLink() {

if (!$this->helper(‘checkout’)->canOnepageCheckout()) {
return $this;
}

$parentBlock = $this->getParentBlock();
if ($parentBlock && Mage::helper(‘core’)->isModuleOutputEnabled(‘Mage_Checkout’)) {
$text = $this->__(‘Checkout Overriden’);
$parentBlock->addLink(
$text, ‘checkout’, $text,
true, array(‘_secure’ => true), 60, null,
‘class=”top-link-checkout”‘
);
}
return $this;
}
}
?>

Override index controller magento

Here you can see how to override app/code/core/Mage/Contacts/controllers/IndexController.php .

1) Change the directory to the root of magento installation

2) vi app/etc/modules/PHPCodez_Contacts.xml

Paste the below given content

<config>
<modules>
<PHPCodez_Contacts>
<active>true</active>
<codePool>local</codePool>
</PHPCodez_Contacts>
</modules>
</config>
3) cd app/code/

4) mkdir local

5) cd local

6) mkdir PHPCodez

7) cd PHPCodez

8) mkdir Contacts

9) cd Contacts

10) mkdir controllers

11) mkdir etc

12) vi etc/config.xml

paste the below given code

<?xml version=”1.0″?>
<config>
<modules>
<PHPCodez_Contacts>
<version>0.1.0</version>
</PHPCodez_Contacts>
</modules>

<frontend>
<routers>
<PHPCodez_Contacts>
<use>standard</use>
<args>
<module>PHPCodez_Contacts</module>
<frontName>contacts</frontName>
</args>
</PHPCodez_Contacts>
</routers>
</frontend>
</conf

12)vi controllers/IndexController.php

Paste the below given code

<?php
require_once ‘Mage/Contacts/controllers/IndexController.php’;
class PHPCodez_Contacts_IndexController extends Mage_Contacts_IndexController
{
// Overrride the post function
public function postAction() {
error_log(“Overriden n”, 3, “/var/log/error-log.txt”);
// add your code to implement a tasks
}
}
?>