Наложен платеж активиран само за администратор (не е активиран интерфейс) - 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> пространство от имена на събития, така че да не се налага да проверявате дали събитието се задейства в frontend или 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