我的客户端运行一个具有非常不同的产品,不同的布局和不同的域的多主机。我为其中一家商店的结账流程开发了一个扩展程序,现在看不到告诉Magento只能使用这个特定商店的方法。
我希望在/app/etc/modules/sampleextension.xml中提及这一点,但在互联网上没有找到任何相关信息。
有没有办法让扩展店特定?
由于 托马斯
答案 0 :(得分:4)
有两种解决方案。 1)以编程方式: 您可以创建任何配置字段,特定于存储。您可以在代码中检查是否需要激活模块。 使用文件/app/code//yourcompany/yourmodule/etc/system.xml,由于标签为show_in_default,show_in_store,show_in_website,您可以设置配置字段存储视图,网站或默认设置。
因此,您必须创建一个“活动”配置字段。这意味着付款方式配置字段“有效”的路径将是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)第二个解决方案可以通过后端完成,最简单的方法可能是在配置页面的Advanced选项卡中,在配置页面的左下角。 您将拥有商店中所有已启用或已禁用模块的列表。您可以在页面左上角的商店切换台中选择要显示或不显示的商店视图,然后根据每个模块名称前面的下拉菜单选择要启用的模块。
希望它有所帮助 此致
答案 1 :(得分:0)
你可以/应该在你的system.xml中有一个“活动”字段,它是一个下拉列表“是/否”,然后你可以(des)为每个网站/商店/商店视图激活它。
当然,在代码的某些战略要点中,您将检查它是否对此视图有效:)