How to Programmatically Export CSV File Category Name with Parent Category Name

 

<?php

use Magento\MediaStorage\Helper\File\Storage\Database;

use Magento\Framework\AppInterface;


try

{

    require_once __DIR__ . '/app/bootstrap.php';

}

catch (\Exception $e)

{

    echo 'Autoload error: ' . $e->getMessage();

    exit(1);

}

try

{

    header("Content-type: text/csv");

    header("Content-Disposition: attachment; filename=category_level.csv");

    header("Pragma: no-cache");

    header("Expires: 0");


    $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);

    $objectManager = $bootstrap->getObjectManager();

    $appState = $objectManager->get('\Magento\Framework\App\State');

    $appState->setAreaCode('frontend');

   

    $categoryData = [];

    $rootCategoryId = 2; //Pass Root Category Id

    $categoryManagement = $objectManager->get('Magento\Catalog\Api\CategoryManagementInterface');

    $getSubCategory = getCategoryData($categoryManagement, $rootCategoryId);


    foreach ($getSubCategory->getChildrenData() as $category) {

        $cat = $category->getName();

        $categoryData[$category->getId()] = [

            'name' => $category->getName(),

            'url' => $category->getUrl()

        ];


        if (count($category->getChildrenData())) {

            $getSubCategoryLevelDown = getCategoryData($categoryManagement, $category->getId());

            foreach ($getSubCategoryLevelDown->getChildrenData() as $subcategorylist1) {

                $cat1 = $cat . ',' . $subcategorylist1->getName();

                $categoryData[$subcategorylist1->getId()] = [

                    'name' => $cat . ',' . $subcategorylist1->getName(),

                    'url' => $subcategorylist1->getUrl()

                ];

                if (count($subcategorylist1->getChildrenData())) {

                    $getSubCategoryLevelDownl = getCategoryData($categoryManagement, $subcategorylist1->getId());

                    foreach ($getSubCategoryLevelDownl->getChildrenData() as $subcategorylist2) {

                        $cat2 = $cat1 . ',' . $subcategorylist2->getName();

                        $categoryData[$subcategorylist2->getId()] = [

                            'name' => $cat1 . ',' . $subcategorylist2->getName(),

                            'url' => $subcategorylist2->getUrl()

                        ];

                        if (count($subcategorylist2->getChildrenData())) {

                            $getSubCategoryLevelDownl = getCategoryData($categoryManagement, $subcategorylist2->getId());

                            foreach ($getSubCategoryLevelDownl->getChildrenData() as $subcategorylist3) {

                                $cat3 = $cat2 . ',' . $subcategorylist3->getName();

                                $categoryData[$subcategorylist3->getId()] = [

                                    'name' => $cat2 . ',' . $subcategorylist3->getName(),

                                    'url' => $subcategorylist2->getUrl()

                                ];

                            }

                        }

                    }

                }

            }

        }

    }

    

    $output = fopen('php://output', 'w');

    fputcsv($output, array('Id', 'Level 1', 'Level 2', 'Level 3', 'Level 4'));

    foreach ($categoryData as $datak => $datav) {

        $catLevel = $datak . ',' . $datav['name'];

        $catLevel = explode(',', $catLevel);

        fputcsv($output, $catLevel);

    }


    fclose($output);

    exit;

}

catch(\Exception $e)

{

    print_r($e->getMessage());

}

function getCategoryData($categoryManagement, $categoryId)

{

    try {

        $getSubCategory = $categoryManagement->getTree($categoryId);

    } catch (Exception $exception) {

        $getSubCategory = null;

    }

    return $getSubCategory;

}

Comments

Popular posts from this blog

Add Admin User name and Action name in Order Comment Section through Action Performed from Sales Order Grid in Magento 2

How to Update Product Stock Programmatically in Magento 2

How to Set and Get Cookie in Magento 2