Magento Pro Tip: Speed Up Content Deployment within Magento 2

This post is about speeding up content deployment inside magento 2. You can hire magento developers who can help you out in this subject and bring you the relative output. In this post, we will share some pro tips that will help your development team to achieve the target.

With experience in Magento 1.x the transition to Magento 2 will carry a lot of familiarity. The admin area still has all of the major components. You can also jump into the templating system and almost continue where you left off.

Something new that front end developers will find challenging is how you interact with your static files, specifically css. When you want to make edits you need to deploy your content. For front end developers there will be a steep learning curve if you are not used to using the console. With Magento 2 the Magento console will be a regular part of your workflow. From the start it will seem frustrating. You may not understand why but this is an opportunity to grow as developers and learn the new version of one of the world's largest ecommerce platforms.

Content Deployment - Magento 2​

We start with this command: magento setup:static-content:deploy
This command takes all of your “static” files that can be cached (CSS, Images, LESS files) from the theme folder and places them in the pub/static folder. To use this command the steps are outlined below.

To deploy static view files:

This is a great improvement over what Magento 1.x. This allows for faster file access and has a built in css preprocessor. Once front end developers get over this learning curve they will grow to appreciate its benefits.

Read More : Magento Magical Theme From The Scratch

Once you run the command you will see this deployment in action. Each theme will show its progressional steps as highlighted by periods. Once it’s done you will see it move on to the next theme. However most stores only have one theme and redeployment of unchanged content is pointless. While this is a topic for future Magento 2 core developers to fix we as problem solving developers need a solution now.

The solution is simple. We delete the themes we don’t use. We do this with the following command:

Magento theme:uninstall --backup-code -c|--clear-static-content [your theme path]
What this code snippet does is this:

As you can see the command is very thorough. Now you will have one less unused theme to compile thus speeding up your deployment and your overall deployment. Efficiency is key in development small amounts of time add up quickly when your goal is to get the site launched.

Run the magento setup:static-content:deploy command again and you will see that only your custom theme deploys.

Read More : Things To Consider When Getting Magento Ecommerce Online Store

As Magento 2 evolves I understand this is a topic that will be solved for future efficiency. But for now we have our workaround.

James Warner, author of this post has shared pro tips to speed up content deployment within magento 2. You can share this post with your hire Magento developers team and help them in completing their project with grace. You can even ask questions related to magento development from professionals.

Tutorial : Plugin System in Magento 2

Tutorial : Plugin System in Magento 2

Magneto development services provider will explain plugin system in Magento 2. You will learn the way to use magento 2 plugins from the basics. Read and discover how professionals do it.

You will learn through this article how to use Magento 2 plugins that modify the behavior of all public functions without overloading the PHP class (block, model etc.) the container.

What are plugins?
To avoid having to override a class to modify a simple, Magento 2 plugins provides a mechanism to effectively manage this type of "rewriting" as well as to minimize conflicts between extensions.

Limitations plugins
To date, plugins can only be used for rewriting public methods and are therefore subject to the following limitations:
1) final methods
2) non-public methods (protected or private)
3) static methods
4) Constructor ( _construct)
5) virtual Types

Types plugin
Magento provides three "types" of different plugins:
1) before: Change the arguments provided to a method
2) around: Change the behavior of a method
3) after: To "rework" the output of a method

Declaration of a plugin
The declaration of any plugin must be done in the file di.xml of your module. This file can be placed, depending on its use, either within the directory etcyour module (plugin to use the backend and frontend) or in etc/frontend

(limited use in frontend) or etc/adminhtml(limited use in backend):

<config> <typename="{observer_type}"> <pluginname="{plugin_name}"type="{plugin_type}"sortOrder="{plugin_order}"disabled="{plugin_disabled}"/> </type> </config>

The following can be specified:
1) observer_type: The class name, or virtual interface type you want to observe
2) plugin_name: The name of the plugin (eg. catalog_product_custom_plugin)
3) plugin_type: The name of the class or type used by the virtual module (ex.Vendor\Module\Plugin\ModelNamePlugin)
4) plugin_order: The order in which the plugin will run. Very useful to effectively manage the execution order of several plugins overloading the same method (see "Execution Order" below for details)
5) plugin_disabled: This parameter can be set trueif you want to disable the plugin

Execution order of the plugins

When multiple plugins rewriting the same method exist, the following order of performance will be followed by Magento:
1. The type of plugin beforethat has the highest priority (= the one with the least sortOrder)
2. The type of plugin aroundthat has the highest priority (= the one with the least sortOrder)
3. The other type of plugins beforebased on their priority (from smallest to largest sortOrder)
4. The other type of plugins aroundbased on their priority (from smallest to largest sortOrder)
5. The type of plugin afterthat has the lowest priority (= the one with the largest sortOrder)
6. The other type of plugins afterbased on their priority (largest to smallest sortOrder)

Example plugins
To change the settings passed to a function, it is necessary to create a methodbefore[methodName]in your plugin (which [methodName]corresponds to not the method you want to change, for example SetNamefor a method named setName).

The method created within your plugin parameter must take the class which includes the function you want to change and its various parameters. Example of method overloading setNameclass \Magento\Catalog\Model\Product:

<?php namespaceMy\Module\Plugin; classProductPlugin { publicfunctionbeforeSetName(\Magento\Catalog\Model\Product $subject, $name) { return['('. $name. ')']; } }

In this example, the product name passed in the argument $namewill be automatically enclosed in parentheses.
As you have probably noticed, the type of plugins beforehave returned an array containing all the parameters of the function.

To change the behavior of a function, a method around[methodName]must be created within your plugin (which [methodName]corresponds to not the method you want to change, for exampleSavefor a method named save).

The method created within your plugin parameter must take the class which includes the function you want to change and a second type parameter \Closurecorresponding to the original method.

Example of method overloading saveclass \Magento\Catalog\Model\Product:

<?php namespaceMy\Module\Plugin; classProductPlugin { publicfunctionaroundSave(\Magento\Catalog\Model\Product $subject, \Closure $proceed) { $returnValue= $proceed(); if($returnValue) { $this->doSomething(); } return$returnValue; } }

In this example, we execute line 9 will recover the original method and the return value. If it is defined, a third function, called here doSomething, will be executed.

Finally, we return line 13 returning the original method.

To change the return of a function, it is necessary to create a method after[methodName]in your plugin (which [methodName]corresponds to not the method you want to change, for exampleGetNamefor a method named getName).

The method created within your plugin parameter must take the class which includes the function you want to change and a variable $resultthat will contain the result of the original method.

Example of method overloading getNameclass \Magento\Catalog\Model\Product:

publicfunctionafterGetName(\Magento\Catalog\Model\Product $subject, $result) { return'|'. $result. '|'; }

In this example, the return of the original method, which is here in the name of the product, will be surrounded by "| ".

The definition, limitations and uses of magento 2 plugins shared by magento developers from India for reference purpose only. You can ask for more info on the Magento 2 plugins in your comments.

Read More :
1) Top 7 Extension for Magento 2 Store
2) Hire Magento developers to get your website ready for mobile
3) Magento Pro Tip: Speed Up Content Deployment within Magento 2
4) Tutorial : Magento 2 Promotional Product Markers