Расширение Magento только для одного магазина в мультишопе - PullRequest
3 голосов
/ 19 октября 2011

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

Я ожидаю, что это будет упомянуто в /app/etc/modules/sampleextension.xml, но не нашел никакой информации об этом в интернете.

Есть ли способ сделать расширение для магазина конкретным?

Спасибо Томас

Ответы [ 2 ]

4 голосов
/ 19 октября 2011

Есть два решения.1) Программно: Вы можете сделать любое поле конфигурации, хранить отдельно.И из этого вы можете проверить, в коде, если вам нужно активировать свой модуль или нет.С помощью файла /app/code//yourcompany/yourmodule/etc/system.xml, благодаря тегам show_in_default, show_in_store, show_in_website, вы можете установить представление хранилища полей конфигурации, веб-сайт или по умолчанию.

ИтакВы должны создать поле конфигурации «активный».Это означает, что путь к полю конфигурации метода оплаты «активный» будет следующим: платеж / ваше имя платежа / активный.

И по этому пути, и если вы расширили свой класс платежей с помощью класса Mage_Payment_Model_Method_Abstract, Magento проверит, еслидоступен модуль оплаты.

Проверьте класс и метод Mage_Payment_Model_Method_Abstract :: isAvailable в файле app / code / core / Mage / Payment / Model / Method / Abstract.php

Когда вы настроитеВаш метод оплаты в бэкэнде, вы должны будете установить «1» поле «активный» для представления магазина или веб-сайта или по умолчанию, следуя вашему желанию.

Вот пример для файла конфигурации system.xmlдля вашего платежного модуля

<config>
   <sections>
    <payment translate="label" module="payment">
        <label>Payment Methods</label>
        <tab>sales</tab>
        <frontend_type>text</frontend_type>
        <sort_order>400</sort_order>
        <show_in_default>1</show_in_default>
        <show_in_website>1</show_in_website>
        <show_in_store>1</show_in_store>
        <groups>
            <yourpaymentname translate="label">
                <label>Your new Payment method</label>
                <frontend_type>text</frontend_type>
                <sort_order>1</sort_order>
                <show_in_default>1</show_in_default>
                <show_in_website>1</show_in_website>
                <show_in_store>1</show_in_store>
                <fields>
                    <active translate="label">
                        <label>Enabled</label>
                        <frontend_type>select</frontend_type>
                        <source_model>adminhtml/system_config_source_yesno</source_model>
                        <sort_order>1</sort_order>
                        <show_in_default>1</show_in_default>
                        <show_in_website>1</show_in_website>
                        <show_in_store>0</show_in_store>
                    </active>
            <yourpaymentname>
        </groups>
        ....
    </sales>
<sections>

2) Второе решение может быть реализовано через бэкэнд, возможно, самым простым способом, во вкладке Advanced страницы конфигурации, в левом нижнем углу страницы конфигурации.У вас будет список всех включенных или отключенных модулей в вашем магазине.Вы выбираете, какое представление магазина хотите отображать или нет, в переключателе магазинов в верхнем левом углу страницы, а затем выбираете, какой модуль включить или нет, благодаря раскрывающемуся меню перед каждым именем модуля.

Надеюсь, что это помогает С уважением

0 голосов
/ 19 октября 2011

вы можете / должны иметь «активное» поле в вашем system.xml, которое будет выпадающим «да / нет», а затем вы можете (де) активировать его для каждого просмотра веб-сайта / магазина / магазина.
Конечно, в некоторых стратегических точках вашего кода вы проверите, активен ли он для этого представления:)

...