Оплата наличными при доставке активирована только для администратора (не включен интерфейс) - Magento?

Я использую magento какое-то время. Я хотел узнать, можно ли включить Оплату наложенным платежом только для администратора. Я хочу использовать его в качестве самовывоза из магазина...

Таким образом, ручные заказы могут быть созданы только в панели администратора для тех, кто хочет самовывоз из магазина.

Я не хочу, чтобы это отображалось в Magento Frontend Store.

Вы все можете мне помочь???


person user1689231    schedule 24.12.2012    source источник


Ответы (3)


Есть несколько способов добиться этого, но они требуют знакомства с экосистемой Magento. Я бы не рекомендовал использовать CSS, чтобы скрыть его от конечного пользователя, потому что кто-то, кто немного знаком с CSS, может легко показать его и получить бесплатный доступ для покупки ваших продуктов.

Я также предлагаю не переопределять основные файлы (даже если вы их не редактируете), так как это вызовет проблемы с обновлением в будущем.

Твердый способ:

Мой любимый метод — включить метод чека/денежного перевода и создать себе небольшой модуль, подобный этому. Ни одно из предыдущих соображений здесь не действует.

/app/etc/modules/Company_Module.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Company_Module>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Payment/>
            </depends>
        </Company_Module>
    </modules>
</config>

/app/code/local/Company/Module/etc/config.xml

<?xml version="1.0"?>
<config>
<modules>
    <Company_Module>
        <version>0.0.1</version>
    </Company_Module>
</modules>

<global>
    <models>
        <Company_Module>
            <class>Company_Module_Model</class>
        </Company_Module>
    </models>
    <events>
        <payment_method_is_active>
            <observers>
                <company_module>
                    <type>singleton</type>
                    <class>Company_Module/Observer</class>
                    <method>paymentMethodIsActive</method>
                </company_module>
            </observers>
        </payment_method_is_active>
    </events>
</global>

</config>

/app/code/local/Company/Module/Model/Observer.php

<?php

class Company_Module_Model_Observer
{
    public function paymentMethodIsActive($observer)
    {
        $instance = $observer->getMethodInstance();
        $result = $observer->getResult();

        if ($instance->getCode() == "checkmo") {
            if (Mage::app()->getStore()->isAdmin()) {
                $result->isAvailable = true;
            } else {
                $result->isAvailable = false;
            }
        }
    }
}
person Joseph at SwiftOtter    schedule 24.12.2012
comment
Спасибо @JMax, я сделал то же самое. Но я не очень хорошо разбираюсь в программировании. Что делает этот код?? - person user1689231; 25.12.2012
comment
Он проверяет, поступает ли запрос из административной области, и если да, то мы говорим, что способ оплаты активен, в противном случае мы говорим, что способ оплаты неактивен. Это пуленепробиваемый. - person Joseph at SwiftOtter; 25.12.2012
comment
Привет @JMax, я пробовал это. Я сделал этот метод активным, но проблема в том, что я не хочу, чтобы он отображался во внешнем интерфейсе. Но он также доступен во внешнем интерфейсе. Я хочу скрыть это.. ?? Какие-либо предложения ? - person user1689231; 26.12.2012
comment
Используйте $instance->getCode() вместо $instance->getName() - person Kamal Joshi; 16.04.2013
comment
Кроме того, вы можете использовать пространство имен событий <frontend> вместо <global>, чтобы вам не приходилось проверять, запускается ли событие во внешнем интерфейсе или в adminhtml. - person Erfan; 30.09.2014
comment
Из этого ответа я сделал github.com/miguelbalparda/MB_AdminMoney с некоторыми дополнительными параметрами, чтобы сделать его более удобным для конечный пользователь. - person mbalparda; 28.11.2014

Чтобы скрыть во внешнем интерфейсе, вы должны установить значение false для защищенного $_canUseCheckout = false; к вашему способу оплаты.

Для отображения в административной части необходимо установить значение true для защищенного $_canUseInternal = true; к вашему способу оплаты.

person PRABU K    schedule 14.05.2014

Очень простой способ, но, возможно, не самый чистый способ сделать это:

  1. Включите Наложенный платеж для магазина.
  2. Скройте его из внешнего интерфейса с помощью CSS.

Использование CSS для достижения этой цели скрыло бы эту возможность от широкой публики, но не помешало бы веб-разработчику, разбирающемуся в CSS, найти его и разместить заказ с наложенным платежом, хотя я не могу придумать никакой причины, по которой кто-то намеренно сделал бы это. так как они не добьются многого, разместив заказ.

ИЗМЕНИТЬ:

Чтобы скрыть наложенный платеж, добавьте это в свой CSS:

input#p_method_cashondelivery { display: none; }
label[for=p_method_cashondelivery] { display: none; }
person ronnz    schedule 24.12.2012