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.
-
To hide prices and "Add to cart" button for non-logged in visitors.Follow this link templatemonster.com/help/… If you looking for the extension ,please install this free extension available. magentocommerce.com/magento-connect/… magentocommerce.com/magento-connect/hide-price-add-to-cart.html– Abhinav SinghNov 28, 2016 at 6:08
1 Answer
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