{"id":424573,"date":"2024-02-27T13:44:02","date_gmt":"2024-02-27T13:44:02","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=424573"},"modified":"2024-04-13T06:02:47","modified_gmt":"2024-04-13T06:02:47","slug":"understanding-magento-theme-layout-customizations","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/","title":{"rendered":"Understanding Magento Theme : Layout customizations"},"content":{"rendered":"\n<p>Hello Friends !!<\/p>\n\n\n\n<p>In this blog, We will discuss about magento theme layout customizations related points.<\/p>\n\n\n\n<p>So, Firstly we try to understand how we can create a <a href=\"https:\/\/webkul.com\/blog\/custom-theme-in-magento2\/\">custom theme in Magento 2<\/a>. You can refer the our Custom Theme in <a href=\"https:\/\/store.webkul.com\/magento2-blog-extension.html\">Magento 2 blog<\/a> to create a custom theme.<\/p>\n\n\n\n<p>While creating a custom theme, We should always use best practices for&nbsp;theme development&nbsp;to avoid conflicts and issues with our theme after we update or upgrade our Magento instance.<\/p>\n\n\n\n<p>You can refer our <a href=\"https:\/\/webkul.com\/blog\/best-approach-to-creating-a-theme-in-magento-2\/\">Best approach to creating a theme in Magento 2<\/a> blog to avoid conflict issues.<\/p>\n\n\n\n<p>Now back to our topic, for layout customizations in Magento theme, We will cover the below topics:-<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Override the Core Magento layout<\/h2>\n\n\n\n<p>In the below example, we are overriding Magento_Catalog module&#8217;s layout\/catalog_category_view.xml layout to our custom theme to remove breadcumbs from category view page.<\/p>\n\n\n\n<p>To achieve this, We create a same layout file (catalog_category_view.xml) inside the below theme directory:-<\/p>\n\n\n\n<p><strong>app\/design\/frontend\/Webkul\/customtheme\/Magento_Catalog\/layout\/<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&lt;?xml version=&quot;1.0&quot;?&gt;\n&lt;!--\n\/**\n * Webkul Software.\n *\n * @category   Webkul\n * @package    Webkul_CustomTheme\n * @author     Webkul Software Private Limited\n * @copyright  Webkul Software Private Limited (https:\/\/webkul.com)\n * @license    https:\/\/store.webkul.com\/license.html\n *\/\n--&gt;\n&lt;page xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot; xsi:noNamespaceSchemaLocation=&quot;urn:magento:framework:View\/Layout\/etc\/page_configuration.xsd&quot;&gt;\n    &lt;body&gt;\n        &lt;referenceBlock name=&quot;breadcrumbs&quot; remove=&quot;true&quot;\/&gt;\n    &lt;\/body&gt;\n&lt;\/page&gt;<\/pre>\n\n\n\n<p>Here is the result of the mentioned code. Breadcumbs has been removed from the category view page.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"606\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove-1200x606.png\" alt=\"breadcumbs-remove\" class=\"wp-image-424642\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove-1200x606.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove-300x151.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove-250x126.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove-768x388.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove.png 1296w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">2. Override the core Magento Style<\/h2>\n\n\n\n<p>In the below example, we are overriding Magento_Catalog module&#8217;s web\/css\/_module.less style file to our custom theme to change the colour of add to cart button.<\/p>\n\n\n\n<p>To achieve this, We create a same style file (_module.less) inside the below theme directory:-<\/p>\n\n\n\n<p><strong>app\/<strong>design<\/strong>\/frontend\/Webkul\/customtheme\/Magento_Catalog<strong>\/<\/strong>Web\/css\/<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">@import &#039;source\/_extend.less&#039;;\n.actions-primary{\n    background-color: red;\n    border:1px solid red;\n    color:#fff;\n}<\/pre>\n\n\n\n<p>Here is the result of the mentioned code.<\/p>\n\n\n\n<p><strong>Image 1:- <\/strong>Without overriding the css.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"600\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-before-css-override-1200x600.png\" alt=\"Theme-layouts-customizations-before-css-override\" class=\"wp-image-424664\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-before-css-override-1200x600.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-before-css-override-300x150.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-before-css-override-250x125.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-before-css-override-768x384.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-before-css-override.png 1304w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p><strong>Image 2:- <\/strong>With overriding the css. Add to cart button colour has been changed.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"625\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-after-css-override-1200x625.png\" alt=\"Theme-layouts-customizations-after-css-override\" class=\"wp-image-424667\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-after-css-override-1200x625.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-after-css-override-300x156.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-after-css-override-250x130.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-after-css-override-768x400.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-after-css-override.png 1256w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">3. Override Core Magento Template<\/h2>\n\n\n\n<p>In the below example, we are overriding Magento_Catalog module&#8217;s templates\/product\/list.phtml template file to our custom theme to replace add to cart text with purchase now.<\/p>\n\n\n\n<p>To achieve this, We create a same template file (list.phtml) inside the below directory:-<\/p>\n\n\n\n<p><strong>app\/<strong>design<\/strong>\/frontend\/Webkul\/customtheme\/Magento_Catalog\/templates\/product\/<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&lt;?php\n\/**\n * Webkul Software.\n *\n * @category   Webkul\n * @package    Webkul_CustomTheme\n * @author     Webkul Software Private Limited\n * @copyright  Webkul Software Private Limited (https:\/\/webkul.com)\n * @license    https:\/\/store.webkul.com\/license.html\n *\/\nuse Magento\\Framework\\App\\Action\\Action;\n\n\/**\n * Product list template\n *\n * @var $block \\Magento\\Catalog\\Block\\Product\\ListProduct\n * @var \\Magento\\Framework\\Escaper $escaper\n * @var \\Magento\\Framework\\View\\Helper\\SecureHtmlRenderer $secureRenderer\n *\/\n?&gt;\n&lt;?php\n$_productCollection = $block-&gt;getLoadedProductCollection();\n\/** @var \\Magento\\Catalog\\Helper\\Output $_helper *\/\n$_helper = $block-&gt;getData(&#039;outputHelper&#039;);\n?&gt;\n&lt;?php if (!$_productCollection-&gt;count()): ?&gt;\n    &lt;div class=&quot;message info empty&quot;&gt;\n        &lt;div&gt;&lt;?= $escaper-&gt;escapeHtml(__(&#039;We can\\&#039;t find products matching the selection.&#039;)) ?&gt;&lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;?php else: ?&gt;\n    &lt;?= $block-&gt;getToolbarHtml() ?&gt;\n    &lt;?= $block-&gt;getAdditionalHtml() ?&gt;\n    &lt;?php\n    if ($block-&gt;getMode() === &#039;grid&#039;) {\n        $viewMode = &#039;grid&#039;;\n        $imageDisplayArea = &#039;category_page_grid&#039;;\n        $showDescription = false;\n        $templateType = \\Magento\\Catalog\\Block\\Product\\ReviewRendererInterface::SHORT_VIEW;\n    } else {\n        $viewMode = &#039;list&#039;;\n        $imageDisplayArea = &#039;category_page_list&#039;;\n        $showDescription = true;\n        $templateType = \\Magento\\Catalog\\Block\\Product\\ReviewRendererInterface::FULL_VIEW;\n    }\n    \/**\n     * Position for actions regarding image size changing in vde if needed\n     *\/\n    $pos = $block-&gt;getPositioned();\n    ?&gt;\n    &lt;div class=&quot;products wrapper &lt;?= \/* @noEscape *\/ $viewMode ?&gt; products-&lt;?= \/* @noEscape *\/ $viewMode ?&gt;&quot;&gt;\n        &lt;ol class=&quot;products list items product-items&quot;&gt;\n            &lt;?php \/** @var $_product \\Magento\\Catalog\\Model\\Product *\/ ?&gt;\n            &lt;?php foreach ($_productCollection as $_product): ?&gt;\n            &lt;li class=&quot;item product product-item&quot;&gt;\n                &lt;div class=&quot;product-item-info&quot;\n                     id=&quot;product-item-info_&lt;?= \/* @noEscape *\/ $_product-&gt;getId() ?&gt;&quot;\n                     data-container=&quot;product-&lt;?= \/* @noEscape *\/ $viewMode ?&gt;&quot;&gt;\n                    &lt;?php\n                    $productImage = $block-&gt;getImage($_product, $imageDisplayArea);\n                    if ($pos != null) {\n                        $position = &#039;left:&#039; . $productImage-&gt;getWidth() . &#039;px;&#039;\n                            . &#039;top:&#039; . $productImage-&gt;getHeight() . &#039;px;&#039;;\n                    }\n                    ?&gt;\n                    &lt;?php \/\/ Product Image ?&gt;\n                    &lt;a href=&quot;&lt;?= $escaper-&gt;escapeUrl($_product-&gt;getProductUrl()) ?&gt;&quot;\n                       class=&quot;product photo product-item-photo&quot;\n                       tabindex=&quot;-1&quot;&gt;\n                        &lt;?= $productImage-&gt;toHtml() ?&gt;\n                    &lt;\/a&gt;\n                    &lt;div class=&quot;product details product-item-details&quot;&gt;\n                        &lt;?php $_productNameStripped = $block-&gt;stripTags($_product-&gt;getName(), null, true); ?&gt;\n                        &lt;strong class=&quot;product name product-item-name&quot;&gt;\n                            &lt;a class=&quot;product-item-link&quot;\n                               href=&quot;&lt;?= $escaper-&gt;escapeUrl($_product-&gt;getProductUrl()) ?&gt;&quot;&gt;\n                                &lt;?=\/* @noEscape *\/ $_helper-&gt;productAttribute($_product, $_product-&gt;getName(), &#039;name&#039;)?&gt;\n                            &lt;\/a&gt;\n                        &lt;\/strong&gt;\n                        &lt;?= $block-&gt;getReviewsSummaryHtml($_product, $templateType) ?&gt;\n                        &lt;?= \/* @noEscape *\/ $block-&gt;getProductPrice($_product) ?&gt;\n\n                        &lt;?= $block-&gt;getProductDetailsHtml($_product) ?&gt;\n\n                        &lt;div class=&quot;product-item-inner&quot;&gt;\n                            &lt;div class=&quot;product actions product-item-actions&quot;&gt;\n                                &lt;div class=&quot;actions-primary&quot;&gt;\n                                    &lt;?php if ($_product-&gt;isSaleable()):?&gt;\n                                        &lt;?php $postParams = $block-&gt;getAddToCartPostParams($_product); ?&gt;\n                                        &lt;form data-role=&quot;tocart-form&quot;\n                                              data-product-sku=&quot;&lt;?= $escaper-&gt;escapeHtml($_product-&gt;getSku()) ?&gt;&quot;\n                                              action=&quot;&lt;?= $escaper-&gt;escapeUrl($postParams&#091;&#039;action&#039;]) ?&gt;&quot;\n                                              data-mage-init=&#039;{&quot;catalogAddToCart&quot;: {}}&#039;\n                                              method=&quot;post&quot;&gt;\n                                            &lt;?php $options = $block-&gt;getData(&#039;viewModel&#039;)-&gt;getOptionsData($_product); ?&gt;\n                                            &lt;?php foreach ($options as $optionItem): ?&gt;\n                                                &lt;input type=&quot;hidden&quot;\n                                                       name=&quot;&lt;?= $escaper-&gt;escapeHtml($optionItem&#091;&#039;name&#039;]) ?&gt;&quot;\n                                                       value=&quot;&lt;?= $escaper-&gt;escapeHtml($optionItem&#091;&#039;value&#039;]) ?&gt;&quot;&gt;\n                                            &lt;?php endforeach; ?&gt;\n                                            &lt;input type=&quot;hidden&quot;\n                                                   name=&quot;product&quot;\n                                                   value=&quot;&lt;?= \/* @noEscape *\/ $postParams&#091;&#039;data&#039;]&#091;&#039;product&#039;] ?&gt;&quot;&gt;\n                                            &lt;input type=&quot;hidden&quot;\n                                                   name=&quot;&lt;?= \/* @noEscape *\/ Action::PARAM_NAME_URL_ENCODED ?&gt;&quot;\n                                                   value=&quot;&lt;?=\n                                                   \/* @noEscape *\/ $postParams&#091;&#039;data&#039;]&#091;Action::PARAM_NAME_URL_ENCODED]\n                                                    ?&gt;&quot;&gt;\n                                            &lt;?= $block-&gt;getBlockHtml(&#039;formkey&#039;) ?&gt;\n                                            &lt;button type=&quot;submit&quot;\n                                                    title=&quot;&lt;?= $escaper-&gt;escapeHtmlAttr(__(&#039;Purchase Now&#039;)) ?&gt;&quot;\n                                                    class=&quot;action tocart primary&quot;\n                                                    disabled&gt;\n                                                &lt;span&gt;&lt;?= $escaper-&gt;escapeHtml(__(&#039;Purchase Now&#039;)) ?&gt;&lt;\/span&gt;\n                                            &lt;\/button&gt;\n                                        &lt;\/form&gt;\n                                    &lt;?php else:?&gt;\n                                        &lt;?php if ($_product-&gt;isAvailable()):?&gt;\n                                            &lt;div class=&quot;stock available&quot;&gt;\n                                                &lt;span&gt;&lt;?= $escaper-&gt;escapeHtml(__(&#039;In stock&#039;)) ?&gt;&lt;\/span&gt;&lt;\/div&gt;\n                                        &lt;?php else:?&gt;\n                                            &lt;div class=&quot;stock unavailable&quot;&gt;\n                                                &lt;span&gt;&lt;?= $escaper-&gt;escapeHtml(__(&#039;Out of stock&#039;)) ?&gt;&lt;\/span&gt;&lt;\/div&gt;\n                                        &lt;?php endif; ?&gt;\n                                    &lt;?php endif; ?&gt;\n                                &lt;\/div&gt;\n                                &lt;?= ($pos &amp;&amp; strpos($pos, $viewMode . &#039;-primary&#039;)) ?\n                                    \/* @noEscape *\/ $secureRenderer-&gt;renderStyleAsTag(\n                                        $position,\n                                        &#039;product-item-info_&#039; . $_product-&gt;getId() . &#039; div.actions-primary&#039;\n                                    ) : &#039;&#039; ?&gt;\n                                &lt;div data-role=&quot;add-to-links&quot; class=&quot;actions-secondary&quot;&gt;\n                                    &lt;?php if ($addToBlock = $block-&gt;getChildBlock(&#039;addto&#039;)): ?&gt;\n                                        &lt;?= $addToBlock-&gt;setProduct($_product)-&gt;getChildHtml() ?&gt;\n                                    &lt;?php endif; ?&gt;\n                                &lt;\/div&gt;\n                                &lt;?= ($pos &amp;&amp; strpos($pos, $viewMode . &#039;-secondary&#039;)) ?\n                                    \/* @noEscape *\/ $secureRenderer-&gt;renderStyleAsTag(\n                                        $position,\n                                        &#039;product-item-info_&#039; . $_product-&gt;getId() . &#039; div.actions-secondary&#039;\n                                    ) : &#039;&#039; ?&gt;\n                            &lt;\/div&gt;\n                            &lt;?php if ($showDescription): ?&gt;\n                                &lt;div class=&quot;product description product-item-description&quot;&gt;\n                                    &lt;?= \/* @noEscape *\/ $_helper-&gt;productAttribute(\n                                        $_product,\n                                        $_product-&gt;getShortDescription(),\n                                        &#039;short_description&#039;\n                                    ) ?&gt;\n                                    &lt;a href=&quot;&lt;?= $escaper-&gt;escapeUrl($_product-&gt;getProductUrl()) ?&gt;&quot;\n                                       title=&quot;&lt;?= \/* @noEscape *\/ $_productNameStripped ?&gt;&quot;\n                                       class=&quot;action more&quot;&gt;&lt;?= $escaper-&gt;escapeHtml(__(&#039;Learn More&#039;)) ?&gt;&lt;\/a&gt;\n                                &lt;\/div&gt;\n                            &lt;?php endif; ?&gt;\n                        &lt;\/div&gt;\n                    &lt;\/div&gt;\n                &lt;\/div&gt;\n                &lt;?= ($pos &amp;&amp; strpos($pos, $viewMode . &#039;-actions&#039;)) ?\n                \/* @noEscape *\/ $secureRenderer-&gt;renderStyleAsTag(\n                    $position,\n                    &#039;product-item-info_&#039; . $_product-&gt;getId() . &#039; div.product-item-actions&#039;\n                ) : &#039;&#039; ?&gt;\n            &lt;\/li&gt;\n            &lt;?php endforeach; ?&gt;\n        &lt;\/ol&gt;\n    &lt;\/div&gt;\n    &lt;?= $block-&gt;getChildBlock(&#039;toolbar&#039;)-&gt;setIsBottom(true)-&gt;toHtml() ?&gt;\n    &lt;?php \/\/ phpcs:ignore Magento2.Legacy.PhtmlTemplate ?&gt;\n&lt;?php endif; ?&gt;<\/pre>\n\n\n\n<p>Here is the result of the mentioned code. Add to cart text has been replaced with Purchase Now.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"601\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-template-override-1-1200x601.png\" alt=\"Theme-layouts-customizations-template-override-1\" class=\"wp-image-424694\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-template-override-1-1200x601.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-template-override-1-300x150.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-template-override-1-250x125.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-template-override-1-768x385.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-template-override-1.png 1304w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">4. Override Core Magento js<\/h2>\n\n\n\n<p>In the below example, we are overriding Magento_Checkout module&#8217;s web\/js\/view\/payment\/default.js  file to our custom theme to add confirmation to place order button on click action.<\/p>\n\n\n\n<p>To achieve this, We create a same js file (default.js) inside the below directory:-<\/p>\n\n\n\n<p><strong>app\/<strong>design<\/strong>\/frontend\/Webkul\/customtheme\/Magento_Checkout\/web\/js\/view\/payment\/<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">\/**\n * Webkul Software.\n *\n * @category   Webkul\n * @package    Webkul_CustomTheme\n * @author     Webkul Software Private Limited\n * @copyright  Webkul Software Private Limited (https:\/\/webkul.com)\n * @license    https:\/\/store.webkul.com\/license.html\n *\/\n\n define(&#091;\n    &#039;ko&#039;,\n    &#039;jquery&#039;,\n    &#039;uiComponent&#039;,\n    &#039;Magento_Checkout\/js\/action\/place-order&#039;,\n    &#039;Magento_Checkout\/js\/action\/select-payment-method&#039;,\n    &#039;Magento_Checkout\/js\/model\/quote&#039;,\n    &#039;Magento_Customer\/js\/model\/customer&#039;,\n    &#039;Magento_Checkout\/js\/model\/payment-service&#039;,\n    &#039;Magento_Checkout\/js\/checkout-data&#039;,\n    &#039;Magento_Checkout\/js\/model\/checkout-data-resolver&#039;,\n    &#039;uiRegistry&#039;,\n    &#039;Magento_Checkout\/js\/model\/payment\/additional-validators&#039;,\n    &#039;Magento_Ui\/js\/model\/messages&#039;,\n    &#039;uiLayout&#039;,\n    &#039;Magento_Checkout\/js\/action\/redirect-on-success&#039;,\n    &#039;Magento_Ui\/js\/modal\/confirm&#039;\n], function (\n    ko,\n    $,\n    Component,\n    placeOrderAction,\n    selectPaymentMethodAction,\n    quote,\n    customer,\n    paymentService,\n    checkoutData,\n    checkoutDataResolver,\n    registry,\n    additionalValidators,\n    Messages,\n    layout,\n    redirectOnSuccessAction,\n    confirmation\n) {\n    &#039;use strict&#039;;\n\n    return Component.extend({\n        redirectAfterPlaceOrder: true,\n        isPlaceOrderActionAllowed: ko.observable(quote.billingAddress() != null),\n\n        \/**\n         * After place order callback\n         *\/\n        afterPlaceOrder: function () {\n            \/\/ Override this function and put after place order logic here\n        },\n\n        \/**\n         * Initialize view.\n         *\n         * @return {exports}\n         *\/\n        initialize: function () {\n            var billingAddressCode,\n                billingAddressData,\n                defaultAddressData;\n\n            this._super().initChildren();\n            quote.billingAddress.subscribe(function (address) {\n                this.isPlaceOrderActionAllowed(address !== null);\n            }, this);\n            checkoutDataResolver.resolveBillingAddress();\n\n            billingAddressCode = &#039;billingAddress&#039; + this.getCode();\n            registry.async(&#039;checkoutProvider&#039;)(function (checkoutProvider) {\n                defaultAddressData = checkoutProvider.get(billingAddressCode);\n\n                if (defaultAddressData === undefined) {\n                    \/\/ Skip if payment does not have a billing address form\n                    return;\n                }\n                billingAddressData = checkoutData.getBillingAddressFromData();\n\n                if (billingAddressData) {\n                    checkoutProvider.set(\n                        billingAddressCode,\n                        $.extend(true, {}, defaultAddressData, billingAddressData)\n                    );\n                }\n                checkoutProvider.on(billingAddressCode, function (providerBillingAddressData) {\n                    checkoutData.setBillingAddressFromData(providerBillingAddressData);\n                }, billingAddressCode);\n            });\n\n            return this;\n        },\n\n        \/**\n         * Initialize child elements\n         *\n         * @returns {Component} Chainable.\n         *\/\n        initChildren: function () {\n            this.messageContainer = new Messages();\n            this.createMessagesComponent();\n\n            return this;\n        },\n\n        \/**\n         * Create child message renderer component\n         *\n         * @returns {Component} Chainable.\n         *\/\n        createMessagesComponent: function () {\n\n            var messagesComponent = {\n                parent: this.name,\n                name: this.name + &#039;.messages&#039;,\n                displayArea: &#039;messages&#039;,\n                component: &#039;Magento_Ui\/js\/view\/messages&#039;,\n                config: {\n                    messageContainer: this.messageContainer\n                }\n            };\n\n            layout(&#091;messagesComponent]);\n\n            return this;\n        },\n\n        \/**\n         * Place order.\n         *\/\n        placeOrder: function (data, event) {\n            var self = this;\n            confirmation({\n                title: &#039;Order Confirmation&#039;,\n                content: &#039;Do you want to place this order?&#039;,\n                actions: {\n                    confirm: function () {\n                        if (event) {\n                            event.preventDefault();\n                        }\n            \n                        if (self.validate() &amp;&amp;\n                            additionalValidators.validate() &amp;&amp;\n                            self.isPlaceOrderActionAllowed() === true\n                        ) {\n                            self.isPlaceOrderActionAllowed(false);\n            \n                            self.getPlaceOrderDeferredObject()\n                                .done(\n                                    function () {\n                                        self.afterPlaceOrder();\n            \n                                        if (self.redirectAfterPlaceOrder) {\n                                            redirectOnSuccessAction.execute();\n                                        }\n                                    }\n                                ).always(\n                                    function () {\n                                        self.isPlaceOrderActionAllowed(true);\n                                    }\n                                );\n            \n                            return true;\n                        }\n                    },\n                    cancel: function () {\n                        return false;\n                    }\n                }\n            });\n            return false;\n        },\n\n        \/**\n         * @return {*}\n         *\/\n        getPlaceOrderDeferredObject: function () {\n            return $.when(\n                placeOrderAction(this.getData(), this.messageContainer)\n            );\n        },\n\n        \/**\n         * @return {Boolean}\n         *\/\n        selectPaymentMethod: function () {\n            selectPaymentMethodAction(this.getData());\n            checkoutData.setSelectedPaymentMethod(this.item.method);\n\n            return true;\n        },\n\n        isChecked: ko.computed(function () {\n            return quote.paymentMethod() ? quote.paymentMethod().method : null;\n        }),\n\n        isRadioButtonVisible: ko.computed(function () {\n            return paymentService.getAvailablePaymentMethods().length !== 1;\n        }),\n\n        \/**\n         * Get payment method data\n         *\/\n        getData: function () {\n            return {\n                &#039;method&#039;: this.item.method,\n                &#039;po_number&#039;: null,\n                &#039;additional_data&#039;: null\n            };\n        },\n\n        \/**\n         * Get payment method type.\n         *\/\n        getTitle: function () {\n            return this.item.title;\n        },\n\n        \/**\n         * Get payment method code.\n         *\/\n        getCode: function () {\n            return this.item.method;\n        },\n\n        \/**\n         * @return {Boolean}\n         *\/\n        validate: function () {\n            return true;\n        },\n\n        \/**\n         * @return {String}\n         *\/\n        getBillingAddressFormName: function () {\n            return &#039;billing-address-form-&#039; + this.item.method;\n        },\n\n        \/**\n         * Dispose billing address subscriptions\n         *\/\n        disposeSubscriptions: function () {\n            \/\/ dispose all active subscriptions\n            var billingAddressCode = &#039;billingAddress&#039; + this.getCode();\n\n            registry.async(&#039;checkoutProvider&#039;)(function (checkoutProvider) {\n                checkoutProvider.off(billingAddressCode);\n            });\n        }\n    });\n});<\/pre>\n\n\n\n<p>Here is the result of the mentioned code. The confirmation has been added on place order button click.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"552\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-override-js-1200x552.png\" alt=\"Theme-layouts-customizations-override-js\" class=\"wp-image-424747\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-override-js-1200x552.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-override-js-300x138.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-override-js-250x115.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-override-js-768x354.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/Theme-layouts-customizations-override-js.png 1312w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>That\u2019s all about the Magento Theme : Layout customizations. Hope this will be helpful.<\/p>\n\n\n\n<p>If you have any questions please comment below, and we will try to respond to you.<\/p>\n\n\n\n<p>Thanks! \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello Friends !! In this blog, We will discuss about magento theme layout customizations related points. So, Firstly we try to understand how we can create a custom theme in Magento 2. You can refer the our Custom Theme in Magento 2 blog to create a custom theme. While creating a custom theme, We should <a href=\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":354,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[302],"tags":[15331,15330,71,15332,15329],"class_list":["post-424573","post","type-post","status-publish","format-standard","hentry","category-magento2","tag-best-approaches-to-create-theme","tag-create-custom-theme","tag-magento-theme","tag-override-core-files-to-custom-theme","tag-theme-layout-customizations"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Understanding Magento Theme : Layout customizations - Webkul Blog<\/title>\n<meta name=\"description\" content=\"Understanding Magento Theme : Layout customizations. Override layouts, styles, templates, and js files to them. Create theme in Magento.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Understanding Magento Theme : Layout customizations - Webkul Blog\" \/>\n<meta property=\"og:description\" content=\"Understanding Magento Theme : Layout customizations. Override layouts, styles, templates, and js files to them. Create theme in Magento.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-27T13:44:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-13T06:02:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove-1200x606.png\" \/>\n<meta name=\"author\" content=\"Mubarik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mubarik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/\"},\"author\":{\"name\":\"Mubarik\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/2fa581764e96125af674349150b2b818\"},\"headline\":\"Understanding Magento Theme : Layout customizations\",\"datePublished\":\"2024-02-27T13:44:02+00:00\",\"dateModified\":\"2024-04-13T06:02:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/\"},\"wordCount\":468,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove-1200x606.png\",\"keywords\":[\"Best Approaches to create theme\",\"Create Custom Theme\",\"magento theme\",\"Override Core files to Custom Theme\",\"Theme layout Customizations\"],\"articleSection\":[\"Magento2\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/\",\"url\":\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/\",\"name\":\"Understanding Magento Theme : Layout customizations - Webkul Blog\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove-1200x606.png\",\"datePublished\":\"2024-02-27T13:44:02+00:00\",\"dateModified\":\"2024-04-13T06:02:47+00:00\",\"description\":\"Understanding Magento Theme : Layout customizations. Override layouts, styles, templates, and js files to them. Create theme in Magento.\",\"breadcrumb\":{\"@id\":\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#primaryimage\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove.png\",\"width\":1296,\"height\":654,\"caption\":\"breadcumbs-remove\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Understanding Magento Theme : Layout customizations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webkul.com\/blog\/#website\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webkul.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webkul.com\/blog\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webkul\/\",\"https:\/\/x.com\/webkul\",\"https:\/\/www.instagram.com\/webkul\/\",\"https:\/\/www.linkedin.com\/company\/webkul\",\"https:\/\/www.youtube.com\/user\/webkul\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/2fa581764e96125af674349150b2b818\",\"name\":\"Mubarik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/af8c0b8b43a042ae4d9fd3cb5207b18bbe898d7ab63344df28ac22803b26a0ee?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/af8c0b8b43a042ae4d9fd3cb5207b18bbe898d7ab63344df28ac22803b26a0ee?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"caption\":\"Mubarik\"},\"url\":\"https:\/\/webkul.com\/blog\/author\/md-mubarik459\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Understanding Magento Theme : Layout customizations - Webkul Blog","description":"Understanding Magento Theme : Layout customizations. Override layouts, styles, templates, and js files to them. Create theme in Magento.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/","og_locale":"en_US","og_type":"article","og_title":"Understanding Magento Theme : Layout customizations - Webkul Blog","og_description":"Understanding Magento Theme : Layout customizations. Override layouts, styles, templates, and js files to them. Create theme in Magento.","og_url":"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2024-02-27T13:44:02+00:00","article_modified_time":"2024-04-13T06:02:47+00:00","og_image":[{"url":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove-1200x606.png","type":"","width":"","height":""}],"author":"Mubarik","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Mubarik","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/"},"author":{"name":"Mubarik","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/2fa581764e96125af674349150b2b818"},"headline":"Understanding Magento Theme : Layout customizations","datePublished":"2024-02-27T13:44:02+00:00","dateModified":"2024-04-13T06:02:47+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/"},"wordCount":468,"commentCount":0,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"image":{"@id":"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove-1200x606.png","keywords":["Best Approaches to create theme","Create Custom Theme","magento theme","Override Core files to Custom Theme","Theme layout Customizations"],"articleSection":["Magento2"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/","url":"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/","name":"Understanding Magento Theme : Layout customizations - Webkul Blog","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#primaryimage"},"image":{"@id":"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove-1200x606.png","datePublished":"2024-02-27T13:44:02+00:00","dateModified":"2024-04-13T06:02:47+00:00","description":"Understanding Magento Theme : Layout customizations. Override layouts, styles, templates, and js files to them. Create theme in Magento.","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#primaryimage","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/02\/breadcumbs-remove.png","width":1296,"height":654,"caption":"breadcumbs-remove"},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/understanding-magento-theme-layout-customizations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Understanding Magento Theme : Layout customizations"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/2fa581764e96125af674349150b2b818","name":"Mubarik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/af8c0b8b43a042ae4d9fd3cb5207b18bbe898d7ab63344df28ac22803b26a0ee?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/af8c0b8b43a042ae4d9fd3cb5207b18bbe898d7ab63344df28ac22803b26a0ee?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","caption":"Mubarik"},"url":"https:\/\/webkul.com\/blog\/author\/md-mubarik459\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/424573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/354"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=424573"}],"version-history":[{"count":29,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/424573\/revisions"}],"predecessor-version":[{"id":433046,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/424573\/revisions\/433046"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=424573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=424573"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=424573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}