Magento 为自定义配置值提供(相对)简单的支持。我发现完成此任务的最佳方法是创建一个包含所有自定义配置值的单个 magento 模块。
像任何 Magento 一样,有很多步骤,任何一个错误都可能让你(或我!)绊倒。
创建一个空的 Magento 模块
首先,您需要设置一个 magento 模块来保存所有自定义配置值。创建一个magento模块涉及
- 在 app/etc/modules 中创建一个 xml 文件
- 在 app/code/local/Companyname 中创建文件夹结构
Companyname 是用作命名空间的唯一字符串,大多数 magento 教程建议您在此处使用您的公司名称。出于本教程的目的,我将使用“Stackoverflow”。无论您在哪里看到字符串 Stackoverflow,都将其替换为您自己的唯一字符串。
因此,对于第 1 步,在 app/etc/modules 中创建一个名为“Stackoverflow_Customconfig.xml”的文件,并将以下内容放入其中
<?xml version="1.0"?>
<config>
<modules>
<Stackoverflow_Customconfig>
<active>true</active>
<codePool>local</codePool>
</Stackoverflow_Customconfig>
</modules>
</config>
随机 Magento 提示:magento 系统的某些部分认为空格很重要,因此最好不要在属性值中包含空格(<active>true</active> vs. <active> true </active>
接下来,创建以下文件夹
mkdir app/code/local/Stackoverflow/Customconfig
mkdir app/code/local/Stackoverflow/Customconfig/etc
并在
app/code/local/Stackoverflow/Customconfig/etc/config.xml
有以下内容
<?xml version="1.0"?>
<config>
<modules>
<Stackoverflow_Customconfig>
<version>0.1.0</version>
</Stackoverflow_Customconfig>
</modules>
</config>
恭喜,您刚刚设置了一个新的 Magento 模块。如果您清除 magento 缓存并转到
System -> Configuration -> Advanced -> Disable Modules Output
您应该会看到列出的模块。
将 System.xml 文件添加到您的模块
接下来,我们将添加一个 system.xml 文件。此文件用于向 magento 添加自定义配置值,您可以在 magento 请求周期中获取您想要的任何位置。在以下位置添加文件
app/code/local/Stackoverflow/Customconfig/etc/system.xml
其中包含以下内容
<config>
<sections>
<design>
<groups>
<my_or_their_group translate="label">
<label>A grouping of config values. Make your own, or us an existing group.</label>
<frontend_type>text</frontend_type>
<sort_order>50</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>0</show_in_website>
<show_in_store>0</show_in_store>
<fields>
<my_config translate="label">
<label>This will be my config's label</label>
<frontend_type>text</frontend_type>
<sort_order>50</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>0</show_in_website>
<show_in_store>0</show_in_store>
</my_config>
</fields>
</my_or_their_group>
</groups>
</design>
</sections>
</config>
<design>是您的配置将在其中显示的部分的名称。“General, Web, Design, Currency Setup, etc.” 总的来说,这将是标题的小写版本,即“General”变成“general”,“Design”变成“design”。如果您不确定这个外部标签应该是什么,请搜索核心 magento 模块。即,对“货币设置”的 grepping 揭示了在
app/code/core/Mage/Directory/etc/system.xml
<currency translate="label" module="directory">
<label>Currency Setup</label>
所以你会使用标签 <currency /<,而不是更直观的 <currency_setup />
<my_or_their_group translate="label"> 是您的配置变量将显示在其中的组的名称。组是包含配置字段的 Ajax 下拉列表。例如,常规部分有一个“国家选项”组和一个本地选项“组。如果您不确定如何在现有组中放置值,请再次检查现有核心模块。
您还会注意到此处的translate 属性以及相应的标签标记。这允许您在 HTML 界面中使用您想要的任何字符串作为组标题,但在内部将名称保留为有效的 XML 标记名称。我们的标签名为
<my_or_their_group />
但在界面中,群组会有标题
一组配置值。使您自己的,或我们现有的组。
最后,<my_config translate="label"> 是 yoru conifg 值的名称。再次注意translate 属性。适用与上述相同的规则。
需要其他 xml 结构,并且(主要)用于控制将用于您的配置的 HTML 输入类型。如果您需要特定的界面元素,请在核心模块中找到一个示例并复制 XML 结构。
这将允许您在 Magento GUI 界面中设置和查找配置值。您可以使用全局 Mage 对象的静态 getStoreConfig 方法并指定配置值的 URI 来检索您的值。URI 是使用配置的部分/组/名称创建的。
Mage::getStoreConfig('design/my_or_their_group/my_config');