Home » Magento tutorial for developer » Magento tutorial for developer – Part 12 – Magento Default System Configuration Values

Magento tutorial for developer – Part 12 – Magento Default System Configuration Values

Today, we will continue with Magento tutorial for developer – Part 12 – Magento Default System Configuration Values.

This is more of an addendum to my previous articles on the System Configuration system than an entirely new article. Go back and read up if anything’s over your head.

When you create a new System Configuration path, Magento doesn’t store a default value. This is true even for the default stock system configuration. You can confirm this by looking at the core_config_data table.

This table will only store values that have been explicitly set via the Admin Console or other programatic means.

If you request the value of a System Configuration path that doesn’t have a value explicitly set, Magento will check the global config tree for a default value. Although not required, it’s a good idea to set a default value for your custom configuration variables. It’s simple enough to do, and will ensure nothing unexpected happens when a blank value is retrieved for your config variables.

Setting up Default Values

As previously mentioned, default values are stored in the global config tree. This is slightly counter-intuitive, as one might expect the values to be stored in the same system.xml that the paths themselves are configured in. As with many things Magento, the old “Ours is not to question why, ours is but to do or die” serves as your best bet for coping with this. If that’s not good enough, try thinking of the global config as a place to store commonly used values, and system.xml as the place you configure a UI for changing those values.

Hand holding out of the way, let’s get to it.

In your module’s config.xml, add a top level section named <default/>.

This is the top-level node where you’ll be storing your default values. Next, take your configuration path, and convert it into an XML tree node. For example, if you were setting up a default value for the configuration path

your config would look something like

With a configuration setup like the one above, requests for

would, with no value configured, return the text “Default welcome msg!”.

This example is based on an existing configuration setting in a stock Magento install. Remember, most of Magento functionality is built using the same Module system you use to customize the system. Let’s take a look at the actual configuration of the design/header/welcome value.

This is the full default configuration for the

configuration hierarchy. One thing different from our previous examples is the optional translation attributes.

The translate and module attributes tell the system which nodes need to be translated, and which module’s Data Helper should be used to do the translating. In the above example that means the welcome node would be translated with

Remember, if you call the helper factory without a second URI portion, Magento will default to the data helper.

If you wanted multiple sub-nodes to be translated, just separate the names with commas

Wrapup

Short and sweet this week. While not necessary, it’s a good idea to set your System Configuration paths with default values. By setting a default early, you ensure that there will always be a logical value returned for the configuration path and not have to worry about jury rigging one in later, when a user may have inadvertently saved a value with an empty string.

About Alan Storm

avatar
Alan Storm is a technology strategist, software developer and writer living and working in Portland, OR. He publishes articles on his website http://alanstorm.com and is the creator of the Magento development extension Commerce Bug.

2 comments

  1. avatar

    Can you try to do the layout on this page as it is really hard to read. Thank you

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Scroll To Top