Add Size Guide In Product Page Magento 2

Today I will show you how to add size guide in product page in Magento 2. This will help your customers easily choose the right size. You can do this through a few steps.

 

Step 1:

Create catalog_product_view.xml under /app/code/Magepow/Custom/view/frontend/layout/

 

File: /app/code/Magepow/Custom/view/frontend/layout/catalog_product_view.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="product.info.options.wrapper">
            <block name="sizeguide" template="Magepow_Custom::size_guide.phtml" group="detailed_info" before="-">
                <arguments>
                    <argument translate="true" name="title" xsi:type="string">Size Guide</argument>
                </arguments>
            </block>
        </referenceBlock>
    </body>
</page>

Step 2:

Create size_guide.phtml under /app/code/Magepow/Custom/view/frontend/templates/

 

File: /app/code/Magepow/Custom/view/frontend/templates/size_guide.phtml

<?php 
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $product = $objectManager->get('Magento\Framework\Registry')->registry('current_product');
    if($product->getTypeId() == \Magento\ConfigurableProduct\Model\Product\Type\Configurable::TYPE_CODE):
        $sizeguideBlock = $this->getLayout()->createBlock('Magento\Cms\Block\Block')->setBlockId('size_guide')->toHtml();
        $data = $product->getTypeInstance()->getConfigurableOptions($product);

        $show_size = false;
        foreach ($data as $key => $value) {
            if($value['0']['attribute_code'] == 'size')
            {
                $show_size = true;
                break;
            }
        }
    ?>
    <?php if(isset($show_size) && $show_size != false): ?>
    <div class="size-guide">
        <a class="size-guide-text" ><?php echo $block->escapeHtml(__('Size Guide')); ?></a>
        <div id="size-guide-popup" style="display: none;"><?php echo $sizeguideBlock; ?></div>
    </div>
    <script type="text/x-magento-init">
        {
            "*": {
                "magepowSizeGuide":{}
            }
        }
    </script>
    <?php endif; ?>
<?php endif; ?>

Step 3:

Create requirejs-config.js under /app/code/Magepow/Custom/view/frontend/

 

File: /app/code/Magepow/Custom/view/frontend/requirejs-config.js

var config = {
    map: {
        '*': {
            magepowSizeGuide: 'Magepow_Custom/js/sizeguide'
        }
    }
};

Step 4:

Create sizeguide.js under /app/code/Magepow/Custom/view/frontend/web/js

 

File: /app/code/Magepow/Custom/view/frontend/web/js/sizeguide.js

define([
    "jquery",
    'Magento_Ui/js/modal/modal'
], function ($, modal) {
    'use strict';
    $.widget('mage.sizeguide', {
        _create: function () {
            $('.size-guide .size-guide-text').click(function () {
                $('#size-guide-popup').modal({
                    type: 'popup',
                    modalClass: 'modals-sizeguide',
                    responsive: true, 
                    buttons: false           
                });
                $("#size-guide-popup").modal("openModal");
            });

            $('.delivery-return .delivery-return-text').click(function () {
                $('#delivery-return-popup').modal({
                    type: 'popup',
                    modalClass: 'modals-sizeguide',
                    responsive: true, 
                    buttons: false           
                });
                $("#delivery-return-popup").modal("openModal");
            });
        }
    });
    return $.mage.sizeguide;
});


Step 5:

Now install the custom module and refresh Magento cache

 

php bin/magento setup:upgrade

php bin/magento setup:di:compile

php bin/magento cache:flush

 

Done. Hope this article will help you in some way.