2

首先,如果我在 Magento 白话方面犯了任何错误,请原谅,这是我在平台上的第一个项目。

我正在开发 Magento 1.7 的扩展,它将每晚从 FTP 站点(在同一台服务器上)导入数据。我没有将 FTP 目录的路径硬编码到我的模块中,而是将以下内容添加到 app/code/local/CompanyName/ModuleName/etc/config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <default>
    <ftp_server_path>/home/ftpuser/</ftp_server_path>
  </default>
  ... other module configuration...
</config>

我可以使用Mage::getStoreConfig( 'ftp_server_path' ).

现在我想做的是ftp_server_path基于每个环境(我的本地机器、登台等)覆盖该值。我的第一个想法是 app/etc/local.xml,但我 a) 不确定这是否是适当的位置,并且 b) 无法找到存储在 app/etc/local.xml 中的特定于环境的扩展配置的好例子。

您可以在此问题上提供的任何指导将不胜感激。先感谢您!

4

2 回答 2

3

为什么不能只使用 system.xml 文件将此 ftp 路径存储在数据库中的后端可编辑字段中?

然后你只需要在每个后端更改它以获得本地/开发/实时版本。

在模块的 etc 目录中创建一个 system.xml 文件并将其放入其中:

<?xml version="1.0"?>
<config>
<sections>
    <ftppath translate="label" module="yourmodule">
        <label>Manage </label>
        <tab>general</tab>
        <sort_order>50</sort_order>
        <show_in_default>1</show_in_default>
        <show_in_website>1</show_in_website>
        <show_in_store>1</show_in_store>
        <groups>
            <general translate="label">
                <label>General</label>
                <frontend_type>text</frontend_type>
                <sort_order>10</sort_order>
                <show_in_default>1</show_in_default>
                <show_in_website>1</show_in_website>
                <show_in_store>1</show_in_store>
                <fields>
                    <path translate="label">
                        <label>Path to FTP Server</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>
                    </path>
                </fields>
            </general>
        </groups>
    </ftppath>
</sections>

您可以通过执行 Mage::getStoreConfig('ftppath/general/path'); 来获取此值

如果您需要此部分仅供特定用户组的管理员查看,请在 adminhtml.xml 文件中创建 acl(仍在模块的 etc 目录中)

<?xml version="1.0" encoding="UTF-8"?>
<config>
<acl>
    <resources>
        <admin>
            <children>
                <system>
                    <children>
                        <config>
                            <children>
                                <ftppath translate="title" module="yourmodule">
                                    <title>Manage FTP</title>
                                    <sort_order>50</sort_order>
                                </ftppath>
                            </children>
                        </config>
                    </children>
                </system>
            </children>
        </admin>
    </resources>
</acl>

PS:我曾经在 app/etc/local.xml 文件中制作过类似的东西,但从 1.7 开始它不再工作了:(

于 2013-02-14T16:50:05.990 回答
1

接受的 SO 答案中的信息虽然是一个很好的起点,但缺少在管理面板中添加自定义配置部分需要做的很多事情。

尽管@SteveGrunwell(此处)在接受的答案中给出的文章有点过时,但它对我使其正常工作很有帮助。它非常详细且切中要害。

过时的一点似乎是从 1.4 及更高版本开始,ACL 部分假设位于模块的 /etc/ 文件夹中的 adminhtml.xml 文件中。

在magento 网站上帮助我的另一个链接

于 2014-09-19T11:09:03.580 回答