0

If the customer is not logged in , customer shouldn't be able to add the product in cart and simultaneously it should redirect to login page with an error message.

1

Try this,

I created this Module on this. I hope you are asking Magento 1

app/etc/modules/MPS_Addtocartredirect.xml

<?xml version="1.0"?>
<config>
  <modules>
    <MPS_Addtocartredirect>
      <active>true</active>
      <codePool>local</codePool>
      <version>0.1.0</version>
    </MPS_Addtocartredirect>
  </modules>
</config>

app\code\local\MPS\Addtocartredirect\etc

<?xml version="1.0"?>
<config>
  <modules>
    <MPS_Addtocartredirect>
      <version>0.1.0</version>
    </MPS_Addtocartredirect>
  </modules>
  <frontend>
    <routers>
      <addtocartredirect>
        <use>standard</use>
          <args>
            <module>MPS_Addtocartredirect</module>
            <frontName>addtocartredirect</frontName>
          </args>
      </addtocartredirect>
    </routers>
        <layout>
          <updates>
            <addtocartredirect>
              <file>addtocartredirect.xml</file>
            </addtocartredirect>
          </updates>
        </layout>
  </frontend>
  <global>
    <helpers>
      <addtocartredirect>
        <class>MPS_Addtocartredirect_Helper</class>
      </addtocartredirect>
    </helpers>
    <blocks>
      <addtocartredirect>
        <class>MPS_Addtocartredirect_Block</class>
      </addtocartredirect>
    </blocks>
  </global>
</config> 

app\code\local\MPS\Addtocartredirect\controllers\IndexController.php

<?php
class MPS_Addtocartredirect_IndexController extends Mage_Core_Controller_Front_Action{
    public function IndexAction() {

      $this->loadLayout();   
      $this->renderLayout(); 

    }


    public function redirectmeAction(){
      $redirect_url = Mage::getUrl('customer/account/login/');
      Mage::app()->getFrontController()->getResponse()->setRedirect($redirect_url)->sendResponse();
      //$this->_redirectReferer($redirect_url);
      Mage::getSingleton('core/session')->addError('Please login First'); // Add your Error Message
    }
}

app\code\local\MPS\Addtocartredirect\Helper\Data.php

<?php
class MPS_Addtocartredirect_Helper_Data extends Mage_Core_Helper_Abstract
{
}

app\code\local\MPS\Addtocartredirect\Block\Index.php

<?php   
class MPS_Addtocartredirect_Block_Index extends Mage_Core_Block_Template{  
}

app\design\frontend\base\default\layout\addtocartredirect.xml

<?xml version="1.0"?>   
<layout version="0.1.0">  
  <catalog_product_view>
    <reference name="content">
        <action method="setTemplate">
            <template>addtocartredirect/view.phtml</template>
        </action>
    </reference>
</catalog_product_view>
</layout>   

app\design\frontend\base\default\template\addtocartredirect\view.phtml

    <?php
/**
 * Magento
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Academic Free License (AFL 3.0)
 * that is bundled with this package in the file LICENSE_AFL.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/afl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@magentocommerce.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade Magento to newer
 * versions in the future. If you wish to customize Magento for your
 * needs please refer to http://www.magentocommerce.com for more information.
 *
 * @category    design
 * @package     rwd_default
 * @copyright   Copyright (c) 2014 Magento Inc. (http://www.magentocommerce.com)
 * @license     http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
 */

/**
 * Product view template
 *
 * @see Mage_Catalog_Block_Product_View
 * @see Mage_Review_Block_Product_View
 */
?>
<?php $_helper = $this->helper('catalog/output'); ?>
<?php $_product = $this->getProduct(); ?>
<script type="text/javascript">
    var optionsPrice = new Product.OptionsPrice(<?php echo $this->getJsonConfig() ?>);
</script>
<div id="messages_product_view"><?php echo $this->getMessagesBlock()->getGroupedHtml() ?></div>
<div class="product-view">
    <div class="product-essential">
    <?php $Islogin = Mage::getSingleton('customer/session')->isLoggedIn(); ?>
        <form action="<?php if($Islogin){ echo $this->getSubmitUrl($_product); } else{ echo $this->getUrl('addtocartredirect/index/redirectme');} ?>" method="post" id="product_addtocart_form"<?php if($_product->getOptions()): ?> enctype="multipart/form-data"<?php endif; ?>>
            <?php echo $this->getBlockHtml('formkey') ?>
            <div class="no-display">
                <input type="hidden" name="product" value="<?php echo $_product->getId() ?>" />
                <input type="hidden" name="related_product" id="related-products-field" value="" />
            </div>

            <div class="product-img-box">
                <div class="product-name">
                    <h1><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></h1>
                </div>
                <?php echo $this->getChildHtml('media') ?>
            </div>

            <div class="product-shop">
                <div class="product-name">
                    <span class="h1"><?php echo $_helper->productAttribute($_product, $_product->getName(), 'name') ?></span>
                </div>

                <div class="price-info">
                    <?php echo $this->getPriceHtml($_product); ?>
                    <?php echo $this->getChildHtml('bundle_prices') ?>
                    <?php echo $this->getTierPriceHtml() ?>
                </div>

                <div class="extra-info">
                    <?php echo $this->getReviewsSummaryHtml($_product, 'default', false)?>
                    <?php echo $this->getChildHtml('product_type_availability'); ?>
                </div>

                <?php echo $this->getChildHtml('alert_urls') ?>

                <?php if ($_product->getShortDescription()):?>
                    <div class="short-description">
                        <div class="std"><?php echo $_helper->productAttribute($_product, nl2br($_product->getShortDescription()), 'short_description') ?></div>
                    </div>
                <?php endif;?>




                <?php echo $this->getChildHtml('other');?>

                <?php if ($_product->isSaleable() && $this->hasOptions()):?>
                    <?php echo $this->getChildChildHtml('container1', '', true, true) ?>
                <?php endif;?>

            </div>

            <div class="add-to-cart-wrapper">
                <?php echo $this->getChildHtml('product_type_data') ?>
                <?php echo $this->getChildHtml('extrahint') ?>

                <?php if (!$this->hasOptions()):?>
                    <div class="add-to-box">
                        <?php if($_product->isSaleable()): ?>
                            <?php echo $this->getChildHtml('addtocart') ?>
                            <?php if( $this->helper('wishlist')->isAllow() || $_compareUrl=$this->helper('catalog/product_compare')->getAddUrl($_product)): ?>
                                <span class="or"><?php echo $this->__('OR') ?></span>
                            <?php endif; ?>
                        <?php endif; ?>
                        <?php echo $this->getChildHtml('addto') ?>
                        <?php echo $this->getChildHtml('sharing') ?>
                    </div>
                    <?php echo $this->getChildHtml('extra_buttons') ?>
                <?php elseif (!$_product->isSaleable()): ?>
                    <div class="add-to-box">
                        <?php echo $this->getChildHtml('addto') ?>
                        <?php echo $this->getChildHtml('sharing') ?>
                    </div>
                <?php endif; ?>
            </div>

            <?php echo $this->getChildHtml('related_products') ?>

            <div class="clearer"></div>
            <?php if ($_product->isSaleable() && $this->hasOptions()):?>
                <?php echo $this->getChildChildHtml('container2', '', true, true) ?>
            <?php endif;?>
        </form>
        <script type="text/javascript">
        //<![CDATA[
            var productAddToCartForm = new VarienForm('product_addtocart_form');
            productAddToCartForm.submit = function(button, url) {
                if (this.validator.validate()) {
                    var form = this.form;
                    var oldUrl = form.action;

                    if (url) {
                       form.action = url;
                    }
                    var e = null;
                    try {
                        this.form.submit();
                    } catch (e) {
                    }
                    this.form.action = oldUrl;
                    if (e) {
                        throw e;
                    }

                    if (button && button != 'undefined') {
                        button.disabled = true;
                    }
                }
            }.bind(productAddToCartForm);

            productAddToCartForm.submitLight = function(button, url){
                if(this.validator) {
                    var nv = Validation.methods;
                    delete Validation.methods['required-entry'];
                    delete Validation.methods['validate-one-required'];
                    delete Validation.methods['validate-one-required-by-name'];
                    // Remove custom datetime validators
                    for (var methodName in Validation.methods) {
                        if (methodName.match(/^validate-datetime-.*/i)) {
                            delete Validation.methods[methodName];
                        }
                    }

                    if (this.validator.validate()) {
                        if (url) {
                            this.form.action = url;
                        }
                        this.form.submit();
                    }
                    Object.extend(Validation.methods, nv);
                }
            }.bind(productAddToCartForm);
        //]]>
        </script>
    </div>

    <div class="product-collateral toggle-content tabs">
        <?php if ($detailedInfoGroup = $this->getChildGroup('detailed_info', 'getChildHtml')):?>
            <dl id="collateral-tabs" class="collateral-tabs">
                <?php foreach ($detailedInfoGroup as $alias => $html):?>
                    <dt class="tab"><span><?php echo $this->escapeHtml($this->getChildData($alias, 'title')) ?></span></dt>
                    <dd class="tab-container">
                        <div class="tab-content"><?php echo $html ?></div>
                    </dd>
                <?php endforeach;?>
            </dl>
        <?php endif; ?>
    </div>

    <?php echo $this->getChildHtml('upsell_products') ?>
    <?php echo $this->getChildHtml('product_additional_data') ?>

</div>

if you already have some customization in view.phtml then change only this code

<?php $Islogin = Mage::getSingleton('customer/session')->isLoggedIn(); ?>
        <form action="<?php if($Islogin){ echo $this->getSubmitUrl($_product); } else{ echo $this->getUrl('addtocartredirect/index/redirectme');} ?>" method="post" id="product_addtocart_form"<?php if($_product->getOptions()): ?> enctype="multipart/form-data"<?php endif; ?>>

This code only for individual page

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.