How to create theme in magento 2

  • Home
  • How to create theme in magento 2
Imagine Infosoft
Imagine Infosoft
Imagine Infosoft
Imagine Infosoft

How to create theme in magento 2

How to create theme in magento 2

Creating a theme in Magento 2 involves several steps, including setting up the theme directory structure, creating necessary configuration files, and adding custom styling and templates. Here’s a step-by-step guide to creating a new theme in Magento 2:

1. Create the Theme Directory

1. Create the Base Theme Directory:

Navigate to app/design/frontend and create a new directory for your theme. For example, if your theme is called CustomTheme by a vendor named Vendor, you’d create:

app/design/frontend/Vendor/CustomTheme

2. Create the Theme Configuration File:

Create a theme.xml file in your theme’s directory:

app/design/frontend/Vendor/CustomTheme/theme.xml

<?xml version="1.0"?>
<theme xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Design/etc/theme.xsd">
<title>Custom Theme</title> <!-- Theme title -- >
<parent>Magento/luma</parent> <!-- Parent theme (optional) -- >
</theme>

This file defines the theme's name and its parent theme (if any). Magento/luma is a commonly used parent theme.

2. Create a Registration File

Create a registration.php file to register your theme with Magento:

app/design/frontend/Vendor/CustomTheme/registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::THEME,
'frontend/Vendor/CustomTheme',
__DIR__
);

3. Define the Theme Layout and Templates

Create Layout Files

Magento 2 uses XML files to define layouts. Create the following directories and files for your theme’s layout overrides:

app/design/frontend/Vendor/CustomTheme/Magento_Theme/layout

You can create a basic layout file to override the default layout,

For example: app/design/frontend/Vendor/CustomTheme/Magento_Theme/layout/default.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="logo">
<arguments>
<argument name="logo_src" xsi:type="string">images/logo.png</argument>
</arguments>
</referenceBlock>
</body>
</page>

Create Templates

Create a directory for your templates:

app/design/frontend/Vendor/CustomTheme/Magento_Theme/templates

Add custom template files as needed.

For example, create a custom header template:

app/design/frontend/Vendor/CustomTheme/Magento_Theme/templates/html/header.phtml

4. Add Static Assets

Create Directories for CSS and JavaScript

Create directories for CSS and JavaScript files:

app/design/frontend/Vendor/CustomTheme/web/css

app/design/frontend/Vendor/CustomTheme/web/js

Add your custom CSS and JavaScript files here.

For example: app/design/frontend/Vendor/CustomTheme/web/css/source/_extend.less for LESS files.

app/design/frontend/Vendor/CustomTheme/web/css/styles.css for plain CSS files.

Add a requirejs-config.js (if needed)

If you need custom JavaScript modules, create a requirejs-config.js file:

app/design/frontend/Vendor/CustomTheme/requirejs-config.js

var config = { map: { '*': { 'Magento_Catalog/js/view/product/list': 'Vendor_CustomTheme/js/view/product/list' } } };

5. Create Theme LESS/CSS Files

Create a styles.less file in the web/css/source directory to compile your CSS:

app/design/frontend/Vendor/CustomTheme/web/css/source/_extend.less

@import 'source/_theme.less';

6. Configure Theme in Admin Panel

  • Log in to the Magento Admin Panel.
  • Navigate to Content -> Design -> Themes.
  • Find your theme in the list and select Action -> Apply to apply it to the store view.

7. Deploy Static Content

After setting up your theme, deploy static content to ensure that all your styles and scripts are compiled and available:

php bin/magento setup:static-content:deploy

8. Clear Cache

Finally, clear the Magento cache to see your changes:

php bin/magento cache:clean

Example Directory Structure

Your theme directory structure should look like this:

app/design/frontend/Vendor/CustomTheme/
├── etc
│ └── view.xml
├── Magento_Theme
│ ├── layout
│ │ └── default.xml
│ └── templates
│ └── html
│ └── header.phtml
├── web
│ ├── css
│ │ ├── source
│ │ │ └── _extend.less
│ │ └── styles.css
│ └── js
│ └── custom.js
├── registration.php
└── theme.xml

Summary

Creating a custom theme in Magento 2 involves setting up the theme directory structure, configuring theme XML files, and adding custom CSS, JavaScript, and template files. Once your theme is set up, you can apply it through the Magento Admin Panel and deploy static content to make sure all changes are reflected on the frontend. This process allows you to create a unique look and feel for your Magento 2 store, tailored to your specific requirements.