Magento 2 Practical Exercises

🎓 Magento 2 Practical Exercises – Hands-on Magento Mastery

Ready to apply your Magento 2 knowledge and strengthen your skills? These practical exercises will help you implement real-world Magento concepts from products to categories, checkout, and more. Let’s dive into building hands-on Magento 2 solutions!

🛠️ Exercise 1: Creating a Simple Product

Start by creating a simple product manually through the Magento Admin Panel. Afterward, you’ll use a script to create this product programmatically.

// product-creator.php

use Magento\Framework\App\Bootstrap;

require 'app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$obj = $bootstrap->getObjectManager();
$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');

$product = $obj->create('Magento\Catalog\Model\Product');
$product->setSku('test-product')
        ->setName('Test Product')
        ->setPrice(99.99)
        ->setTypeId('simple')
        ->setAttributeSetId(4) // Default Attribute Set
        ->setStatus(1) // Enabled
        ->setVisibility(4) // Catalog, Search
        ->save();
echo "Product Created!";

Try It Now

🛠️ Exercise 2: Creating a Category

Next, let’s create a new category for your product. We’ll use the same script approach to build a category in Magento.

// category-creator.php

use Magento\Framework\App\Bootstrap;

require 'app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$obj = $bootstrap->getObjectManager();
$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');

$category = $obj->create('Magento\Catalog\Model\Category');
$category->setName('Test Category')
          ->setIsActive(true)
          ->setParentId(2) // Default Root Category
          ->setLevel(2)
          ->setPath('1/2') // Path to Parent Category
          ->setPosition(10)
          ->setDescription('This is a test category')
          ->save();
echo "Category Created!";

Try It Now

🛠️ Exercise 3: Product Assignment to Category

Now that we have a product and a category, let’s assign the product to the category we just created.

// product-category-assignment.php

use Magento\Framework\App\Bootstrap;

require 'app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$obj = $bootstrap->getObjectManager();
$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');

$product = $obj->create('Magento\Catalog\Model\Product')->loadByAttribute('sku', 'test-product');
$category = $obj->create('Magento\Catalog\Model\Category')->load(3); // Assuming category ID 3
$product->setCategoryIds([$category->getId()]);
$product->save();
echo "Product Assigned to Category!";

Try It Now

🛠️ Exercise 4: Custom Checkout Button

Let’s add a custom button to the checkout page. This exercise will teach you how to customize the checkout layout by adding a button.

// app/design/frontend/[Vendor]/[theme]/templates/checkout/button.phtml


Try It Now

🛠️ Exercise 5: Create a Customer Attribute

Let’s extend customer functionality by adding a custom attribute that stores a customer’s favorite product.

// customer-attribute-creator.php

use Magento\Framework\App\Bootstrap;

require 'app/bootstrap.php';
$bootstrap = Bootstrap::create(BP, $_SERVER);
$obj = $bootstrap->getObjectManager();
$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');

$eavSetup = $obj->create('Magento\Eav\Setup\EavSetup');
$eavSetup->addAttribute(
    \Magento\Customer\Model\Customer::ENTITY,
    'favorite_product',
    [
        'type' => 'varchar',
        'label' => 'Favorite Product',
        'input' => 'text',
        'required' => false,
        'sort_order' => 100,
        'visible' => true
    ]
);
echo "Customer Attribute Created!";

Try It Now

✅ Conclusion

By completing these practical exercises, you’ve gained hands-on experience with key Magento 2 concepts. These exercises cover product creation, category management, checkout customization, and customer attributes. Now you’re ready to take your Magento 2 skills to the next level!