Chapter 1: Introducing Magento
Magento is a new professional open-source eCommerce solution offering unprecedented flexibility and control. With Magento, never feel trapped in your eCommerce solution again.
Since it is open-source, Magento’s code is available free for download. Just go to www.magentocommerce.com/download to download your copy today.
In this guide we will introduce key concepts and walk you through setting up your Magento store, from installing Magento, to entering products.
Magento is made up of a few different elements which define the functionality, design and business logic of the site. In order to follow along with the User Guide it is crucial that you have a good grasp of the terminologies used to describe these elements of the Magento system. The terminologies introduced in this chapter are most likely new territory for you, so take your time and read through them thoroughly. But most importantly, don’t be discouraged if you can’t fully grasp the concept of all these new terminologies - This chapter merely serves to introduce them, and further chapters will dig deeper into, and expand upon, these simple definitions.
One of the most powerful features of Magento is the ability to manage multiple websites and stores from one back-end. This allows store owners to manage stores on different URLs, display the same products in different languages on the same URL, along with a variety of other setups. If you will only be selling your products from one URL in one language you will not need to use this functionality, but the ability to easily expand into additional languages makes Magento scalable as your business grows out of your home market.
A website is made up of one or more stores which share the same customer information, order information and shopping cart. This is a very broad term that can be adopted to define the unique needs of individual merchants.
Stores can be setup in a variety of ways, but remember that if they are part of the same website they will share certain information.
Store Views are mainly used for different languages, so if you wanted to have a store displayed in English and Spanish, for example, you could create the store once and create two different store views for that store.
A few scenarios to define the different uses of website and store are as follows:
The most common setup will be a one website and one store setup, but understanding the functionality of multiple websites and stores will help you understand why certain values are defined as global defaults and why others are only assigned on the website or store level.
Magento is built on top of the Zend Framework, ensuring that the code base will be secure and scalable. The reasons for choosing the Zend Framework are many, but at a basic level the Zend Framework provides an object-oriented library of code with a committed company standing behind it.
Using this framework, Magento was built with 3 central tenets in mind.
- Flexibility: We believe each solution should be as unique as the business behind it. Magento’s code allows for seamless customizations.
- Upgradeable: By separating the core code from community and local customizations, Magento can be easily customized without losing the ability to upgrade.
- Speed and Security: The coding standards used by the developers follow best practices to maximize the efficiency of the software and provide a secure online storefront.
In this chapter we will introduce key concepts and terminologies of Magento. Even if you won’t be developing or designing for Magento these concepts and terminologies will help as you set up your own online store.
The core of Magento contains all the functionality included in the downloaded version. The core code is a collection of modules developed or certified by the Magento core development team. Editing core files is not recommended and will disable the ability to upgrade Magento in the future.
Local extensions are customizations of Magento which reside only on a user’s local copy. These extensions will be placed in a local folder, so that they do not interfere with upgrades to the core code, and in order to differentiate them from community contributions. There are different types of extensions, which we will get into in a moment, but they will all reside in the same directory.
Local extensions function just as core code does, only the directory is different.
Community contributions are just that, and when downloaded will reside in the community folder. Just like local extensions, by keeping them separate from the core code Magento store owners are able to enjoy the additional functionality without compromising the ability to upgrade to future Magento versions.
In short, extensions are exactly what they sound like. One or more files packaged together to extend the functionality of Magento. Strict terms and conditions prohibit extensions from modifying the core code, ensuring that any extended functionality doesn’t prohibit you from upgrading when a new version of Magento is released.
Extensions can be installed from the admin panel, or downloaded from Magento Connect. These processes will both be covered later in the book, but let’s look at the three types of extensions.
There are three types of extensions, and they will reside in one of the two locations described above. There are 3 main types of Extensions.
A module is an extension which extends the features and functionality of Magento. You are probably familiar with the idea of modules from other software, but if not, some concrete examples of modules would be additional payment gateway integrations, or a featured items promotional tool.
An interface is a collection of themes that determines the visual output and frontend functionality of your store. An interface can be assigned on either the website-level, store-level or website and store level through the admin panel. We will cover assigning interfaces later in the book, for now let’s take a look at the components of a theme.
A theme is any combination of layout, template and/or skin file(s) that create the visual experience of your store. Magento is built with the capacity to load multiple themes at once, and therefore distinguishes themes into two types:
- Default Themes - Every interface comes with a theme called ‘default’ which is the main theme of an interface. When you assign an interface to your store, the application automatically looks for this theme ‘default’ and loads it to the front-end. In order to customize your store design, you can either modify this theme, or create a non-default theme in addition and load it alongside the default. The default theme must contain all the required layouts, templates and skins to run a store error-free and hence is the lowest theme in the theme hierarchy.
- Non-Default Themes - A non-default theme can contain as many or as few theme files as you see fit for your needs. This type of theme is intended for creating temporary seasonal design changes to a store without having to create a whole new default theme—By creating a few images and updating some of the CSS, you can easily turn your store from a real bore to a stand-out seasonal Christmas store.
Lets take a look at the components of a theme:
- Layouts - Layouts are basic XML files that define the block structure for different pages, as well as controlling the META information and page encoding. Layout files are separated on a per-module basis, with every module bringing with it its own layout file.
- Templates - Templates are PHTML files that contain (X)HTML markups and any necessary PHP tags to create the logic for the visual presentation of information and features.
Blocks are a way by which Magento distinguishes the array of functionality in the system and creates a modular way to manage this array from both a visual and functional stand point. There are two types of blocks and they work together to create the visual output.
- Structural Blocks - These are blocks created for the sole purpose of assigning visual structure to a store page. Examples would be the header, left column, main column and footer.
- Content Blocks - These are blocks that produce the actual content inside each structural block. They are representations of each feature functionality in a page and employ template files to generate the (X)HTML to be inserted into its parent structural block. Examples are the category list, mini cart, product tags and product listing.
Unless you will be developing or designing for Magento you won’t need to know any more than these terms. For those of you who will be developing or designing custom modules and interfaces, make sure to read Chapter 12: Designing and Developing for Magento. Of course we suggest you read the book through first, as the next few chapters are full of helpful information.