magento theme development

Magento Theme Development Tutorial: A step-by-step guide for beginners

Software development / Business / Tips

Magento Theme Development Tutorial: A step-by-step guide for beginners

Magento development plays an undeniably crucial role in creating an E-Commerce website.

To really upgrade your online store, businesses should spend a good investment in Magento theme development. It is the decisive component in designing the whole look, mood, and aesthetic of your website.

Let TECHVIFY introduce to you a step-by-step guideline to Magento Theme Development. By fully acknowledging these steps, you can have a better view about this whole process.

Magento theme development steps
Magento theme development steps

Magento theme development step #1: Create a Directory Containing Theme

  1. Go to: /app/design/frontend and create a new directory with the vendor name you want for theme package: /app/design/frontend/<Vendor>.
  2. Under the vendor>directory, create a directory named according to your theme.

app/design/frontend/

 ── <Vendor>/

 │   │   ──…<theme>/

 │   │   │   ──

 │   │   │   ──

After creating this structure, you need to declare your theme so that Magento knows it exists. You can set your theme as the current theme in your Magento backend.

Magento theme development step #2: Declare your Theme

To declare your theme, you must create a theme.xml file containing the theme name. If the theme inherits from a parent theme, the .xml file should also include the parent theme name. The theme preview image is also required if necessary.

  1. Add or copy from an existing theme.xml file to your theme directory app/design/frontend/<Vendor>/<theme>.
  2. Configure it using the following example:
  3.     <theme xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=”urn:magento:framework:Config/etc/theme.xsd”><title>m2-theme</title>
  4.     <parent>Magento/<theme></parent>
  5.     <media>
  6.     <preview_image>media/m2-theme-image.jpg</preview_image>
  7.     </media>
  8.     </theme>

In the <title> tag, insert the name of your theme. In the <parent> tag, you can specify the parent theme for fallback purposes.

The theme image in the <preview_image> tag is a thumbnail image, which shows the theme page for preview purposes. The thumbnail image is located in app/design/frontend/<theme>/m2-theme/media/m2-theme-image.jpg.

If you change the theme title or parent theme information in theme.xml after a theme was already registered, you need to open or reload any Magento Admin to save changes in the database.

Magento theme development step #3: Make a Composer Package

Magento 2 themes are distributed as Composer packages so they will be registered as a Package on the server. Add a file composer.json which is optional.

The composer.json file provides theme dependency information. Refer to a current theme.xml file for the correct dependencies and their versions.

Example of a theme composer.json file:

  1. {
  2.     “name”: “<vendor>/m2-theme”,
  3.     “description”: “Magento 2 Theme Customization”,
  4.     “require”: {
  5.     “php”: “~5.6|~7.0|~7.1|~7.2|~7.3|~7.4”,
  6.     “<vendor>/m2-theme”: “100.0.*”,
  7.     “magento/framework”: “100.0.*”
  8.     },
  9.     “type”: “magento2-theme”,
  10. “version”: “100.0.1”,
  11. “license”: [
  12. “OSL-3.0”,
  13. “AFL-3.0”
  14. ],
  15. “autoload”: {
  16. “files”: [
  17. “Registration.php”
  18. ]
  19. }
  20. }

Magento theme development step #4: Adding registration.php

To register your theme in the system, add a file registration.php in your theme directory with the below content:

  1.     <?php
  2.     /**
  3.     Copyright © Magento, Inc. All rights reserved.
  4.     See COPYING.txt for license details.
  5.     */
  6.     \Magento\Framework\Component\ComponentRegistrar:: register;
  7.     \Magento\Framework\Component\ComponentRegistrar::THEME,
  8.     ‘frontend/<Vendor>/<theme>’,
  9.     __DIR__
  10. );

<Vendor> is your vendor name and <theme> is the theme code.

Magento theme development step #5: Creating Directory Structure for Static Files

Theme package consists of many types of files: styles, fonts, JavaScript, and images. Each type should be stored in its own sub-directory of web in your theme directory:

app/design/<area>/<Vendor>/<theme>/

── web/

── css/

│ │ ── source/ 

── fonts/

── images/

── js/

In the …/<theme>/web/images directory, you store the general theme-related static files.

Magento theme development step #6: Configure Images

Product image sizes and other properties used on a theme are configured in a view.xml configuration file. It is required for a theme, but is optional if it exists in the parent theme.

If the product image sizes of your theme differ from those of the parent theme, or if your theme does not inherit from any theme, you will need to add view.xml.

Copy the view.xml file from the etc directory of the parent theme or copy it from the Blank theme. Configure all storefront product image sizes in the view.xml file.

  1. <image id=”category_page_grid” type=”small_image”>
  2. <width>250</width>
  3. <height>250</height>
  4. </image>

Magento theme development step #7: Declaring Theme Logo

In the Magento application, the default format and name of a logo image is logo.svg. You can use a logo file with a different name and format, but you might need to declare it.

To declare a theme logo, create Magento_Theme/layout directories and add the following code to a default.xml file. The default.xml file path is /app/design/frontend/<theme>/m2-theme/Magento_Theme/layout/default.xml.

  1. <page xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=”urn:magento:framework:View/Layout/etc/page_configuration.xsd”>
  2. <body>
  3. <referenceBlock name=”logo”>
  4. <arguments>
  5. <argument name=”logo_file” xsi:type=”string”>images/m2-logo.png</argument>
  6. <argument name=”logo_img_width” xsi:type=”number”>350</argument>
  7. <argument name=”logo_img_height” xsi:type=”number”>350</argument>
  8. </arguments>
  9. </referenceBlock>
  10. </body>
  11. </page>

Magento theme development step #8: Customize Theme Layout

Once your basic theme structure is created, now you can customize or override any layout and set up a new design layout for your new theme.

For overriding theme layout, you need to put the layout file with the same name in the following location: /app/design/frontend/Magento/<theme>/Magento_Theme/layout/default.xml

These files override the following layouts: /<vendor>/m2-theme/Magento_Theme/layout/default.xml

Magento theme development step #9: Configure the Theme in Magento Admin Panel

The next step is to apply the custom theme you created from Magento Admin to your website: Go to Admin->Content->Design->Configuration

Click Edit on your store view, you will see a page with a designed configuration. On the Default Theme tab, in the Applied Theme drop-down, select your newly created theme and Click Save Configuration to apply the theme.

Magento theme development step #10: Final Deployment

To make the theme visible on the Magento storefront, we have to run one command to deploy the files:

  1. Log in to your Magento store SSH account
  2. Go to Magento root directory and run below command:

php bin/magento setup:upgrade

  1. Run another command to deploy the theme files:

php bin/magento setup:static-content:deploy

Now your theme is ready to be used.

That’s all you need to know about the Magento theme development process. Make sure that you know the procedure down to every detail to utilize all the best features of Magento development.

 magento theme development vendor
magento theme development vendor

Or if you find this process is too complicated to understand, you should choose a trustworthy web development team. TECHVIFY Vietnam is a specialist in Magento development with the ultimate goal is to create the best E-Commerce website that can meet all of the client’s requirements. With TECHVIFY, you can rest assured that your online store is in good hands.