Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Desactivar otros metodos de envío si envío gratuito [SOLUCIONADO]
 
factorymediaweb
Jr. Member
 
Total Posts:  15
Joined:  2008-11-10
 

Hola a todos, he estado buscando por todo el foro cómo desactivar el resto de métodos de envío si se activa el envío gratuito,
porque es bastante ilógico que se le de a elegir al cliente entre gratis y de pago.

La solución (en inglés) si usas la plantilla default está en este hilo

Si usas otra plantilla, debes editar el siguiente archivo:
app/design/frontend/ruta-de-tu-plantilla/template/checkout/cart/shipping.phtml
sustituyendo el interior de la etiqueta:

<fieldset>
     <
dl class="sp-methods">
     ...
     </
dl>
 <
div class="buttons-set">

por este otro:

<?php $freeOnly False?>
<?php 
foreach ($_shippingRateGroups as $code => $_rates): ?>
<?php 
if ( $code == "freeshipping"{$freeOnly True;}?>
<?php 
endforeach; ?>

<?php 
foreach ($_shippingRateGroups as $code => $_rates): ?>
<?php 
if (( $freeOnly == False) || ( ( $freeOnly == True ) && ( $code == "freeshipping" ) )): ?>
<dt><?php echo $this->getCarrierName($code?></dt>
<
dd>
<
ul>
<?php foreach ($_rates as $_rate): ?>
<li class="<?php if ($_rate->getErrorMessage()) echo 'error-msg';?>">
<?php if ($_rate->getErrorMessage()): ?>
<?php 
echo $_rate->getErrorMessage() ?>
<?php 
else: ?>
<input name="estimate_method" type="radio" value="<?php echo $this->htmlEscape($_rate->getCode()) ?>” id="s_method_<?php echo $_rate->getCode() ?>"<?php if( ($_rate->getCode()===$this->getAddressShippingMethod() || ($code == "freeshipping") )) echo ' checked="checked"' ?>/>
<label for="
s_method_<?php echo $_rate->getCode() ?>"><?php echo $_rate->getMethodDescription() ?> - <strong><?php echo $_rate->getPrice() ?></strong></label>
<?php endif ?>
</li>
<?php endforeach; ?>
</ul>
</dd>
<?php endif; ?>
<?php endforeach; ?>
 
Magento Community Magento Community
Magento Community
Magento Community
 
ZhenIT
Jr. Member
 
Avatar
Total Posts:  10
Joined:  2009-06-21
Bilbao
 

En caso de que alguien use onepage checkout la página que debería de cambiar es

app/design/frontend/TEMPLATE/default/template/checkout/onepage/shipping_method/available.php

Su código quedaría así:

<?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_default
 * @package    Mage
 * @copyright  Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
 * @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
 */
?>
<?php 
if (!($_shippingRateGroups $this->getShippingRates())): ?>
    
<strong><?php echo $this->__('Sorry, no quotes are available for this order at this time.'?></strong>
<?php else: ?>
<dl class="shipment-methods">
    
<?php $freeOnly False?>
    <?php 
foreach ($_shippingRateGroups as $code => $_rates): ?>
    <?php 
if ( $code == "freeshipping"{$freeOnly True;}?>
    <?php 
endforeach; ?>
    <?php 
foreach ($_shippingRateGroups as $code => $_rates): ?>
<?php 
if (( $freeOnly == False) || ( ( $freeOnly == True ) && ( $code == "freeshipping" ) )): ?>
        
<dt><?php echo $this->getCarrierName($code?></dt>
        <
dd>
            <
ul>
            
<?php foreach ($_rates as $_rate): ?>
                
<li>
                   
<?php if ($_rate->getErrorMessage()): ?>
                    
<ul class="messages"><li class="error-msg"><ul><li><?php echo $_rate->getErrorMessage() ?></li></ul></li></ul>
                   
<?php else: ?>
                        
<input name="shipping_method" type="radio" value="<?php echo $_rate->getCode() ?>" id="s_method_<?php echo $_rate->getCode() ?>"<?php if($_rate->getCode()===$this->getAddressShippingMethod() || $freeOnly == True ) echo ' checked="checked"' ?> />
                        <
label for="s_method_<?php echo $_rate->getCode() ?>"><?php echo $_rate->getMethodTitle() ?>
                        
<strong>
                        
<?php $_excl $this->getShippingPrice($_rate->getPrice(), $this->helper('tax')->displayShippingPriceIncludingTax()); ?>
                        <?php $_incl 
$this->getShippingPrice($_rate->getPrice(), true); ?>

                        <?php 
echo $_excl?>
                        <?php 
if ($this->helper('tax')->displayShippingBothPrices() && $_incl != $_excl): ?>
                            
(<?php echo $this->__('Incl. Tax'); ?> <?php echo $_incl?>)
                        
<?php endif; ?>
                        
</strong>
                        </
label>
                   
<?php endif ?>
                
</li>
            
<?php endforeach; ?>
            
</ul>
        </
dd>
<?php endif ?>
    <?php 
endforeach; ?>
</dl>
<?php endif; ?>
 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top