我想在我正在开发的Magento扩展中有一个调试标志。我想在开发时将它设置为true,当我向用户发布扩展时将其删除(默认为false)。实现这个的最佳方法是什么?
首先想到的是将此标志默认为false并在我的app / etc / local.xml文件中将其设置为true。但是,我如何将新的XML节点引入local.xml并让Magento基础架构解析,如果对我来说并使其可用于我的PHP代码?还有其他更简单的方法吗?
答案 0 :(得分:3)
通过管理面板对其进行配置,默认情况下将其设置为false。如果它在代码中,用户可以切换它,所以你也可以把它放在设置面板的开发者部分。
答案 1 :(得分:3)
Magento ECG在Magento论坛上给了我一个很好的解决方案:http://www.magentocommerce.com/boards/viewthread/226496/
引用它们:
设置和获取的解决方案之一 模块中的debug标志是添加它 到模块的config.xml等 。目录
您可以将其添加到部分。 所以你的部分将如下所示:
<default> <your_module> <debug>1</debug> </your_module> </default>
从代码中你可以得到这个:
$debugFlag = Mage::getStoreConfig('your_module/debug');
我要做的是将相同的XML块放在我的local.xml文件中。这样它只能在我的开发机器上启动,并且不会使用我的Magento扩展(与扩展自己的config.xml一样)发布
答案 2 :(得分:1)
我会使用Magento的admin/system/config
。
在您的模块中添加适当的etc/system.xml
,例如:
<config>
<!-- : -->
<tabs>
<!-- : -->
<mycompany>
<label>My Company Tab</label>
<sort_order>99</sort_order>
</mycompany>
<!-- : -->
</tabs>
<!-- : -->
<sections>
<!-- : -->
<mymodule>
<label>My Module</label>
<tab>mycompany</tab>
<frontend_type>text</frontend_type>
<sort_order>99</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<groups>
<mygroup>
<label>My Group</label>
<frontend_type>text</frontend_type>
<sort_order>99</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<debug>
<label>Debug</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>99</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</debug>
</fields>
</mygroup>
</groups>
</mymodule>
<!-- : -->
</sections>
</config>
如果以前不存在mymodule
部分,您还需要最初为模块定义访问控制(必须放入模块的etc/config.xml
):
</config>
<!-- : -->
<adminhtml>
<!-- : -->
<acl>
<resources>
<admin>
<children>
<system>
<children>
<config>
<children>
<mymodule >
<title>My Module</title>
</mymodule>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
<!-- : -->
</adminhtml>
<!-- : -->
</config>
现在,管理员可以通过选择
来改变定义的调试标志通过Magento后端 System -> Configuration
- My Module
- My Group
- Debug
- Yes|No
要以编程方式获取调试标志的当前值,您可以使用:
$sFlag = Mage::getStoreConfig('mymodule/mygroup/debug'); // null | '0' | '1'
$bFlag = Mage::getStoreConfigFlag('mymodule/mygroup/debug'); // true | false