CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

18 May, 2022

How to Import Categories in Magento 2 Programmatically

 Programing Coderfunda     May 18, 2022     Magento 2     No comments   

 

Magento 2: Import a category with its subcategories programmatically


Categories are essential for creating an efficient catalog and customer navigation so that users can easily find the products they want on your website.

Each product should be assigned to at least one category. Categories are a helpful way to sort and arrange your products. The diagram below represents the structure of the category.

Magento 2 categories with subcategories

The Magento 2 Import/Export function is one of the best resolutions for all stores to simplify numerous tasks in the manual back-end. These features become more essential and useful for Magento merchants.

New call-to-action

Does Default Magento 2 Open Source Support Import Categories?

The answer is definitely, no. In default Magento 2, the admin creates categories one by one, complete with the related data in each category. In the case of migrating to Magento 2, or when updating or moving to a new website, manually creating categories would be such a time-consuming work that not every business would tolerate it.

The below script helps you to import each category with its subcategories simultaneously without the compulsory need of the parent category ID. Instead of that, we can use the parent category name.

Create a custom module as shown in the file structure below.

Note: Please take a backup of your data and check with your technical developer before running the code.

Magento 2 categories with subcategories

Step 1: Create 

app/code/DCKAP/CategoryImport/view/frontend/layout/categoryimport_index_index.xml

	
		
		
			
		
	

Step 2: Create a form to import a CSV.

app/code/DCKAP/CategoryImport/view/frontend/templates/categoryimport.phtml

CSV File:

 

Step 3: Create a controller to read and import the CSV.

app/code/DCKAP/CategoryImport/Controller/Index/Index.php

_pageFactory=$pageFactory;
		$this->_categoryFactory=$categoryFactory;
		$this->_category=$category;
		$this->_repository=$repository;
		$this->csv=$csv;
		return parent: :__construct($context);
	}
	public function execute() {
		$post=$this->getRequest()->getFiles();
		if($post) {
			if(isset($post['file_upload']['tmp_name'])) {
				$arrResult=$this->csv->getData($post['file_upload']['tmp_name']);
				foreach ($arrResult as $key=> $value) {
					if ($key > 0) {
						// to skip the 1st row i.e title
						$parentid=2;
						if(is_string($value[1])) {
							$categoryTitle=$value[1]; // Category Name
							$collection=$this->_categoryFactory->create()->getCollection()->addFieldToFilter('name', ['in'=> $categoryTitle]);
							if ($collection->getSize()) {
								$parentid=$collection->getFirstItem()->getId();
							}
						}
						else if(is_int(($value[1]))) $parentid=$value[1];
						//echo $parentid."
";//For reference
						$data=[ 'data'=>[ "parent_id"=>$parentid,
						'name'=>$value[2],
						"is_active"=>true,
						"position"=>10,
						"include_in_menu"=>true,
						]];
						$checkCategory=$this->_categoryFactory->create()->getCollection()->addFieldToFilter('name', ['in'=> $value[2]])->addFieldToFilter('parent_id', ['in'=> $parentid]);
						if( !$checkCategory->getData()) {
							$category=$this->_categoryFactory->create($data);
							$result=$this->_repository->save($category);
						}
					}
					$this->messageManager->addSuccessMessage('Category Imported Successfully');
				}
			}
		}
		$this->_view->loadLayout();
		$this->_view->renderLayout();
	}
}

Run this module:

http://localhost/magento/categoryimport/

Magento 2 categories with subcategories

The CSV format must be as shown below.

Click here to get a sample CSV.

In this CSV, your header will be what you want and the first column should be a serial number. The second column must be either a parent/root category ID or name, and the third column must be the name of the category.

************************ Import CSV File ************************

Sample CSV Format

S.NoParent Category ID/NameCategory
12Mobile
2MobileSamsung
3MobileOppo
4MobileVivo
5SamsungSamsung J Pro
6SamsungSamsung a 10
7OppoOppo Youth
8OppoOppo k1
9VivoVivo v5 plus
10VivoVivo v9

And finally, you can now simultaneously import each category with its subcategories. If you found this blog helpful, then please do let us know if you have any queries.

  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook

Related Posts:

  • Create admin menu in magento 2                Create admin menu in magento 2Create registraion.php fileRsgitech\News\reg… Read More
  • Megento 2 menu to make module in one post   Magento 2     When you install the Magento 2 then visit 1st Dashboard   1st You will see this structure … Read More
  • Get Product Collection Filter By Visibility in Magento 2 Get Product Collection Filter By Visibility in Magento 2As you might already know, product collection plays a paramount role in every … Read More
  • Magento 2 Get All Order Collection with Filters Magento 2 Get All Order Collection with FiltersDuring the business management process, Magento 2 stores may have the need to filter all order co… Read More
  • How to Get Product Collection by Category ID in Magento 2 How to Get Product Collection by Category ID in Magento 2Today we’ll introduce a short but useful tutorial on how to get product collection by c… Read More
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Spring boot app (error: method getFirst()) failed to run at local machine, but can run on server
    The Spring boot app can run on the online server. Now, we want to replicate the same app at the local machine but the Spring boot jar file f...
  • Log activity in a Laravel app with Spatie/Laravel-Activitylog
      Requirements This package needs PHP 8.1+ and Laravel 9.0 or higher. The latest version of this package needs PHP 8.2+ and Laravel 8 or hig...
  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh
    I had follow these steps to install an configure firebase to my cordova project for cloud messaging. https://medium.com/@felipepucinelli/how...
  • Laravel auth login with phone or email
          <?php     Laravel auth login with phone or email     <? php     namespace App \ Http \ Controllers \ Auth ;         use ...
  • Vue3 :style backgroundImage not working with require
    I'm trying to migrate a Vue 2 project to Vue 3. In Vue 2 I used v-bind style as follow: In Vue 3 this doesn't work... I tried a...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (68)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • September (100)
  • August (50)
  • July (56)
  • June (46)
  • May (59)
  • April (50)
  • March (60)
  • February (42)
  • January (53)
  • December (58)
  • November (61)
  • October (39)
  • September (36)
  • August (36)
  • July (34)
  • June (34)
  • May (36)
  • April (29)
  • March (82)
  • February (1)
  • January (8)
  • December (14)
  • November (41)
  • October (13)
  • September (5)
  • August (48)
  • July (9)
  • June (6)
  • May (119)
  • April (259)
  • March (122)
  • February (368)
  • January (33)
  • October (2)
  • July (11)
  • June (29)
  • May (25)
  • April (168)
  • March (93)
  • February (60)
  • January (28)
  • December (195)
  • November (24)
  • October (40)
  • September (55)
  • August (6)
  • July (48)
  • May (2)
  • January (2)
  • July (6)
  • June (6)
  • February (17)
  • January (69)
  • December (122)
  • November (56)
  • October (92)
  • September (76)
  • August (6)

  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh - 9/21/2024
  • pyspark XPath Query Returns Lists Omitting Missing Values Instead of Including None - 9/20/2024
  • SQL REPL from within Python/Sqlalchemy/Psychopg2 - 9/20/2024
  • MySql Explain with Tobias Petry - 9/20/2024
  • How to combine information from different devices into one common abstract virtual disk? [closed] - 9/20/2024

Laravel News

  • Arr::from() Method in Laravel 12.14 - 5/14/2025
  • Streamline API Resources with Laravel's Fluent Methods - 5/13/2025
  • Customize URL Handling with Laravel's Macroable URI Class - 5/13/2025
  • Use Passkeys in Your Laravel App - 5/13/2025
  • Laravel Seeder Generator - 5/12/2025

Copyright © 2025 CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda