我想在我正在開發的Magento擴展中有一個調試標誌。我想在開發時以及當我向用戶發佈擴展時刪除它(默認爲false),將其設置爲true。什麼是實施這個最好的方法?Magento:我如何在我的Magento擴展中有一個「調試標誌」?
首先想到的是將此標誌默認爲false,並在我的應用程序/ etc/local.xml文件中將其設置爲true。但是,如何將一個新的XML節點引入local.xml並讓Magento基礎結構解析(如果適用於我並使其可用於我的PHP代碼)?還有其他更簡單的方法嗎?
我想在我正在開發的Magento擴展中有一個調試標誌。我想在開發時以及當我向用戶發佈擴展時刪除它(默認爲false),將其設置爲true。什麼是實施這個最好的方法?Magento:我如何在我的Magento擴展中有一個「調試標誌」?
首先想到的是將此標誌默認爲false,並在我的應用程序/ etc/local.xml文件中將其設置爲true。但是,如何將一個新的XML節點引入local.xml並讓Magento基礎結構解析(如果適用於我並使其可用於我的PHP代碼)?還有其他更簡單的方法嗎?
Magento的心給了我在Magento的論壇一個很好的解決方案:http://www.magentocommerce.com/boards/viewthread/226496/
引述他們:
一種解決方案來設置和你的模塊中得到 調試標誌的是 其添加到在您的模塊的等 目錄中的config.xml。
您可以將其添加到部分。 所以你的部分就會像:
<default> <your_module> <debug>1</debug> </your_module> </default>
而且從代碼,你可以得到這樣的:
$debugFlag = Mage::getStoreConfig('your_module/debug');
而我現在要做的就是把相同的XML塊我的local.xml文件。這樣,它只能在我的開發機器上啓動,並且不會與我的Magento擴展一起發佈(就像擴展自己的config.xml一樣)
通過管理面板進行配置,默認設置爲false。如果它在代碼中,用戶可以隨時切換它,所以你可以把它放在設置面板的開發者部分。
我會使用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的後端定義的調試標誌3210System -> 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
無意冒犯,但請修改你的問題讓你想更加明確什麼完全實現。看完你的問題後,它看起來像調試標誌應該分佈無論如何。在你自己的回答中,你不希望將調試標誌分配給所有人,這與矛盾的問題是矛盾的。讓人們浪費時間^^ – 2011-04-21 10:57:35
@JürgenThelen - 沒有拍過。很抱歉對於這個誤會。我已經按照你的要求重新提出了這個問題,儘管有點太晚了。 – urig 2011-05-02 13:12:27