Деактивирайте наложен платеж за конкретни продукти

Използвам Magento v1.9.0.1. Искам да деактивирам наложен платеж за конкретни продукти. Инсталирах COD разширение от magento commerce.

Нов съм в структурата на Magento и нямам нищо общо с нея. Опитах някакво отстраняване на грешки в него, но се издига над главата ми.

Освен това търся навсякъде в интернет, но никой никога не е предоставил кода за Magento v1.9.0.1.


person Goldy    schedule 23.04.2015    source източник
comment
можете ли да споделите връзката на разширението, което сте инсталирали?? Имате ли нужда от някаква опция за това в администраторската страна за деактивиране на COD за конкретен продукт??   -  person Pavan Kumar    schedule 23.04.2015
comment
Инсталирах COD разширение от Mage Specialist. Ето връзката към разширението. И да, имам нужда от опция от страна на администратора   -  person Goldy    schedule 23.04.2015


Отговори (2)


Създайте персонализиран атрибут с код на атрибут като cod и го присвоете на General от наборите атрибути.

Сега, според вашите изисквания, променете методите си.phtml (ако в него няма персонализиран код), както следва.

<?php
    $methods = $this->getMethods();
    $oneMethod = count($methods) <= 1;
?>
<?php if (empty($methods)): ?>
    <dt>
        <?php echo $this->__('No Payment Methods') ?>
    </dt>
<?php else:
    foreach ($methods as $_method):
        $_code = $_method->getCode();
?>
    <dt>
    <?php 
    //cod verification starts
    $attr_cod = array();
    $cartItems = Mage::getSingleton('checkout/session')->getQuote()->getAllItems();
    foreach ($cartItems as $item) {
        $attr_cod[] = Mage::getModel('catalog/product')->load($item->getProduct()->getId())->getCod();

    }
    if(in_array('1', $attr_cod) && $_code == 'cashondelivery') {continue; }
    //cod verification ends
?>
    <?php if(!$oneMethod): ?>

        <input id="p_method_<?php echo $_code ?>" value="<?php echo $_code ?>" type="radio" name="payment[method]" title="<?php echo $this->escapeHtml($_method->getTitle()) ?>" onclick="payment.switchMethod('<?php echo $_code ?>')"<?php if($this->getSelectedMethodCode()==$_code): ?> checked="checked"<?php endif; ?> class="radio" />
    <?php else: ?>
        <span class="no-display"><input id="p_method_<?php echo $_code ?>" value="<?php echo $_code ?>" type="radio" name="payment[method]" checked="checked" class="radio" /></span>
        <?php $oneMethod = $_code; ?>
    <?php endif; ?>
        <label for="p_method_<?php echo $_code ?>"><?php echo $this->escapeHtml($this->getMethodTitle($_method)) ?> <?php echo $this->getMethodLabelAfterHtml($_method) ?></label>
    </dt>
    <?php if ($html = $this->getPaymentMethodFormHtml($_method)): ?>
    <dd>
        <?php echo $html; ?>
    </dd>
    <?php endif; ?>
<?php endforeach;
    endif;
?>
<?php echo $this->getChildChildHtml('additional'); ?>
<script type="text/javascript">
    //<![CDATA[
    <?php echo $this->getChildChildHtml('scripts'); ?>
    payment.init();
    <?php if (is_string($oneMethod)): ?>
    payment.switchMethod('<?php echo $oneMethod ?>');
        <?php endif; ?>
    //]]>
</script>

Тествах това и работи добре.

person Pavan Kumar    schedule 24.04.2015
comment
Мерси човече. При мен работи. Бихте ли ми казали как да добавя допълнителни такси за COD към общата сума на поръчката? - person Goldy; 24.04.2015
comment
за добавяне на допълнителна такса за COD опция, трябва да разработите разширение. Накратко, трябва да зададете GrandTotal, ако методът на плащане е COD - person Pavan Kumar; 24.04.2015

COD вече е в magento, не е необходимо да го инсталирате.

Има два начина

  1. създайте нова конфигурационна настройка, в която можете да въведете идентификатори на продукти, за които не сте искали COD опция.
  2. Можете също да създадете продуктов атрибут за проверка на опцията COD.

и проверете тези идентификатори (ако създадете настройки за конфигурация) с идентификатора на продукта или проверете за атрибута на продукта на app\design\frontend\base\default\template\checkout\onepage\payment\methods.phtml. И чрез прости условия, ако иначе, можете да избегнете опцията COD за тези продукти.

person urfusion    schedule 23.04.2015
comment
Благодаря за отговора. Бихте ли ми помогнали с кода. Създадох атрибута за COD, но не знам как да внедря това в кодирането - person Goldy; 23.04.2015
comment
Не мога да пиша код в момента. ще ви осигуря късно през нощта. опитайте да получите сесия на количката на тази страница. от сесията на кошницата ще получите идентификационния номер на продукта, след което заредете този продукт на methods.phtml и проверете атрибута. според вашия уебсайт кодът на метода на плащане е p_method_phoenix_cashondelivery. така че поставете условие if, в което проверявайте за атрибут, ако атрибутът е там, поставете друга проверка за не показване на COD. - person urfusion; 23.04.2015