In this article we are going to dive into Magento’s module-based architecture description and MVVM architecture. You will learn the fundamentals of each of the 4 layers of Magento 2 architecture. Understanding layered software pattern is essential for understanding basic Magento product organization. Below you can see the list of questions answered in the article.
How can I use the available configuration scopes to the greatest effect?
If you’re aimed at changing some settings of all your stores, it’s better to apply the setting for the highest level (Default Configuration), as in this case the setting will be applied for all stores. Similarly, if you have 10 stores, and it’s necessary to change any configuration value of 8 stores (for example, logo), it’s better to change the configuration for the whole website (Default Configuration) while applying another configuration value for the rest 2 stores. Using this approach simplifies the process and saves time.
How to set configuration values for the whole website globally? Let’s consider the following example. The task is to change the number of products displayed in the grid on the category page (the parameter is “Products per Page on Grid Allowed Values”).
In Magento 2 we need to go to the section Stores > Configuration > Catalog > Catalog > Storefront and find the necessary parameter “Products per Page on Grid Allowed Values”, which needs to be changed according to the aim. Don’t forget to choose the top level of the website, so the parameter “Store View” should have the value “Default Configuration”.
The same approach can be applied for Magento 1. Go to the section System > Configuration > Catalog > Catalog > Frontend and find the necessary parameter “Products per Page on Grid Allowed Values” which needs to be changed according to the aim. Don’t forget to choose the top level of the website, so the parameter “Current Configuration Scope” should have the value “Default Config”.
Why some options can’t be configured on a store view level?
The keystone idea in Magento is using various stores to differ in languages or frontends from customer’s side (that means frontend). The functional part of the website is the same. That’s why there’s a problem that some functional configurations can’t be changed for the separate store, but for the whole website. Shipping and payment gateway can be considered as examples of such configurations (set for the whole website).
For example, we’d like to change the configuration of Flat Rate shipping:
In Magento 2 we go to the admin panel Stores > Configuration > Sales > Shipping Methods > Flat Rate. For the whole website (Default Configuration) it will look like that:
As for the separate store in Magento 2, it will look like that:
As you can see, for the separate store we can change the fields “Title”, “Method Name” and “Displayed Error Message”, but the rest configurations will be set globally (for all stores).
Besides, some examples of configurations which can be set for a store separately should be provided here. As I’ve mentioned it before, such configurations are likely connected with fronted or languages. For example, for a definite store, we can set a custom order confirmation letter for a new order (read more information on How to customize the look of specific pages in Magento 1.9 and 2.2 ).
In Magento 2 we need to go to the store settings Stores > Configuration > Sales > Sales Emails > Order (don’t forget to choose the necessary Store View). We need to choose the necessary letter template for the field “New Order Confirmation Template”.
In Magento 1 we also need to go to the store settings System > Configuration > Sales > Sales Emails > Order (don’t forget to choose the necessary Store View). We need to choose the necessary letter template for the field “New Order Confirmation Template”.