【问题标题】:Magento extension just for single store in multishopMagento 扩展仅适用于 multishop 中的单个商店
【发布时间】:2011-10-19 15:01:55
【问题描述】:

我的客户经营一家拥有不同产品、不同布局和不同领域的综合商店。我为其中一家商店的结帐流程开发了一个扩展程序,但现在没有办法告诉 Magento 只与这家特定商店合作。

我希望 /app/etc/modules/sampleextension.xml 中会提到这一点,但在互联网上没有找到任何相关信息。

有没有办法使扩展商店特定?

谢谢 托马斯

【问题讨论】:

    标签: magento-1.4 magento


    【解决方案1】:

    有两种解决方案。 1)以编程方式: 您可以制作任何配置字段,存储特定的。从那里你可以检查,如果你需要激活你的模块,在代码中。 使用文件 /app/code//yourcompany/yourmodule/etc/system.xml,感谢标签 show_in_default、show_in_store、show_in_website,您可以设置配置字段存储视图、网站或默认设置。

    因此您必须创建一个“活动”配置字段。表示支付方式配置字段“active”的路径为payment/yourpaymentname/active。

    从这条路径中,如果您使用 Mage_Payment_Model_Method_Abstract 类扩展了支付类,Magento 将检查支付模块是否可用。

    检查文件app/code/core/Mage/Payment/Model/Method/Abstract.php中的类和方法Mage_Payment_Model_Method_Abstract::isAvailable

    当您在后端配置付款方式时,您必须将商店视图或网站的“活动”字段设置为“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)第二种解决方案可以通过后端完成,最简单的方法可能是在配置页面的高级选项卡中,在配置页面的左下方。 您将拥有商店中所有启用或禁用模块的列表。您可以在页面左上角的商店切换器中选择要显示或不显示的商店视图,然后通过每个模块名称前面的下拉菜单选择要启用或不启用的模块。

    希望对你有帮助 问候

    【讨论】:

    • 不正确。仅系统 > 配置 > 高级禁用模块输出下的面板。扩展程序及其配置仍然有效。
    • @Ben:是的,它不会在前端显示付款方式,也不允许客户在结帐过程中使用它。最后,需求完成。客户无权访问付款方式输出。如果发帖人不是开发者,这是最简单的方法。
    • @Diglin 感谢您的解决方案。我可能不得不再次查看第一个解决方案。第二种方法似乎更容易,我会尝试一下。
    • @Ben:是的。没错,高级选项卡通常会禁用模块的输出显示。通过这样做,它也不应该显示付款方式,但我承认我没有尝试过付款方式,因为默认付款方式有一个活动字段可以启用或没有每个商店视图的付款方式。
    【解决方案2】:

    您可以/应该在您的 system.xml 中有一个“活动”字段,这将是一个下拉菜单“是/否”,然后您可以(取消)为每个网站/商店/商店视图激活它。
    当然,在代码的某些战略要点中,您将检查它是否在此视图中处于活动状态:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多