Magento was developed by Varien, a company that developed online stores using the osCommerce CMS, and was launched in March 2008. Since June 2011, when 100% of Varien was bought by eBay, it has belonged to this company.
Magento is developed in PHP on MySQL, using Zend Framework. In addition, one of its main features is the use of EAV (Entity-Attribute-Value) as a way of storing data.
My personal view about EAV in Magento as a developer is that it provides great flexibility when it comes to extending functionalities, as it enables the processing of any new model in a systematized way. However, this choice has the drawback of considerably increasing the number of database accesses. These problems can currently be mitigated by using caches (both external and database caches) and flat tables.
One of the main features of Magento is the large amount of functionalities which it offers with no need for extensions, although such a wide range of options can sometimes overwhelm non-expert users, and sometimes even simple, everyday functions have complex mechanics. In any case, once you learn its specificities, this system can be efficiently managed.
Before examining the specificities of Magento as an eCommerce CMS in more depth, it should be pointed out that Magento is actually a multi-store CMS. This means that we can have several stores managed by the same system, or even different views of the same store.
- Product catalog management
- Product catalog management is divided into three parts: product management, attribute management, and category management. Then there are three types of products:
- Simple: a product that does not depend on variables.
- Configurable: a product that has one or more attributes (size, color, capacity, etc.)
- Grouped: a pack of products that are also found in the store.
- Bundle: a product that can be configures from other products that are not sold separately (which make no sense unless they are part of this product).
- Downloadable: a non-physical product that involves the downloading of a file.
- Virtual: a non-physical product (e.g. an extended warranty).
In addition, Magento makes it possible to configure a wide range of product attributes. It is necessary to distinguish between attributes that can be separately defined and those which come by default with products, such as their name, price, image, etc.
The definable attributes of products are created separately, and several attributes can be grouped, creating a set of attributes. In this way, you can have, for instance, a set of clothes attributes that enables you to choose between different sizes and colors.
As for categories, you can create more than one category tree. A product can belong to several categories, which need not be leaf categories.
Magento stores information about users who register in the store. In addition to personal data, invoice data, and delivery data, there is the email address and whether the customer has accepted to receive commercial information. You can schedule and send newsletter from the platform. Of course, synchronization (usually via API) with external mailing platforms such as MailChip is also possible by means of extensions.
As we already saw, Magento is a multi-store platform. This means that you can manage several stores jointly within the same system, and can perform general procedures for all stores or individually for some of them.
Magento offers options to configure different languages, currencies, and taxes, although the way to do this is to create different stores or store views. When it comes to changing a configuration value in Magento, when it makes sense, we are given the option of making that change generally or else for one store or store view. For example, we can change the name of an item, but only for the view of that store language.
Magento has a wide-ranging, active extension marketplace. These extensions make use of the high degree of modularity of this CMS to overwrite already existing functionalities or introduce new ones. In addition, Magento has an API that makes it possible to communicate the store with external systems, and which can be extended by means of extensions.
As for its modularity, it should be pointed out that Magento, when installed, comprises a core and a large number of extensions. Extensions are the natural way in which Magento is built, so you can obtain anything from this CMS by using them.
The way of building the look of pages in Magento is also highly modular and configurable. It has two parts: a hierarchical system of layouts that shows the arrangement of the various blocks that constitute the store, and a set of templates generating the HTML for each of those blocks. In the extension marketplace you can find endless themes to obtain as many different looks.