UPCOMING: Magento 2 Bootcamp of four days in The Netherlands (April 29th - May 2nd)

May 8, 2013

GitHub gist for creating new Magento Website scope

Yireo Blog Post

While working with Vm2Mage, we frequently test VirtueMart-to-Magento migrations with different VirtueMart setups, but we tend to use the same Magento instance over-and-over again. But for every VirtueMart-setup a new Magento Website-scope is created. Here's the script we use for that.

PHP source-code

All source-code can be found in this Gist on GitHub. The source-code in this blog-post is limited to almost no code - and the code that is included is dummy code. However, the blog explains the why behind the actual Gist-code. I recommend you first check out the Gist itself, and then go back to this post for further details.

Auto-creating a Website, Store and Store View

The first thing to consider when creating a new Magento Website, is that a Website also needs a Store (technically referred to as a store-group) and a Store View (technically referred to as a store). Most commonly, if you create a new Website, you also need to create the other two. So our script does this.

$website = Mage::getModel('core/website')->setData($data)->save();
$group = Mage::getModel('core/store_group')->setData($data)->save();
$store = Mage::getModel('core/store_store')->setData($data)->save();

Unfortunately, the Store needs a reference to the Website (incremental ID) and the Store View needs a reference to the Store. So no matter in which order you create the three objects, when you reach the last object, you need to go back to the first two objects to update them. Our script therefor takes up the increment ID of each newly created object and reuses that ID for the update later on:

$groupId = $group->getGroupId();
$website->setData('default_group_id', $groupId)->save();

A new Root Catalog

Additionally a new Root Catalog (so a category marked without parent) needs to be linked to the Store, so this is included in the Gist as well. For all naming the script just takes a basename (foobar) which is capatiized and/or suffixed with another word (Foobar Catalog). Once the Root Catalog is created, it can easily be linked to the Store.

Hope this code is useful to you as well.

Posted on May 8, 2013

About the author

Author Jisse Reitsma

Jisse Reitsma is the founder of Yireo, extension developer, developer trainer and 3x Magento Master. His passion is for technology and open source. And he loves talking as well.

Sponsor Yireo

Looking for a training in-house?

Let's get to it!

We don't write too commercial stuff, we focus on the technology (which we love) and we regularly come up with innovative solutions. Via our newsletter, you can keep yourself up to date on all of this coolness. Subscribing only takes seconds.

Do not miss out on what we say

This will be the most interesting spam you have ever read

We don't write too commercial stuff, we focus on the technology (which we love) and we regularly come up with innovative solutions. Via our newsletter, you can keep yourself up to date on all of this coolness. Subscribing only takes seconds.