跨境电商
经验交流分享

Magento自定义系统配置

系统配置是Magento购物车程序最为强大的功能之一。作为开发者,该功能允许你快速,方便的建立表单元素,而对于购物车管理员来说,可以通过它配置Magento系统以及扩展。第一次从头开始创建系统配置可能会有点困难,不过一旦掌握了Magento强大的系统配置功能,你会非常钦佩Magento工程师们建立的如此优雅的架构。

首先,我们建立一个新的模块Helloworld,创建配置文件,确保模块正确建立。我的命名空间全部为Rui,各位可以根据自己的情况更改命名空间和模块名。

添加系统配置文件

完成普通模块建立之后,首先添加一个系统配置文件到该模块。Magento系统配置文件独立于config.xml,该文件同样存在于模块的/etc文件中。

app/code/local/Rui/Helloworld/etc/system.xml

和全局配置文件类似,系统配置信息也是单独存储的。如果你想在前台页面中查看系统配置文件,可以通过在控制器方法中添加如下代码。

[php]

[/php]

loadModulesConfiguration()方法会查看每个模块etc文件夹下参数文件,这里是system.xml。Magento包含一系列的配置文件(api.xml,wsdl.xml,wsdl2.xml,convert.xml,compilation.xml,install.xml),作为开发者,你可以利用这些配置文件影响系统功能。

添加一个标签(Tab)

标签是System->Configuration频道中的左侧功能链接。默认的标签有General,Catalog,Customers,Sales,Services以及Advanced。

首先创建一个’Hello Config‘标签,在系统配置文件中添加如下代码,

[xml]

[/xml]

一起来看下这段代码。<helloconfig />节点没有约定,可以随意起名,但是在所有的标签中必须是唯一的,该节点作为标签的唯一标示符,后面会用到此节点。

module=”helloworld”属性指定该标签所属模块,<label>节点用于定义该标签的名字,然后<sort_order>很明显用于定义标签在左侧链接中显示的上下位置。

在后台中进入System->Configuration,可能会出现如下情况,

  • 页面正常读取,但是并未出现Hello Config标签
  • 页面提示出现错误:Warning: include(Mage\Helloworld\Helper\Data.php)

Magento Helper类

和多数PHP MVC系统一样,Magento也拥有助手类。助手类一般用于比较繁琐的任务,并且该任务不适合放进模型,视图或者控制器中。助手类是抽象组名类之一,系统用户可以重写这些类,而开发者可以添加一个节点到config.xml配置文件中,为助手指定类名。

Magento系统假设每个模块都有一个默认的助手类,上节中出现的异常,就是因为该Helloworld模块没有包括默认的助手类,而系统却尝试实例化该助手类。一起来添加该助手。

首先,在config.xml文件中添加一个节点,

[xml]

[/xml]

如果你研究过Magento的config.xml文件,这些应该很容易理解。<helloworld />节点根据你的模块命名,<class />节点包含该模块中所有助手类的基础命名,同样是遵循Magento的命名规范,

Packagename_Modulename_Helper

助手类通过Mage的静态方法helper()调用,Mage::helper(‘helloworld/foo’)会实例化app/code/local/Rui/Helloworld/Helper/Foo.php文件中的Rui_Helloworld_Helper_Foo类。

Magento系统为每个模块都制定了一个默认助手类。如果在Mage::helper()方法的参数中只包含模块名,例如

Mage::helper(‘helloworld’)

它会实例化app/code/local/Rui/Helloworld/Helper/Data.php文件中的Rui_Hellod_Helper_Data类。

也就是说下面两个调用是相同的

Mage::helper(‘helloworld’);

Mage::helper(‘helloworld/data’);

最后,为了解决上节中的异常问题,我们要为Helloworld模块添加助手类。添加如下代码到File: app/code/local/Alanstormdorcom/Helloworld/Helper/Data.php文件中。

[php]

[/php]

完成之后,刷新Magento缓存,重新刷新System Admin页面。异常不会再出现了,但是新的标签还是没有显示。

Tips:如果你想了解更多关于助手类的信息,可以看下Mage_Core_Helper_Abstract类。

添加新节点(Section)

为什么还没有显示新的标签就开始添加新节点了呢?继续看下。每个标签都拥有一些节点。例如,默认情况下,在Advanced标签中包含Admin,System,Advanced以及Developer节点。

如果一个新的标签下不包含任何节点,该标签便不会显示。我们试着在系统配置文件中添加一个<section>节点。

[xml]

[/xml]

一起来看下新添加的配置文件。

<helloworld_options />

类似<helloconfig />,该标签没有命名约定,作为新节点的唯一标示。

<label />

该标签用于定义在新节点中显示的文字。

<tab />

<tab />用于定义该节点所属标签(Tab)。我们想要该节点显示在上面建立的helloconfig标签中。该值来源于我们建立Tab时添加的节点<helloconfig />。

<frontend_type />

2011年11月13日20:31:57 明天继续写吧

赞(0)
未经允许不得转载:锐想 » Magento自定义系统配置
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

锐想电商 - 跨境电商经验交流分享

锐想无限